From e587c6cf739a41e28144b9532f36714d5056a3c7 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Wed, 28 Aug 2024 20:11:00 +0100 Subject: [PATCH] preparation for adding new additional threads/mailboxes (namely, the file mailbox) --- dotscape | Bin 975096 -> 975096 bytes dotscape.mlb | 2 + functional-core/app-update.sml | 38 +++++++++---------- imperative-shell/draw-thread.sml | 13 +------ imperative-shell/update-thread.sml | 42 ++++++++++++++------- message-types/draw-msg.sml | 2 - message-types/{io-msg.sml => file-msg.sml} | 4 +- message-types/update-msg.sml | 7 ++++ 8 files changed, 59 insertions(+), 49 deletions(-) rename message-types/{io-msg.sml => file-msg.sml} (79%) create mode 100644 message-types/update-msg.sml diff --git a/dotscape b/dotscape index ef0bc3d6348f4a22c5e3761121afec5d6e807316..22f50f8ad0b96592924a42309ed92155f258421f 100755 GIT binary patch delta 78821 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 O>9N~=U8jA4?f(H$nic5) delta 78853 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 diff --git a/dotscape.mlb b/dotscape.mlb index 43b2e0a..85cd649 100644 --- a/dotscape.mlb +++ b/dotscape.mlb @@ -18,7 +18,9 @@ functional-core/app-init.sml functional-core/app-with.sml message-types/input-msg.sml +message-types/file-msg.sml message-types/draw-msg.sml +message-types/update-msg.sml functional-core/app-update.sml diff --git a/functional-core/app-update.sml b/functional-core/app-update.sml index c594538..edb03b7 100644 --- a/functional-core/app-update.sml +++ b/functional-core/app-update.sml @@ -1,14 +1,16 @@ signature APP_UPDATE = sig val update: AppType.app_type * InputMessage.t - -> AppType.app_type * DrawMessage.t + -> AppType.app_type * UpdateMessage.t end structure AppUpdate :> APP_UPDATE = struct open AppType + open DrawMessage open InputMessage + open UpdateMessage fun mouseMoveOrRelease (model: app_type) = let @@ -16,7 +18,7 @@ struct val drawVec = TriangleStage.toVector (model, drawVec) val drawMsg = DRAW_DOT drawVec in - (model, drawMsg) + (model, DRAW drawMsg) end fun mouseLeftClick (model: app_type) = @@ -36,7 +38,7 @@ struct val model = AppWith.addTriangleStage (model, newTriangleStage, newUndoTuple) in - (model, drawMsg) + (model, DRAW drawMsg) end | FIRST {x1, y1} => let @@ -48,7 +50,7 @@ struct val model = AppWith.addTriangleStage (model, newTriangleStage, newUndoTuple) in - (model, drawMsg) + (model, DRAW drawMsg) end | SECOND {x1, y1, x2, y2} => let @@ -58,10 +60,10 @@ struct val drawVec = Triangles.toVector model val drawMsg = DRAW_TRIANGLES_AND_RESET_DOTS drawVec in - (model, drawMsg) + (model, DRAW drawMsg) end else - (model, NO_DRAW) + (model, NO_MAILBOX) end fun resizeWindow (model, width, height) = @@ -79,7 +81,7 @@ struct RESIZE_TRIANGLES_DOTS_AND_GRAPH {triangles = triangles, graphLines = graphLines, dots = dots} in - (model, drawMsg) + (model, DRAW drawMsg) end fun undoAction model = @@ -90,7 +92,7 @@ struct val model = AppWith.undo (model, NO_TRIANGLE, #triangles model, (x1, y1)) in - (model, CLEAR_DOTS) + (model, DRAW CLEAR_DOTS) end | SECOND {x1, y1, x2, y2} => (* Change FIRST to SECOND and redraw dots. *) @@ -103,7 +105,7 @@ struct val drawVec = TriangleStage.firstToVector (x1, y1, emptyVec, model) val drawMsg = DRAW_DOT drawVec in - (model, drawMsg) + (model, DRAW drawMsg) end | NO_TRIANGLE => (case #triangles model of @@ -124,11 +126,11 @@ struct DRAW_TRIANGLES_AND_DOTS {triangles = newTriangleVec, dots = drawVec} in - (model, drawMsg) + (model, DRAW drawMsg) end | [] => (* Can't undo, because there are no actions to undo. *) - (model, NO_DRAW)) + (model, NO_MAILBOX)) fun redoAction model = case #redo model of @@ -147,7 +149,7 @@ struct val drawVec = TriangleStage.firstToVector (x, y, emptyVec, model) val drawMsg = DRAW_DOT drawVec in - (model, drawMsg) + (model, DRAW drawMsg) end | FIRST {x1, y1} => (* add to triangle stage, redraw dots *) @@ -162,7 +164,7 @@ struct (x1, y1, x, y, emptyVec, model) val drawMsg = DRAW_DOT drawVec in - (model, drawMsg) + (model, DRAW drawMsg) end | SECOND {x1, y1, x2, y2} => (* clear triangle stage, add to trinagle list and redraw triangles *) @@ -177,11 +179,9 @@ struct val drawVec = Triangles.toVector model val drawMsg = DRAW_TRIANGLES_AND_RESET_DOTS drawVec in - (model, drawMsg) + (model, DRAW drawMsg) end) - | [] => - (* Nothing to redo. *) - (model, NO_DRAW) + | [] => (* Nothing to redo. *) (model, NO_MAILBOX) fun toggleGraph (model: app_type) = if #showGraph model then @@ -189,7 +189,7 @@ struct val model = AppWith.graphVisibility (model, false) val drawMsg = DRAW_GRAPH (Vector.fromList []) in - (model, drawMsg) + (model, DRAW drawMsg) end else let @@ -197,7 +197,7 @@ struct val graphLines = GraphLines.generate model val drawMsg = DRAW_GRAPH graphLines in - (model, drawMsg) + (model, DRAW drawMsg) end fun update (model: app_type, inputMsg) = diff --git a/imperative-shell/draw-thread.sml b/imperative-shell/draw-thread.sml index 7a04a2f..caebf41 100644 --- a/imperative-shell/draw-thread.sml +++ b/imperative-shell/draw-thread.sml @@ -150,18 +150,7 @@ struct , triangleDrawObject , triangleDrawLength ) - end - | NO_DRAW => - run - ( drawMailbox - , window - , graphDrawObject - , drawGraphLength - , dotDrawObject - , dotDrawLength - , triangleDrawObject - , triangleDrawLength - )) + end) else Glfw.terminate () end diff --git a/imperative-shell/update-thread.sml b/imperative-shell/update-thread.sml index e86fd22..9a2a3d7 100644 --- a/imperative-shell/update-thread.sml +++ b/imperative-shell/update-thread.sml @@ -1,18 +1,32 @@ -structure UpdateThread = +signature UPDATE_THREAD = +sig + val run: + InputMessage.t Mailbox.mbox + * DrawMessage.t Mailbox.mbox + * AppType.app_type + -> unit +end + +structure UpdateThread :> UPDATE_THREAD = struct open CML + open UpdateMessage - local - fun loop (inputMailbox, drawMailbox, model) = - let - val inputMsg = Mailbox.recv inputMailbox - val (model, drawMsg) = AppUpdate.update (model, inputMsg) - val _ = Mailbox.send (drawMailbox, drawMsg) - in - loop (inputMailbox, drawMailbox, model) - end - in - fun run (inputMailbox, drawMailbox, initial) = - loop (inputMailbox, drawMailbox, initial) - end + fun handleMsg (drawMailbox, updateMsg) = + case updateMsg of + DRAW drawMsg => Mailbox.send (drawMailbox, drawMsg) + | FILE fileMsg => () + | NO_MAILBOX => () + + fun loop (inputMailbox, drawMailbox, model) = + let + val inputMsg = Mailbox.recv inputMailbox + val (model, updateMsg) = AppUpdate.update (model, inputMsg) + val _ = handleMsg (drawMailbox, updateMsg) + in + loop (inputMailbox, drawMailbox, model) + end + + fun run (inputMailbox, drawMailbox, initial) = + loop (inputMailbox, drawMailbox, initial) end diff --git a/message-types/draw-msg.sml b/message-types/draw-msg.sml index 8a6495d..a7e9b96 100644 --- a/message-types/draw-msg.sml +++ b/message-types/draw-msg.sml @@ -12,7 +12,6 @@ sig , dots: Real32.real vector } | CLEAR_DOTS - | NO_DRAW end structure DrawMessage :> DRAW_MESSAGE = @@ -29,5 +28,4 @@ struct , dots: Real32.real vector } | CLEAR_DOTS - | NO_DRAW end diff --git a/message-types/io-msg.sml b/message-types/file-msg.sml similarity index 79% rename from message-types/io-msg.sml rename to message-types/file-msg.sml index 5d27022..6b1e462 100644 --- a/message-types/io-msg.sml +++ b/message-types/file-msg.sml @@ -1,4 +1,4 @@ -signature IO_MESSAGE = +signature FILE_MESSAGE = sig datatype t = SAVE_TRIANGLES of AppType.triangle list @@ -6,7 +6,7 @@ sig | IMPORT_FILE end -structure IoMessage :> IO_MESSAGE = +structure FileMessage :> FILE_MESSAGE = struct datatype t = SAVE_TRIANGLES of AppType.triangle list diff --git a/message-types/update-msg.sml b/message-types/update-msg.sml new file mode 100644 index 0000000..870cfa8 --- /dev/null +++ b/message-types/update-msg.sml @@ -0,0 +1,7 @@ +signature UPDATE_MESSAGE = +sig + datatype t = DRAW of DrawMessage.t | FILE of FileMessage.t | NO_MAILBOX +end + +structure UpdateMessage :> UPDATE_MESSAGE = +struct datatype t = DRAW of DrawMessage.t | FILE of FileMessage.t | NO_MAILBOX end