2024-07-30 17:10:48 +01:00
|
|
|
structure Input =
|
|
|
|
|
struct
|
|
|
|
|
type window = MLton.Pointer.t
|
|
|
|
|
|
|
|
|
|
(* Export function to C. *)
|
|
|
|
|
val exportMouseMoveCallback =
|
2024-08-01 21:17:39 +01:00
|
|
|
_export "mltonMouseMoveCallback" public : (Real32.real * Real32.real -> unit) -> unit;
|
2024-07-30 17:10:48 +01:00
|
|
|
|
|
|
|
|
(* Import function to set callback for GLFW. *)
|
|
|
|
|
val setMouseMoveCallback = _import "setMouseMoveCallback" public reentrant : window -> unit;
|
|
|
|
|
|
|
|
|
|
val exportMouseClickCallback =
|
|
|
|
|
_export "mltonMouseClickCallback" public : (int * int -> unit) -> unit;
|
|
|
|
|
val setMouseClickCallback = _import "setMouseClickCallback" public reentrant : window -> unit;
|
|
|
|
|
|
2024-08-01 23:33:54 +01:00
|
|
|
val exportFramebufferSizeCallback =
|
|
|
|
|
_export "mltonFramebufferSizeCallback" public : (int * int -> unit) -> unit;
|
|
|
|
|
val setFramebufferSizeCallback =
|
|
|
|
|
_import "setFramebufferSizeCallback" public reentrant : window -> unit;
|
|
|
|
|
|
2024-07-30 17:10:48 +01:00
|
|
|
(* Constants for mouse input. *)
|
2024-08-08 06:34:40 +01:00
|
|
|
val (PRESS, _) =
|
|
|
|
|
_symbol "PRESS" public : ( unit -> int ) * ( int -> unit );
|
|
|
|
|
val (RELEASE, _) =
|
|
|
|
|
_symbol "RELEASE" public : ( unit -> int ) * ( int -> unit );
|
2024-07-30 17:10:48 +01:00
|
|
|
val (LEFT_MOUSE_BUTTON, _) =
|
|
|
|
|
_symbol "LEFT_MOUSE_BUTTON" public : ( unit -> int ) * ( int -> unit );
|
2024-08-08 06:34:40 +01:00
|
|
|
|
|
|
|
|
(* Key input *)
|
|
|
|
|
val exportKeyCallback =
|
|
|
|
|
_export "mltonKeyCallback" public : (int * int * int * int -> unit) -> unit;
|
|
|
|
|
val setKeyCallback = _import "setKeyCallback" public reentrant : window -> unit;
|
|
|
|
|
|
|
|
|
|
val (KEY_Z, _) =
|
|
|
|
|
_symbol "KEY_Z" public : ( unit -> int ) * ( int -> unit );
|
2024-08-08 23:52:49 +01:00
|
|
|
val (KEY_Y, _) =
|
|
|
|
|
_symbol "KEY_Y" public : ( unit -> int ) * ( int -> unit );
|
2024-07-30 17:10:48 +01:00
|
|
|
end
|