Files
sml-projects/imperative-shell/shell.sml
2024-08-01 20:52:20 +01:00

44 lines
1.2 KiB
Standard ML

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
(Constants.windowWidth, Constants.windowHeight, "Dotscape")
val _ = Glfw.makeContextCurrent window
val _ = Gles3.loadGlad ()
val graphDrawObject = AppDraw.initGraphLines ()
val buttonDrawObject = AppDraw.initButton ()
val triangleDrawObject = AppDraw.initTriangles ()
val inputMailbox = Mailbox.mailbox ()
val drawMailbox = Mailbox.mailbox ()
val _ = CML.spawn (fn () =>
InputCallbacks.registerCallbacks (window, inputMailbox))
val _ = CML.spawn (fn () => EventLoop.update (inputMailbox, drawMailbox))
val _ = CML.spawn (fn () =>
EventLoop.draw
( drawMailbox
, window
, graphDrawObject
, buttonDrawObject
, 0
, triangleDrawObject
, 0
))
in
()
end
end
val _ = RunCML.doit (Shell.main, NONE)