From 894cd50073a4871524e1194e3e7a0fa1532df589 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Tue, 26 Aug 2025 13:00:18 +0100 Subject: [PATCH] restructure a bit to make the GLFW-initialisation code its own separate structure/file, and so we can use shell.sml for running program in different ways --- dotscape | Bin 1119184 -> 1119232 bytes dotscape.mlb | 1 + green.dsc | 4 +-- imperative-shell/init-glfw.sml | 63 +++++++++++++++++++++++++++++++++ imperative-shell/shell.sml | 61 ++----------------------------- 5 files changed, 68 insertions(+), 61 deletions(-) create mode 100644 imperative-shell/init-glfw.sml diff --git a/dotscape b/dotscape index 7b0e1cfe3ad6d4e43e823ea536152cfe61a754b8..74f86acd6dfa266aacb51f9a13272ed8989439f0 100755 GIT binary patch delta 12057 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 diff --git a/dotscape.mlb b/dotscape.mlb index f38ce06..d67cfd6 100644 --- a/dotscape.mlb +++ b/dotscape.mlb @@ -71,5 +71,6 @@ imperative-shell/input-callbacks.sml imperative-shell/update-thread.sml imperative-shell/file-thread.sml imperative-shell/draw-thread.sml +imperative-shell/init-glfw.sml imperative-shell/shell.sml diff --git a/green.dsc b/green.dsc index 89c0772..e16fbe2 100644 --- a/green.dsc +++ b/green.dsc @@ -1,3 +1,3 @@ -50 50 { - [ { 7 26 7 28 0 0 0 1 } { 8 23 8 25 0 0 0 1 } { 8 26 8 28 24 88 176 1 } { 8 28 9 28 24 88 176 1 } { 8 29 11 29 0 0 0 1 } { 8 46 8 50 0 0 0 1 } { 8 49 21 50 0 0 0 1 } { 9 20 9 22 0 0 0 1 } { 9 23 9 25 24 88 176 1 } { 9 26 10 26 120 216 240 1 } { 9 27 9 27 80 160 240 1 } { 9 45 9 45 0 0 0 1 } { 9 46 12 48 32 48 128 1 } { 9 46 13 46 32 48 128 1 } { 9 48 13 48 32 48 128 1 } { 10 17 10 19 0 0 0 1 } { 10 20 10 22 24 88 176 1 } { 10 23 10 27 120 216 240 1 } { 10 28 10 28 80 160 240 1 } { 10 43 10 44 0 0 0 1 } { 10 45 10 48 32 48 128 1 } { 11 15 11 16 0 0 0 1 } { 11 17 11 18 24 88 176 1 } { 11 19 11 19 80 160 240 1 } { 11 20 11 21 120 216 240 1 } { 11 22 11 25 80 160 240 1 } { 11 26 11 28 24 88 176 1 } { 11 40 11 42 0 0 0 1 } { 11 43 14 44 32 48 128 1 } { 11 43 18 43 32 48 128 1 } { 11 45 14 45 0 0 0 1 } { 12 14 12 14 0 0 0 1 } { 12 15 12 16 24 88 176 1 } { 12 17 12 17 80 160 240 1 } { 12 18 12 19 120 216 240 1 } { 12 20 12 21 80 160 240 1 } { 12 22 12 25 24 88 176 1 } { 12 26 12 28 0 0 0 1 } { 12 36 12 39 0 0 0 1 } { 12 40 12 44 32 48 128 1 } { 12 42 13 44 32 48 128 1 } { 13 13 14 13 0 0 0 1 } { 13 14 13 15 24 88 176 1 } { 13 14 14 14 24 88 176 1 } { 13 16 13 16 80 160 240 1 } { 13 17 13 17 120 216 240 1 } { 13 18 13 18 80 160 240 1 } { 13 19 13 22 24 88 176 1 } { 13 23 13 25 0 0 0 1 } { 13 33 13 35 0 0 0 1 } { 13 36 13 40 32 48 128 1 } { 13 36 14 37 32 48 128 1 } { 13 41 14 41 0 64 240 1 } { 13 47 14 47 0 64 240 1 } { 14 15 14 15 80 160 240 1 } { 14 16 14 16 120 216 240 1 } { 14 17 14 17 80 160 240 1 } { 14 18 14 19 24 88 176 1 } { 14 20 14 22 0 0 0 1 } { 14 30 14 32 0 0 0 1 } { 14 33 14 37 32 48 128 1 } { 14 38 14 42 0 64 240 1 } { 14 38 15 40 0 64 240 1 } { 14 42 17 42 0 64 240 1 } { 14 46 14 48 0 64 240 1 } { 14 48 15 48 0 64 240 1 } { 15 12 18 12 0 0 0 1 } { 15 13 16 13 24 88 176 1 } { 15 14 16 14 80 160 240 1 } { 15 15 15 15 120 216 240 1 } { 15 16 15 16 80 160 240 1 } { 15 17 15 18 24 88 176 1 } { 15 19 15 19 0 0 0 1 } { 15 29 15 29 0 0 0 1 } { 15 30 15 31 32 48 128 1 } { 15 32 15 40 0 64 240 1 } { 15 32 16 37 0 64 240 1 } { 15 41 17 41 0 128 248 1 } { 15 44 17 44 0 0 0 1 } { 15 45 15 46 0 64 240 1 } { 15 45 17 45 0 64 240 1 } { 15 47 18 47 0 128 248 1 } { 16 14 16 15 80 160 240 1 } { 16 16 16 17 24 88 176 1 } { 16 18 18 18 0 0 0 1 } { 16 28 18 28 0 0 0 1 } { 16 29 16 30 32 48 128 1 } { 16 29 18 29 32 48 128 1 } { 16 31 16 37 0 64 240 1 } { 16 38 17 41 0 128 248 1 } { 16 46 17 48 0 128 248 1 } { 16 47 18 48 0 128 248 1 } { 16 48 19 48 0 128 248 1 } { 17 13 17 13 32 48 128 1 } { 17 14 17 16 24 88 176 1 } { 17 17 19 17 32 48 128 1 } { 17 25 17 28 0 0 0 1 } { 17 30 17 31 0 64 240 1 } { 17 32 17 41 0 128 248 1 } { 17 34 18 40 0 128 248 1 } { 17 35 19 36 0 128 248 1 } { 18 6 18 10 0 0 0 1 } { 18 13 18 13 0 64 240 1 } { 18 14 18 17 32 48 128 1 } { 18 24 18 24 0 0 0 1 } { 18 25 18 27 24 88 176 1 } { 18 25 19 26 24 88 176 1 } { 18 29 18 31 32 48 128 1 } { 18 32 18 33 0 64 240 1 } { 18 41 18 41 0 64 240 1 } { 18 42 18 44 32 48 128 1 } { 18 45 18 45 0 0 0 1 } { 18 46 18 46 0 64 240 1 } { 19 5 19 5 0 0 0 1 } { 19 11 19 11 0 0 0 1 } { 19 12 19 12 32 48 128 1 } { 19 13 19 13 0 128 248 1 } { 19 14 19 16 0 64 240 1 } { 19 17 19 18 32 48 128 1 } { 19 19 19 23 0 0 0 1 } { 19 24 19 26 24 88 176 1 } { 19 24 20 24 24 88 176 1 } { 19 27 19 28 80 160 240 1 } { 19 29 19 30 0 0 0 1 } { 19 31 19 33 32 48 128 1 } { 19 34 19 34 0 64 240 1 } { 19 37 19 40 0 64 240 1 } { 19 41 19 44 0 0 0 1 } { 19 46 19 46 0 0 0 1 } { 19 47 19 47 0 64 240 1 } { 20 4 20 4 0 0 0 1 } { 20 12 20 12 0 0 0 1 } { 20 13 20 13 0 64 240 1 } { 20 14 20 16 0 128 248 1 } { 20 15 21 16 0 128 248 1 } { 20 17 20 18 0 64 240 1 } { 20 19 20 23 32 48 128 1 } { 20 22 21 23 32 48 128 1 } { 20 25 20 26 80 160 240 1 } { 20 27 20 28 120 216 240 1 } { 20 29 20 29 80 160 240 1 } { 20 30 20 30 24 88 176 1 } { 20 31 20 33 0 0 0 1 } { 20 34 20 34 32 48 128 1 } { 20 35 20 36 0 64 240 1 } { 20 37 20 37 32 48 128 1 } { 20 38 20 40 0 0 0 1 } { 20 47 20 47 0 0 0 1 } { 20 48 20 48 0 64 240 1 } { 21 3 25 3 0 0 0 1 } { 21 13 25 13 0 0 0 1 } { 21 14 21 14 0 64 240 1 } { 21 15 21 18 0 128 248 1 } { 21 16 26 18 0 128 248 1 } { 21 16 27 17 0 128 248 1 } { 21 19 21 21 0 64 240 1 } { 21 24 21 24 80 160 240 1 } { 21 25 21 26 120 216 240 1 } { 21 27 21 28 80 160 240 1 } { 21 29 21 30 0 0 0 1 } { 21 34 21 37 0 0 0 1 } { 21 48 21 50 0 0 0 1 } { 22 14 26 14 32 48 128 1 } { 22 15 26 15 0 64 240 1 } { 22 16 26 21 0 128 248 1 } { 22 22 22 22 0 64 240 1 } { 22 23 22 24 32 48 128 1 } { 22 25 22 26 80 160 240 1 } { 22 27 22 28 0 0 0 1 } { 23 16 25 22 0 128 248 1 } { 23 23 23 23 0 64 240 1 } { 23 24 23 25 32 48 128 1 } { 23 25 25 25 32 48 128 1 } { 23 26 24 26 0 0 0 1 } { 24 16 24 23 0 128 248 1 } { 24 24 24 24 0 64 240 1 } { 25 23 25 23 0 64 240 1 } { 25 24 25 25 32 48 128 1 } { 25 26 26 26 24 88 176 1 } { 25 27 25 27 0 0 0 1 } { 26 4 26 4 0 0 0 1 } { 26 12 26 12 0 0 0 1 } { 26 13 26 14 32 48 128 1 } { 26 22 26 22 0 64 240 1 } { 26 23 26 24 32 48 128 1 } { 26 25 26 27 24 88 176 1 } { 26 28 26 28 0 0 0 1 } { 27 5 27 5 0 0 0 1 } { 27 11 27 11 0 0 0 1 } { 27 12 27 13 32 48 128 1 } { 27 14 27 14 0 64 240 1 } { 27 15 27 17 0 128 248 1 } { 27 15 28 16 0 128 248 1 } { 27 18 27 21 0 64 240 1 } { 27 22 27 23 32 48 128 1 } { 27 24 27 27 80 160 240 1 } { 27 24 29 24 80 160 240 1 } { 27 28 27 28 24 88 176 1 } { 27 29 27 31 0 0 0 1 } { 27 45 27 50 0 0 0 1 } { 27 49 42 50 0 0 0 1 } { 28 6 28 10 0 0 0 1 } { 28 12 35 12 0 0 0 1 } { 28 13 33 13 0 64 240 1 } { 28 14 28 16 0 128 248 1 } { 28 14 29 15 0 128 248 1 } { 28 14 33 14 0 128 248 1 } { 28 17 28 17 0 64 240 1 } { 28 18 28 18 32 48 128 1 } { 28 19 28 23 0 0 0 1 } { 28 23 29 23 0 0 0 1 } { 28 25 28 27 120 216 240 1 } { 28 25 29 26 120 216 240 1 } { 28 28 28 28 80 160 240 1 } { 28 29 28 31 24 88 176 1 } { 28 32 28 35 0 0 0 1 } { 28 44 28 44 0 0 0 1 } { 28 45 28 48 32 48 128 1 } { 28 46 31 48 32 48 128 1 } { 28 47 32 48 32 48 128 1 } { 28 48 33 48 32 48 128 1 } { 29 16 29 16 0 64 240 1 } { 29 17 35 17 32 48 128 1 } { 29 18 35 18 0 0 0 1 } { 29 27 29 27 80 160 240 1 } { 29 28 29 31 0 0 0 1 } { 29 32 29 35 32 48 128 1 } { 29 36 29 43 0 0 0 1 } { 29 44 32 44 32 48 128 1 } { 29 45 32 45 0 0 0 1 } { 30 15 33 15 0 64 240 1 } { 30 16 34 17 32 48 128 1 } { 30 24 30 24 0 0 0 1 } { 30 25 30 26 80 160 240 1 } { 30 27 32 27 0 0 0 1 } { 30 28 30 28 32 48 128 1 } { 30 29 30 35 0 64 240 1 } { 30 36 30 44 32 48 128 1 } { 30 41 31 44 32 48 128 1 } { 30 42 32 44 32 48 128 1 } { 30 43 33 43 32 48 128 1 } { 31 25 31 27 0 0 0 1 } { 31 28 31 28 0 64 240 1 } { 31 29 31 35 0 128 248 1 } { 31 30 32 35 0 128 248 1 } { 31 33 33 35 0 128 248 1 } { 31 36 31 40 0 64 240 1 } { 32 28 32 28 32 48 128 1 } { 32 29 32 29 0 64 240 1 } { 32 30 32 40 0 128 248 1 } { 32 33 33 40 0 128 248 1 } { 32 37 34 40 0 128 248 1 } { 32 41 32 41 0 64 240 1 } { 32 46 33 46 0 64 240 1 } { 33 28 33 28 0 0 0 1 } { 33 29 33 29 32 48 128 1 } { 33 30 33 32 0 64 240 1 } { 33 33 33 41 0 128 248 1 } { 33 42 33 42 0 64 240 1 } { 33 44 33 44 0 0 0 1 } { 33 45 33 47 0 64 240 1 } { 34 13 35 13 32 48 128 1 } { 34 14 34 14 0 64 240 1 } { 34 15 34 17 32 48 128 1 } { 34 29 34 30 0 0 0 1 } { 34 31 34 32 32 48 128 1 } { 34 33 34 36 0 64 240 1 } { 34 41 34 41 0 64 240 1 } { 34 42 35 42 32 48 128 1 } { 34 43 37 43 0 0 0 1 } { 34 44 34 45 0 64 240 1 } { 34 44 37 44 0 64 240 1 } { 34 46 38 46 0 128 248 1 } { 34 47 34 48 0 64 240 1 } { 34 48 35 48 0 64 240 1 } { 35 14 35 16 0 0 0 1 } { 35 31 35 35 0 0 0 1 } { 35 36 35 36 32 48 128 1 } { 35 37 35 40 0 64 240 1 } { 35 41 35 42 32 48 128 1 } { 35 45 37 47 0 128 248 1 } { 36 13 36 13 0 0 0 1 } { 36 14 36 16 32 48 128 1 } { 36 15 37 16 32 48 128 1 } { 36 17 36 17 0 0 0 1 } { 36 36 36 43 0 0 0 1 } { 36 45 37 48 0 128 248 1 } { 36 46 38 48 0 128 248 1 } { 36 47 39 48 0 128 248 1 } { 36 48 40 48 0 128 248 1 } { 37 12 37 12 0 0 0 1 } { 37 13 37 13 32 48 128 1 } { 37 14 37 14 0 64 240 1 } { 37 15 37 17 32 48 128 1 } { 37 16 38 17 32 48 128 1 } { 37 18 37 18 0 0 0 1 } { 38 11 46 11 0 0 0 1 } { 38 12 43 12 32 48 128 1 } { 38 13 42 13 0 64 240 1 } { 38 14 43 14 0 128 248 1 } { 38 15 38 15 0 64 240 1 } { 38 16 38 18 32 48 128 1 } { 38 17 39 18 32 48 128 1 } { 38 18 41 18 32 48 128 1 } { 38 19 46 19 0 0 0 1 } { 38 44 38 44 0 0 0 1 } { 38 45 38 45 0 64 240 1 } { 39 14 43 15 0 128 248 1 } { 39 16 39 16 0 64 240 1 } { 39 45 39 45 0 0 0 1 } { 39 46 39 46 0 64 240 1 } { 40 14 43 16 0 128 248 1 } { 40 17 41 17 0 64 240 1 } { 40 46 40 46 0 0 0 1 } { 40 47 40 47 0 64 240 1 } { 41 47 41 47 0 0 0 1 } { 41 48 41 48 0 64 240 1 } { 42 14 43 17 0 128 248 1 } { 42 18 43 18 0 64 240 1 } { 42 48 42 50 0 0 0 1 } { 43 13 43 17 0 128 248 1 } { 43 13 44 13 0 128 248 1 } { 44 12 44 12 0 64 240 1 } { 44 14 44 16 0 0 0 1 } { 44 17 44 18 0 128 248 1 } { 44 18 46 18 0 128 248 1 } { 45 12 46 12 0 128 248 1 } { 45 13 46 13 0 0 0 1 } { 45 14 45 16 32 48 128 1 } { 45 17 46 17 0 0 0 1 } { 46 14 46 16 24 88 176 1 } { 47 12 47 12 0 0 0 1 } { 47 13 47 13 0 128 248 1 } { 47 14 47 16 0 0 0 1 } { 47 17 47 17 0 128 248 1 } { 47 18 47 18 0 0 0 1 } { 47 43 47 45 24 88 176 1 } { 47 46 47 48 0 128 248 1 } { 48 13 48 13 0 0 0 1 } { 48 14 48 16 0 128 248 1 } { 48 17 48 17 0 0 0 1 } { 48 43 48 45 80 160 240 1 } { 48 46 48 48 0 64 240 1 } { 49 14 49 16 0 0 0 1 } { 49 43 49 45 120 216 240 1 } { 49 46 49 48 32 48 128 1 } ] +28 32 { + [ { 0 25 0 26 0 0 0 1 } { 1 7 1 9 0 0 0 1 } { 1 24 5 24 0 0 0 1 } { 1 25 3 25 184 216 248 1 } { 1 26 1 26 120 152 232 1 } { 1 27 5 27 0 0 0 1 } { 2 6 2 6 0 0 0 1 } { 2 7 2 7 184 216 248 1 } { 2 8 2 8 240 248 248 1 } { 2 9 4 9 184 216 248 1 } { 2 10 2 10 0 0 0 1 } { 2 25 2 26 184 216 248 1 } { 3 5 6 5 0 0 0 1 } { 3 6 3 6 184 216 248 1 } { 3 7 3 7 240 248 248 1 } { 3 8 3 10 184 216 248 1 } { 3 8 4 9 184 216 248 1 } { 3 11 3 16 0 0 0 1 } { 3 11 5 11 0 0 0 1 } { 3 26 3 26 120 152 232 1 } { 4 2 4 5 0 0 0 1 } { 4 6 4 6 240 248 248 1 } { 4 7 4 9 184 216 248 1 } { 4 7 5 8 184 216 248 1 } { 4 7 6 7 184 216 248 1 } { 4 10 4 10 120 152 232 1 } { 4 12 5 16 184 216 248 1 } { 4 14 9 16 184 216 248 1 } { 4 14 10 15 184 216 248 1 } { 4 17 4 18 0 0 0 1 } { 4 25 4 25 120 152 232 1 } { 4 26 5 26 64 96 184 1 } { 5 1 5 1 0 0 0 1 } { 5 2 5 2 120 152 232 1 } { 5 3 5 3 184 216 248 1 } { 5 4 6 4 120 152 232 1 } { 5 6 5 8 184 216 248 1 } { 5 9 5 9 120 152 232 1 } { 5 10 5 10 104 128 216 1 } { 5 12 5 18 184 216 248 1 } { 5 14 6 18 184 216 248 1 } { 5 14 8 17 184 216 248 1 } { 5 19 5 20 0 0 0 1 } { 5 25 5 26 64 96 184 1 } { 6 0 8 0 0 0 0 1 } { 6 1 6 1 120 152 232 1 } { 6 2 6 2 184 216 248 1 } { 6 3 6 4 120 152 232 1 } { 6 5 6 6 0 0 0 1 } { 6 8 6 8 120 152 232 1 } { 6 9 6 9 104 128 216 1 } { 6 10 6 10 0 0 0 1 } { 6 11 6 13 104 128 216 1 } { 6 14 6 19 184 216 248 1 } { 6 20 10 20 240 248 248 1 } { 6 21 6 21 0 0 0 1 } { 6 25 6 26 0 0 0 1 } { 7 1 7 1 184 216 248 1 } { 7 2 7 3 120 152 232 1 } { 7 2 9 2 120 152 232 1 } { 7 4 7 4 0 0 0 1 } { 7 5 19 6 184 216 248 1 } { 7 7 7 9 0 0 0 1 } { 7 10 8 17 184 216 248 1 } { 7 18 7 18 104 128 216 1 } { 7 19 9 21 240 248 248 1 } { 7 22 7 22 0 0 0 1 } { 8 1 8 2 120 152 232 1 } { 8 3 10 3 0 0 0 1 } { 8 4 8 17 184 216 248 1 } { 8 4 13 9 184 216 248 1 } { 8 4 21 4 184 216 248 1 } { 8 18 8 22 240 248 248 1 } { 8 18 9 21 240 248 248 1 } { 8 18 10 20 240 248 248 1 } { 8 23 9 23 0 0 0 1 } { 9 1 9 1 0 0 0 1 } { 9 10 9 13 104 128 216 1 } { 9 17 9 21 240 248 248 1 } { 9 17 10 20 240 248 248 1 } { 9 17 13 17 240 248 248 1 } { 9 22 19 22 184 216 248 1 } { 10 2 10 3 0 0 0 1 } { 10 2 11 2 0 0 0 1 } { 10 4 10 15 184 216 248 1 } { 10 4 11 11 184 216 248 1 } { 10 4 12 10 184 216 248 1 } { 10 16 10 20 240 248 248 1 } { 10 16 11 19 240 248 248 1 } { 10 16 12 18 240 248 248 1 } { 10 21 17 23 184 216 248 1 } { 10 24 11 24 0 0 0 1 } { 11 3 11 11 184 216 248 1 } { 11 3 12 10 184 216 248 1 } { 11 3 19 6 184 216 248 1 } { 11 3 20 5 184 216 248 1 } { 11 12 11 14 0 0 0 1 } { 11 15 11 19 240 248 248 1 } { 11 20 17 23 184 216 248 1 } { 12 1 18 1 0 0 0 1 } { 12 2 12 10 184 216 248 1 } { 12 2 13 9 184 216 248 1 } { 12 2 17 8 184 216 248 1 } { 12 2 18 7 184 216 248 1 } { 12 11 12 11 0 0 0 1 } { 12 15 12 15 0 0 0 1 } { 12 19 16 24 184 216 248 1 } { 12 25 18 25 0 0 0 1 } { 13 10 13 10 0 0 0 1 } { 13 16 13 16 0 0 0 1 } { 13 18 16 24 184 216 248 1 } { 13 18 17 23 184 216 248 1 } { 13 18 19 22 184 216 248 1 } { 14 9 16 9 0 0 0 1 } { 14 17 16 17 0 0 0 1 } { 17 9 21 9 240 248 248 1 } { 17 10 17 10 0 0 0 1 } { 17 16 17 16 0 0 0 1 } { 17 17 17 23 184 216 248 1 } { 17 17 19 22 184 216 248 1 } { 17 24 17 24 120 152 232 1 } { 17 29 17 30 0 0 0 1 } { 18 8 20 10 240 248 248 1 } { 18 11 18 11 0 0 0 1 } { 18 15 18 15 0 0 0 1 } { 18 16 19 22 184 216 248 1 } { 18 16 21 21 184 216 248 1 } { 18 23 19 23 120 152 232 1 } { 18 24 18 24 104 128 216 1 } { 18 28 22 28 0 0 0 1 } { 18 29 20 29 240 248 248 1 } { 18 30 18 30 184 216 248 1 } { 18 31 22 32 0 0 0 1 } { 19 2 20 2 0 0 0 1 } { 19 7 19 11 240 248 248 1 } { 19 7 20 10 240 248 248 1 } { 19 12 19 14 0 0 0 1 } { 19 15 19 22 184 216 248 1 } { 19 15 21 21 184 216 248 1 } { 19 24 20 24 0 0 0 1 } { 19 29 19 30 240 248 248 1 } { 20 6 20 10 240 248 248 1 } { 20 6 21 9 240 248 248 1 } { 20 6 22 8 240 248 248 1 } { 20 6 24 6 240 248 248 1 } { 20 11 21 21 184 216 248 1 } { 20 11 22 20 184 216 248 1 } { 20 11 24 17 184 216 248 1 } { 20 22 21 22 120 152 232 1 } { 20 23 20 23 104 128 216 1 } { 20 30 20 30 184 216 248 1 } { 21 3 22 3 0 0 0 1 } { 21 5 21 9 240 248 248 1 } { 21 5 22 8 240 248 248 1 } { 21 5 23 7 240 248 248 1 } { 21 10 21 21 184 216 248 1 } { 21 10 22 20 184 216 248 1 } { 21 10 26 13 184 216 248 1 } { 21 23 22 23 0 0 0 1 } { 21 29 21 29 184 216 248 1 } { 21 30 22 30 120 152 232 1 } { 22 4 22 8 240 248 248 1 } { 22 9 22 20 184 216 248 1 } { 22 9 23 19 184 216 248 1 } { 22 9 24 17 184 216 248 1 } { 22 21 22 21 120 152 232 1 } { 22 22 22 22 104 128 216 1 } { 22 29 22 30 120 152 232 1 } { 23 4 23 4 0 0 0 1 } { 23 8 23 19 184 216 248 1 } { 23 8 24 17 184 216 248 1 } { 23 8 25 15 184 216 248 1 } { 23 20 23 20 120 152 232 1 } { 23 21 23 21 104 128 216 1 } { 23 22 23 22 0 0 0 1 } { 23 29 23 30 0 0 0 1 } { 24 5 24 5 0 0 0 1 } { 24 7 24 17 184 216 248 1 } { 24 18 24 19 120 152 232 1 } { 24 20 24 20 104 128 216 1 } { 24 21 24 21 0 0 0 1 } { 25 6 25 7 0 0 0 1 } { 25 16 25 17 120 152 232 1 } { 25 18 25 18 104 128 216 1 } { 25 19 25 20 0 0 0 1 } { 26 8 26 9 0 0 0 1 } { 26 14 26 15 120 152 232 1 } { 26 16 26 16 104 128 216 1 } { 26 17 26 18 0 0 0 1 } { 27 10 27 16 0 0 0 1 } ] } diff --git a/imperative-shell/init-glfw.sml b/imperative-shell/init-glfw.sml new file mode 100644 index 0000000..3d0b27f --- /dev/null +++ b/imperative-shell/init-glfw.sml @@ -0,0 +1,63 @@ +structure InitGlfw = +struct + open CML + + fun init () = + 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 (), 0) + val window = + Glfw.createWindow + (Constants.windowWidth, Constants.windowHeight, "Dotscape") + val _ = Glfw.makeContextCurrent window + val _ = Gles3.loadGlad () + + val initialModel = AppInit.fromWindowWidthAndHeight + ( Constants.windowWidth + , Constants.windowHeight + , Constants.initialWidthClickPoints + , Constants.initialHeightClickPoints + ) + + val graphLines = GraphLines.generate initialModel + val graphDrawObject = AppDraw.initGraphLines () + val _ = AppDraw.uploadGraphLines (graphDrawObject, graphLines) + + val dotDrawObject = AppDraw.initDot () + val squareDrawObject = AppDraw.initSquares () + + val modalTextDrawObject = AppDraw.initModalText () + + val inputMailbox = Mailbox.mailbox () + val drawMailbox = Mailbox.mailbox () + val fileMailbox = Mailbox.mailbox () + + val _ = InputCallbacks.registerCallbacks (window, inputMailbox) + + val _ = CML.spawn (fn () => + UpdateThread.run (inputMailbox, drawMailbox, fileMailbox, initialModel)) + + val _ = CML.spawn (fn () => + DrawThread.run + ( drawMailbox + , window + , graphDrawObject + , Vector.length graphLines div 2 + , dotDrawObject + , 0 + , squareDrawObject + , 0 + , modalTextDrawObject + , 0 + )) + + val _ = CML.spawn (fn () => FileThread.run (fileMailbox, inputMailbox)) + in + () + end + + fun main () = RunCML.doit (init, NONE) +end diff --git a/imperative-shell/shell.sml b/imperative-shell/shell.sml index a261f96..1ed32c9 100644 --- a/imperative-shell/shell.sml +++ b/imperative-shell/shell.sml @@ -1,63 +1,6 @@ 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 (), 0) - val window = - Glfw.createWindow - (Constants.windowWidth, Constants.windowHeight, "Dotscape") - val _ = Glfw.makeContextCurrent window - val _ = Gles3.loadGlad () - - val initialModel = AppInit.fromWindowWidthAndHeight - ( Constants.windowWidth - , Constants.windowHeight - , Constants.initialWidthClickPoints - , Constants.initialHeightClickPoints - ) - - val graphLines = GraphLines.generate initialModel - val graphDrawObject = AppDraw.initGraphLines () - val _ = AppDraw.uploadGraphLines (graphDrawObject, graphLines) - - val dotDrawObject = AppDraw.initDot () - val squareDrawObject = AppDraw.initSquares () - - val modalTextDrawObject = AppDraw.initModalText () - - val inputMailbox = Mailbox.mailbox () - val drawMailbox = Mailbox.mailbox () - val fileMailbox = Mailbox.mailbox () - - val _ = InputCallbacks.registerCallbacks (window, inputMailbox) - - val _ = CML.spawn (fn () => - UpdateThread.run (inputMailbox, drawMailbox, fileMailbox, initialModel)) - - val _ = CML.spawn (fn () => - DrawThread.run - ( drawMailbox - , window - , graphDrawObject - , Vector.length graphLines div 2 - , dotDrawObject - , 0 - , squareDrawObject - , 0 - , modalTextDrawObject - , 0 - )) - - val _ = CML.spawn (fn () => FileThread.run (fileMailbox, inputMailbox)) - in - () - end + fun main () = InitGlfw.main () end -val _ = RunCML.doit (Shell.main, NONE) +val _ = Shell.main ()