a little refactoring
This commit is contained in:
BIN
dot-to-dot
BIN
dot-to-dot
Binary file not shown.
@@ -27,9 +27,5 @@ in
|
|||||||
end
|
end
|
||||||
|
|
||||||
imperative-shell/input-callbacks.sml
|
imperative-shell/input-callbacks.sml
|
||||||
|
imperative-shell/event-loop.sml
|
||||||
ann
|
|
||||||
"allowVectorExps true"
|
|
||||||
in
|
|
||||||
imperative-shell/shell.sml
|
imperative-shell/shell.sml
|
||||||
end
|
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ struct
|
|||||||
()
|
()
|
||||||
end
|
end
|
||||||
|
|
||||||
fun drawButton (buttonDrawObject: draw_object, vec) =
|
fun drawButton (buttonDrawObject: draw_object, buttonDrawLength) =
|
||||||
let
|
let
|
||||||
val {vertexBuffer, program, ...} = buttonDrawObject
|
val {vertexBuffer, program, ...} = buttonDrawObject
|
||||||
val _ = Gles3.bindBuffer vertexBuffer
|
val _ = Gles3.bindBuffer vertexBuffer
|
||||||
@@ -102,7 +102,7 @@ struct
|
|||||||
val _ = Gles3.vertexAttribPointer (1, 3, 5, 8)
|
val _ = Gles3.vertexAttribPointer (1, 3, 5, 8)
|
||||||
val _ = Gles3.enableVertexAttribArray 1
|
val _ = Gles3.enableVertexAttribArray 1
|
||||||
val _ = Gles3.useProgram program
|
val _ = Gles3.useProgram program
|
||||||
val _ = Gles3.drawArrays (Gles3.TRIANGLES (), 0, Vector.length vec div 5)
|
val _ = Gles3.drawArrays (Gles3.TRIANGLES (), 0, buttonDrawLength)
|
||||||
in
|
in
|
||||||
()
|
()
|
||||||
end
|
end
|
||||||
|
|||||||
35
imperative-shell/event-loop.sml
Normal file
35
imperative-shell/event-loop.sml
Normal 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
|
||||||
@@ -2,37 +2,6 @@ structure Shell =
|
|||||||
struct
|
struct
|
||||||
open CML
|
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 () =
|
fun main () =
|
||||||
let
|
let
|
||||||
(* Set up GLFW. *)
|
(* Set up GLFW. *)
|
||||||
@@ -63,9 +32,9 @@ struct
|
|||||||
()
|
()
|
||||||
end)
|
end)
|
||||||
(* Set callback listener *)
|
(* Set callback listener *)
|
||||||
val _ = CML.spawn (fn () => callbackListener inputMailbox)
|
val _ = CML.spawn (fn () => EventLoop.update inputMailbox)
|
||||||
in
|
in
|
||||||
loop (window, graphDrawObject, buttonDrawObject)
|
EventLoop.draw (window, graphDrawObject, buttonDrawObject, 0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user