another barely working text rendering scheme
This commit is contained in:
53
boot_js.ml
53
boot_js.ml
@ -60,8 +60,10 @@ let request_animation_frame () =
|
|||||||
in
|
in
|
||||||
t
|
t
|
||||||
|
|
||||||
let request_render canvas webgl_ctx vg
|
let render_stream canvas webgl_ctx vg
|
||||||
(render : NVG.t -> ?time:float -> Gg.p2 -> Gg.p2 Lwt.t) =
|
(render : NVG.t -> ?time:float -> Gg.p2 -> Human.I.t -> unit) :
|
||||||
|
Human.I.t Lwt_stream.t -> unit Lwt.t =
|
||||||
|
Lwt_stream.iter_n (fun i ->
|
||||||
request_animation_frame () >>= fun time ->
|
request_animation_frame () >>= fun time ->
|
||||||
webgl_ctx##clear
|
webgl_ctx##clear
|
||||||
(webgl_ctx##._COLOR_BUFFER_BIT_
|
(webgl_ctx##._COLOR_BUFFER_BIT_
|
||||||
@ -71,10 +73,11 @@ let request_render canvas webgl_ctx vg
|
|||||||
NVG.begin_frame vg ~width:canvas##.width ~height:canvas##.height
|
NVG.begin_frame vg ~width:canvas##.width ~height:canvas##.height
|
||||||
~device_ratio;
|
~device_ratio;
|
||||||
NVG.Transform.scale vg ~x:device_ratio ~y:device_ratio;
|
NVG.Transform.scale vg ~x:device_ratio ~y:device_ratio;
|
||||||
render vg ~time Gg.P2.o >>= fun _p ->
|
render vg ~time Gg.P2.o i;
|
||||||
(* Logs.debug (fun m -> m "Drawing finished at point: %a" Gg.V2.pp p); *)
|
|
||||||
NVG.end_frame vg;
|
NVG.end_frame vg;
|
||||||
Lwt.return_unit
|
Lwt.return_unit)
|
||||||
|
|
||||||
|
open Human
|
||||||
|
|
||||||
let _ =
|
let _ =
|
||||||
let canvas =
|
let canvas =
|
||||||
@ -83,24 +86,28 @@ let _ =
|
|||||||
let webgl_ctx = webgl_initialize canvas in
|
let webgl_ctx = webgl_initialize canvas in
|
||||||
let vg = graphv_initialize webgl_ctx in
|
let vg = graphv_initialize webgl_ctx in
|
||||||
let open Js_of_ocaml_lwt.Lwt_js_events in
|
let open Js_of_ocaml_lwt.Lwt_js_events in
|
||||||
let page_var = Lwd.var Human.Panel.Ui.empty in
|
let root =
|
||||||
|
Lwd_utils.pack Nottui.Ui.pack_x
|
||||||
|
[ Lwd.pure @@ Nottui_widgets.string "hello daddy" ]
|
||||||
|
in
|
||||||
|
|
||||||
|
let events, push_event = Lwt_stream.create () in
|
||||||
|
let images =
|
||||||
|
Human.Nottui_lwt.render vg
|
||||||
|
~size:(Gg.P2.v canvas##.width canvas##.height)
|
||||||
|
events root
|
||||||
|
in
|
||||||
async (fun () ->
|
async (fun () ->
|
||||||
Human.Panel.Ui.boot_page >>= fun page ->
|
render_stream canvas webgl_ctx vg
|
||||||
Lwd.set page_var page;
|
(fun vg ?(time = 0.) p i ->
|
||||||
let render = Human.Panel.Ui.renderer page_var in
|
Log.debug (fun m ->
|
||||||
request_render canvas webgl_ctx vg render >>= fun () ->
|
m "Drawing image: p=%a n=%a" Gg.V2.pp p I.Draw.pp i);
|
||||||
buffered_loop
|
|
||||||
(make_event Dom_html.Event.keydown)
|
|
||||||
Dom_html.document
|
|
||||||
Human.(
|
|
||||||
fun ev _ ->
|
|
||||||
Lwd.set page_var
|
|
||||||
(Panel.Ui.handle_event (Lwd.peek page_var)
|
|
||||||
(Event_js.evt_of_jskey `Press ev));
|
|
||||||
request_render canvas webgl_ctx vg render))
|
|
||||||
|
|
||||||
(* Dom_html.document##.onkeydown
|
let p' = I.Draw.node vg A.dark p i in
|
||||||
:= Dom.handler (fun (evt : Dom_html.keyboardEvent Js.t) ->
|
Logs.debug (fun m ->
|
||||||
render (Human.Event_js.evt_of_jskey `Press evt) ;
|
m "Drawing finished: p'=%a" Gg.V2.pp p'))
|
||||||
Js._false ) *)
|
images);
|
||||||
|
buffered_loop (make_event Dom_html.Event.keydown) Dom_html.document
|
||||||
|
(fun ev _ ->
|
||||||
|
Lwt.return
|
||||||
|
@@ push_event (Some (`Key (Event_js.evt_of_jskey ev))))
|
||||||
|
|||||||
Reference in New Issue
Block a user