From 1049f2b5613f1ccf215aa36501be1eeb24ee4d5d Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Sat, 17 Aug 2024 09:46:53 +0100 Subject: [PATCH] scaffolding in preparation for adding simple load/export/save functionality --- dotscape | Bin 908440 -> 908552 bytes ffi/glfw-input.c | 4 ++++ ffi/glfw-input.sml | 7 +++++++ message-types/io-msg.sml | 15 +++++++++++++++ 4 files changed, 26 insertions(+) create mode 100644 message-types/io-msg.sml diff --git a/dotscape b/dotscape index adab6f89d95d31e817a8e4c5533f37abb31fc989..4e50357912af98800f27e019f3b71a1147d98b4f 100755 GIT binary patch delta 48111 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 diff --git a/ffi/glfw-input.c b/ffi/glfw-input.c index 756094c..4a14df1 100644 --- a/ffi/glfw-input.c +++ b/ffi/glfw-input.c @@ -9,6 +9,10 @@ int KEY_G = GLFW_KEY_G; int KEY_Y = GLFW_KEY_Y; int KEY_Z = GLFW_KEY_Z; +int KEY_S = GLFW_KEY_S; +int KEY_E = GLFW_KEY_E; +int KEY_I = GLFW_KEY_I; + // Calls function exported from SML void mouseMoveCallback(GLFWwindow *window, double xpos, double ypos) { mltonMouseMoveCallback((float)xpos, (float)ypos); diff --git a/ffi/glfw-input.sml b/ffi/glfw-input.sml index ab59740..a5e0827 100644 --- a/ffi/glfw-input.sml +++ b/ffi/glfw-input.sml @@ -37,4 +37,11 @@ struct _symbol "KEY_Y" public : ( unit -> int ) * ( int -> unit ); val (KEY_Z, _) = _symbol "KEY_Z" public : ( unit -> int ) * ( int -> unit ); + + val (KEY_S, _) = + _symbol "KEY_S" public : ( unit -> int ) * ( int -> unit ); + val (KEY_E, _) = + _symbol "KEY_E" public : ( unit -> int ) * ( int -> unit ); + val (KEY_I, _) = + _symbol "KEY_I" public : ( unit -> int ) * ( int -> unit ); end diff --git a/message-types/io-msg.sml b/message-types/io-msg.sml new file mode 100644 index 0000000..5d27022 --- /dev/null +++ b/message-types/io-msg.sml @@ -0,0 +1,15 @@ +signature IO_MESSAGE = +sig + datatype t = + SAVE_TRIANGLES of AppType.triangle list + | EXPORT_FILE of AppType.triangle list + | IMPORT_FILE +end + +structure IoMessage :> IO_MESSAGE = +struct + datatype t = + SAVE_TRIANGLES of AppType.triangle list + | EXPORT_FILE of AppType.triangle list + | IMPORT_FILE +end