From d99eafccbf79c7366c83623d24abc9025250339a Mon Sep 17 00:00:00 2001 From: Swrup Date: Thu, 7 Apr 2022 19:04:33 +0200 Subject: [PATCH] better Ev --- src/ev.ml | 33 +++++++++++++++++++++++------- src/ev.mli | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 83 insertions(+), 9 deletions(-) diff --git a/src/ev.ml b/src/ev.ml index 911e749..7823351 100644 --- a/src/ev.ml +++ b/src/ev.ml @@ -1,12 +1,31 @@ -type t = Jv.t +module Make () = struct + type t = Jv.t -module Event = struct - (*type for simple Event *) - type nonrec t = t -end + let type' e = Jv.get e "type" |> Jv.to_string -module Mouse = struct - type nonrec t = t + let target e = Jv.get e "target" |> Brr.Ev.target_of_jv + + let source_target e = Jv.get e "sourceTarget" |> Brr.Ev.target_of_jv + + let propagated_from e = Jv.get e "propagatedFrom" let latlng e = Latlng.of_jv_t @@ Jv.get e "latlng" + + let layer_point e = Jv.get e "layerPoint" + + let container_point e = Jv.get e "containerPoint" + + let original_event e = Jv.get e "originalEvent" + + let message e = Jv.get e "message" |> Jv.to_string + + let code e = Jv.get e "code" |> Jv.to_int end + +module Event = Make () + +module Keyboard = Make () + +module Mouse = Make () + +module Error = Make () diff --git a/src/ev.mli b/src/ev.mli index fffa63d..520b5ff 100644 --- a/src/ev.mli +++ b/src/ev.mli @@ -1,11 +1,66 @@ -type t - module Event : sig type t + + val type' : t -> string + + val target : t -> Brr.Ev.target + + val source_target : t -> Brr.Ev.target + + (* TODO this should return Point *) + val propagated_from : t -> Jv.t +end + +module Keyboard : sig + type t + + val type' : t -> string + + val target : t -> Brr.Ev.target + + val source_target : t -> Brr.Ev.target + + val propagated_from : t -> Jv.t + + (* TODO this should return BrrDomEvent*) + val original_event : t -> Jv.t end module Mouse : sig type t + val type' : t -> string + + val target : t -> Brr.Ev.target + + val source_target : t -> Brr.Ev.target + + val propagated_from : t -> Jv.t + val latlng : t -> Latlng.t + + (* TODO this should return Point *) + val layer_point : t -> Jv.t + + (* TODO this should return Point *) + val container_point : t -> Jv.t + + (* TODO this should return BrrDomEvent*) + val original_event : t -> Jv.t +end + +module Error : sig + type t + + val type' : t -> string + + val target : t -> Brr.Ev.target + + val source_target : t -> Brr.Ev.target + + val propagated_from : t -> Jv.t + + val message : t -> string + + val code : t -> int end