scaffolding for char callback
This commit is contained in:
@@ -158,6 +158,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
MLLIB_PUBLIC(void mltonFramebufferSizeCallback (Int32 x0, Int32 x1);)
|
MLLIB_PUBLIC(void mltonFramebufferSizeCallback (Int32 x0, Int32 x1);)
|
||||||
|
MLLIB_PUBLIC(void mltonCharCallback (Word32 x0);)
|
||||||
|
|
||||||
#undef MLLIB_PRIVATE
|
#undef MLLIB_PRIVATE
|
||||||
#undef MLLIB_PUBLIC
|
#undef MLLIB_PUBLIC
|
||||||
|
|||||||
@@ -16,3 +16,11 @@ void setFramebufferSizeCallback(GLFWwindow* window) {
|
|||||||
glfwSetFramebufferSizeCallback(window, framebufferSizeCallback);
|
glfwSetFramebufferSizeCallback(window, framebufferSizeCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void charCallback(GLFWwindow* window, unsigned int codepoint) {
|
||||||
|
mltonCharCallback(codepoint);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setCharCallback(GLFWwindow* window) {
|
||||||
|
glfwSetCharCallback(window, charCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,4 +19,9 @@ struct
|
|||||||
_export "mltonFramebufferSizeCallback" public : (int * int -> unit) -> unit;
|
_export "mltonFramebufferSizeCallback" public : (int * int -> unit) -> unit;
|
||||||
val setFramebufferSizeCallback =
|
val setFramebufferSizeCallback =
|
||||||
_import "setFramebufferSizeCallback" public : window -> unit;
|
_import "setFramebufferSizeCallback" public : window -> unit;
|
||||||
|
|
||||||
|
val exportCharCallback =
|
||||||
|
_export "mltonCharCallback" public : (Word32.word -> unit) -> unit;
|
||||||
|
val setCharCallback =
|
||||||
|
_import "setCharCallback" public : window -> unit;
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,11 +6,23 @@ struct
|
|||||||
fun frameBufferSizeCallback inputMailbox (width, height) =
|
fun frameBufferSizeCallback inputMailbox (width, height) =
|
||||||
Mailbox.send (inputMailbox, RESIZE_EVENT (width, height))
|
Mailbox.send (inputMailbox, RESIZE_EVENT (width, height))
|
||||||
|
|
||||||
|
fun charCallback word =
|
||||||
|
let
|
||||||
|
val word = Word32.toInt word
|
||||||
|
val chr = Char.chr word
|
||||||
|
val s = Char.toString chr ^ "\n"
|
||||||
|
in
|
||||||
|
print s
|
||||||
|
end
|
||||||
|
|
||||||
fun registerCallbacks (inputMailbox, window) =
|
fun registerCallbacks (inputMailbox, window) =
|
||||||
let
|
let
|
||||||
val resizeCallback = frameBufferSizeCallback inputMailbox
|
val resizeCallback = frameBufferSizeCallback inputMailbox
|
||||||
val () = Input.exportFramebufferSizeCallback resizeCallback
|
val () = Input.exportFramebufferSizeCallback resizeCallback
|
||||||
val () = Input.setFramebufferSizeCallback window
|
val () = Input.setFramebufferSizeCallback window
|
||||||
|
|
||||||
|
val () = Input.exportCharCallback charCallback
|
||||||
|
val () = Input.setCharCallback window
|
||||||
in
|
in
|
||||||
()
|
()
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user