a little refactoring

This commit is contained in:
2024-07-31 10:03:30 +01:00
parent 6edb4f2556
commit 94611eceee
5 changed files with 41 additions and 41 deletions

Binary file not shown.

View File

@@ -27,9 +27,5 @@ in
end
imperative-shell/input-callbacks.sml
ann
"allowVectorExps true"
in
imperative-shell/shell.sml
end
imperative-shell/event-loop.sml
imperative-shell/shell.sml

View File

@@ -93,7 +93,7 @@ struct
()
end
fun drawButton (buttonDrawObject: draw_object, vec) =
fun drawButton (buttonDrawObject: draw_object, buttonDrawLength) =
let
val {vertexBuffer, program, ...} = buttonDrawObject
val _ = Gles3.bindBuffer vertexBuffer
@@ -102,7 +102,7 @@ struct
val _ = Gles3.vertexAttribPointer (1, 3, 5, 8)
val _ = Gles3.enableVertexAttribArray 1
val _ = Gles3.useProgram program
val _ = Gles3.drawArrays (Gles3.TRIANGLES (), 0, Vector.length vec div 5)
val _ = Gles3.drawArrays (Gles3.TRIANGLES (), 0, buttonDrawLength)
in
()
end

View File

@@ -0,0 +1,35 @@
structure EventLoop =
struct
open CML
open InputMessage
fun update inputMailbox =
let
val _ =
case Mailbox.recv inputMailbox of
MOUSE_MOVE {x, y} =>
print (String.concat
["x pos: ", Int.toString x, ", y pos: ", Int.toString y, "\n"])
| MOUSE_LEFT_CLICK => print "clicked mouse\n"
| MOUSE_LEFT_RELEASE => print "released mouse\n"
in
update inputMailbox
end
fun draw (window, graphDrawObject, buttonDrawObject, buttonDrawLength) =
if not (Glfw.windowShouldClose window) then
let
val _ = Gles3.clearColor (1.0, 1.0, 1.0, 1.0)
val _ = Gles3.clear ()
val _ = AppDraw.drawGraphLines graphDrawObject
val _ = AppDraw.drawButton (buttonDrawObject, buttonDrawLength)
val _ = Glfw.pollEvents ()
val _ = Glfw.swapBuffers window
in
draw (window, graphDrawObject, buttonDrawObject, buttonDrawLength)
end
else
Glfw.terminate ()
end

View File

@@ -2,37 +2,6 @@ structure Shell =
struct
open CML
fun callbackListener mailbox =
let
open InputMessage
val _ =
case Mailbox.recv mailbox of
MOUSE_MOVE {x, y} =>
print (String.concat
["x pos: ", Int.toString x, ", y pos: ", Int.toString y, "\n"])
| MOUSE_LEFT_CLICK => print "clicked mouse\n"
| MOUSE_LEFT_RELEASE => print "released mouse\n"
in
callbackListener mailbox
end
fun loop (window, graphDrawObject, buttonDrawObject) =
if not (Glfw.windowShouldClose window) then
let
val _ = Gles3.clearColor (1.0, 1.0, 1.0, 1.0)
val _ = Gles3.clear ()
val _ = AppDraw.drawGraphLines graphDrawObject
val _ = AppDraw.drawButton (buttonDrawObject, #[])
val _ = Glfw.pollEvents ()
val _ = Glfw.swapBuffers window
in
loop (window, graphDrawObject, buttonDrawObject)
end
else
Glfw.terminate ()
fun main () =
let
(* Set up GLFW. *)
@@ -63,9 +32,9 @@ struct
()
end)
(* Set callback listener *)
val _ = CML.spawn (fn () => callbackListener inputMailbox)
val _ = CML.spawn (fn () => EventLoop.update inputMailbox)
in
loop (window, graphDrawObject, buttonDrawObject)
EventLoop.draw (window, graphDrawObject, buttonDrawObject, 0)
end
end