Files
sml-projects/imperative-shell/shell.sml

42 lines
1.3 KiB
Standard ML
Raw Normal View History

2024-07-28 14:22:17 +01:00
structure Shell =
struct
open CML
fun main () =
let
(* Set up GLFW. *)
val _ = Glfw.init ()
val _ = Glfw.windowHint (Glfw.CONTEXT_VERSION_MAJOR (), 3)
val _ = Glfw.windowHint (Glfw.DEPRECATED (), Glfw.FALSE ())
val _ = Glfw.windowHint (Glfw.SAMPLES (), 4)
val window = Glfw.createWindow (500, 500, "MLton - box x box")
val _ = Glfw.makeContextCurrent window
val _ = Gles3.loadGlad ()
val graphDrawObject = AppDraw.initGraphLines ()
val buttonDrawObject = AppDraw.initButton ()
2024-07-28 14:22:17 +01:00
val inputMailbox = Mailbox.mailbox ()
(* Set callback sender *)
val _ = CML.spawn (fn () =>
let
val mouseMoveCallback = InputCallbacks.mouseMoveCallback inputMailbox
val _ = Input.exportMouseMoveCallback mouseMoveCallback
val _ = Input.setMouseMoveCallback window
val mouseClickCallback =
InputCallbacks.mouseClickCallback inputMailbox
val _ = Input.exportMouseClickCallback mouseClickCallback
val _ = Input.setMouseClickCallback window
2024-07-28 14:22:17 +01:00
in
()
end)
(* Set callback listener *)
2024-07-31 10:03:30 +01:00
val _ = CML.spawn (fn () => EventLoop.update inputMailbox)
2024-07-28 14:22:17 +01:00
in
2024-07-31 10:03:30 +01:00
EventLoop.draw (window, graphDrawObject, buttonDrawObject, 0)
2024-07-28 14:22:17 +01:00
end
end
val _ = RunCML.doit (Shell.main, NONE)