diff --git a/functional-core/app-update.sml b/functional-core/app-update.sml index 3bac7e1..2bd7259 100644 --- a/functional-core/app-update.sml +++ b/functional-core/app-update.sml @@ -14,23 +14,23 @@ struct let val (drawVec, _, _) = ClickPoints.getClickPosition (1.0, 0.0, 0.0, model) val drawVec = TriangleStage.toVector (model, drawVec) - val drawMsg = DRAW_BUTTON drawVec + val drawMsg = DRAW_DOT drawVec in (model, drawMsg) end fun mouseLeftClick (model: app_type) = let - val (buttonVec, hpos, vpos) = + val (dotVec, hpos, vpos) = ClickPoints.getClickPosition (0.0, 0.0, 1.0, model) val newUndoTuple = (hpos, vpos) in - if Vector.length buttonVec > 0 then + if Vector.length dotVec > 0 then case #triangleStage model of NO_TRIANGLE => let - val drawVec = TriangleStage.toVector (model, buttonVec) - val drawMsg = DRAW_BUTTON drawVec + val drawVec = TriangleStage.toVector (model, dotVec) + val drawMsg = DRAW_DOT drawVec val newTriangleStage = FIRST {x1 = hpos, y1 = vpos} val model = @@ -41,8 +41,8 @@ struct | FIRST {x1, y1} => let val drawVec = - TriangleStage.firstToVector (x1, y1, buttonVec, model) - val drawMsg = DRAW_BUTTON drawVec + TriangleStage.firstToVector (x1, y1, dotVec, model) + val drawMsg = DRAW_DOT drawVec val newTriangleStage = SECOND {x1 = x1, y1 = y1, x2 = hpos, y2 = vpos} @@ -57,7 +57,7 @@ struct (model, x1, y1, x2, y2, hpos, vpos, newUndoTuple) val drawVec = Triangles.toVector model - val drawMsg = DRAW_TRIANGLES_AND_RESET_BUTTONS drawVec + val drawMsg = DRAW_TRIANGLES_AND_RESET_DOTS drawVec in (model, drawMsg) end @@ -75,7 +75,7 @@ struct else Vector.fromList [] val drawMsg = - RESIZE_TRIANGLES_BUTTONS_AND_GRAPH + RESIZE_TRIANGLES_DOTS_AND_GRAPH {triangles = triangles, graphLines = graphLines} in (model, drawMsg) @@ -84,15 +84,15 @@ struct fun undoAction model = case #triangleStage model of FIRST {x1, y1} => - (* Change FIRST to NO_TRIANGLE and clear buttons. *) + (* Change FIRST to NO_TRIANGLE and clear dots. *) let val model = AppWith.undo (model, NO_TRIANGLE, #triangles model, (x1, y1)) in - (model, CLEAR_BUTTONS) + (model, CLEAR_DOTS) end | SECOND {x1, y1, x2, y2} => - (* Change FIRST to SECOND and redraw buttons. *) + (* Change FIRST to SECOND and redraw dots. *) let val newTriangleStage = FIRST {x1 = x1, y1 = y1} val model = @@ -100,7 +100,7 @@ struct val emptyVec: Real32.real vector = Vector.fromList [] val drawVec = TriangleStage.firstToVector (x1, y1, emptyVec, model) - val drawMsg = DRAW_BUTTON drawVec + val drawMsg = DRAW_DOT drawVec in (model, drawMsg) end @@ -120,8 +120,8 @@ struct val drawVec = TriangleStage.secondToVector (x1, y1, x2, y2, emptyVec, model) val drawMsg = - DRAW_TRIANGLES_AND_BUTTONS - {triangles = newTriangleVec, buttons = drawVec} + DRAW_TRIANGLES_AND_DOTS + {triangles = newTriangleVec, dots = drawVec} in (model, drawMsg) end @@ -135,7 +135,7 @@ struct (* There is a click point to redo. *) (case #triangleStage model of NO_TRIANGLE => - (* add to triangle stage, and redraw buttons *) + (* add to triangle stage, and redraw dots *) let val newTriangleStage = FIRST {x1 = x, y1 = y} val model = @@ -144,12 +144,12 @@ struct val emptyVec: Real32.real vector = Vector.fromList [] val drawVec = TriangleStage.firstToVector (x, y, emptyVec, model) - val drawMsg = DRAW_BUTTON drawVec + val drawMsg = DRAW_DOT drawVec in (model, drawMsg) end | FIRST {x1, y1} => - (* add to triangle stage, redraw buttons *) + (* add to triangle stage, redraw dots *) let val newTriangleStage = SECOND {x1 = x1, y1 = y1, x2 = x, y2 = y} val model = @@ -159,7 +159,7 @@ struct val emptyVec: Real32.real vector = Vector.fromList [] val drawVec = TriangleStage.secondToVector (x1, y1, x, y, emptyVec, model) - val drawMsg = DRAW_BUTTON drawVec + val drawMsg = DRAW_DOT drawVec in (model, drawMsg) end @@ -174,7 +174,7 @@ struct AppWith.redo (model, newTriangleStage, newTriangles, redoHd) val drawVec = Triangles.toVector model - val drawMsg = DRAW_TRIANGLES_AND_RESET_BUTTONS drawVec + val drawMsg = DRAW_TRIANGLES_AND_RESET_DOTS drawVec in (model, drawMsg) end) diff --git a/imperative-shell/app-draw.sml b/imperative-shell/app-draw.sml index eb8f7cd..ba86681 100644 --- a/imperative-shell/app-draw.sml +++ b/imperative-shell/app-draw.sml @@ -62,13 +62,13 @@ struct () end - fun initButton () = + fun initDot () = let - val buttonDrawObject = initDrawObject + val dotDrawObject = initDrawObject ( Constants.colouredVertexShaderString , Constants.colouredFragmentShaderString ) - val {vertexBuffer, program} = buttonDrawObject + val {vertexBuffer, program} = dotDrawObject val _ = Gles3.bindBuffer vertexBuffer val _ = Gles3.bufferData (#[], 0, Gles3.STATIC_DRAW ()) @@ -78,29 +78,29 @@ struct val _ = Gles3.vertexAttribPointer (1, 3, 5, 8) val _ = Gles3.enableVertexAttribArray 1 in - buttonDrawObject + dotDrawObject end - fun uploadButtonVector (buttonDrawObject: draw_object, vec) = + fun uploadDotVector (dotDrawObject: draw_object, vec) = let - val {vertexBuffer, ...} = buttonDrawObject + val {vertexBuffer, ...} = dotDrawObject val _ = Gles3.bindBuffer vertexBuffer val _ = Gles3.bufferData (vec, Vector.length vec, Gles3.STATIC_DRAW ()) in () end - fun drawButton (buttonDrawObject: draw_object, buttonDrawLength) = - if buttonDrawLength > 0 then + fun drawDot (dotDrawObject: draw_object, dotDrawLength) = + if dotDrawLength > 0 then let - val {vertexBuffer, program} = buttonDrawObject + val {vertexBuffer, program} = dotDrawObject val _ = Gles3.bindBuffer vertexBuffer val _ = Gles3.vertexAttribPointer (0, 2, 5, 0) val _ = Gles3.enableVertexAttribArray 0 val _ = Gles3.vertexAttribPointer (1, 3, 5, 8) val _ = Gles3.enableVertexAttribArray 1 val _ = Gles3.useProgram program - val _ = Gles3.drawArrays (Gles3.TRIANGLES (), 0, buttonDrawLength) + val _ = Gles3.drawArrays (Gles3.TRIANGLES (), 0, dotDrawLength) in () end diff --git a/imperative-shell/event-loop.sml b/imperative-shell/event-loop.sml index 9760a1e..d29a89b 100644 --- a/imperative-shell/event-loop.sml +++ b/imperative-shell/event-loop.sml @@ -22,8 +22,8 @@ struct , window , graphDrawObject , drawGraphLength - , buttonDrawObject - , buttonDrawLength + , dotDrawObject + , dotDrawLength , triangleDrawObject , triangleDrawLength ) = @@ -37,7 +37,7 @@ struct val _ = AppDraw.drawGraphLines (graphDrawObject, drawGraphLength) val _ = AppDraw.drawTriangles (triangleDrawObject, triangleDrawLength) - val _ = AppDraw.drawButton (buttonDrawObject, buttonDrawLength) + val _ = AppDraw.drawDot (dotDrawObject, dotDrawLength) val _ = Glfw.swapBuffers window val _ = Glfw.pollEvents () @@ -47,102 +47,100 @@ struct , window , graphDrawObject , drawGraphLength - , buttonDrawObject - , buttonDrawLength + , dotDrawObject + , dotDrawLength , triangleDrawObject , triangleDrawLength ) end | SOME drawMsg => (case drawMsg of - DRAW_BUTTON vec => + DRAW_DOT vec => let - val _ = AppDraw.uploadButtonVector (buttonDrawObject, vec) - val buttonDrawLength = Vector.length vec div 5 + val _ = AppDraw.uploadDotVector (dotDrawObject, vec) + val dotDrawLength = Vector.length vec div 5 in draw ( drawMailbox , window , graphDrawObject , drawGraphLength - , buttonDrawObject - , buttonDrawLength + , dotDrawObject + , dotDrawLength , triangleDrawObject , triangleDrawLength ) end - | DRAW_TRIANGLES_AND_RESET_BUTTONS triangleVec => + | DRAW_TRIANGLES_AND_RESET_DOTS triangleVec => let val _ = AppDraw.uploadTrianglesVector (triangleDrawObject, triangleVec) val triangleDrawLength = Vector.length triangleVec div 2 - (* buttons are reset by setting buttonDrawLength to 0 *) + (* dots are reset by setting dotDrawLength to 0 *) in draw ( drawMailbox , window , graphDrawObject , drawGraphLength - , buttonDrawObject + , dotDrawObject , 0 , triangleDrawObject , triangleDrawLength ) end - | DRAW_TRIANGLES_AND_BUTTONS - {triangles = triangleVec, buttons = buttonsVec} => + | DRAW_TRIANGLES_AND_DOTS {triangles = triangleVec, dots = dotsVec} => let val _ = AppDraw.uploadTrianglesVector (triangleDrawObject, triangleVec) val triangleDrawLength = Vector.length triangleVec div 2 - val _ = - AppDraw.uploadButtonVector (buttonDrawObject, buttonsVec) - val buttonDrawLength = Vector.length buttonsVec div 5 + val _ = AppDraw.uploadDotVector (dotDrawObject, dotsVec) + val dotDrawLength = Vector.length dotsVec div 5 in draw ( drawMailbox , window , graphDrawObject , drawGraphLength - , buttonDrawObject - , buttonDrawLength + , dotDrawObject + , dotDrawLength , triangleDrawObject , triangleDrawLength ) end - | CLEAR_BUTTONS => + | CLEAR_DOTS => let - val buttonDrawLength = 0 + val dotDrawLength = 0 in draw ( drawMailbox , window , graphDrawObject , drawGraphLength - , buttonDrawObject - , buttonDrawLength + , dotDrawObject + , dotDrawLength , triangleDrawObject , triangleDrawLength ) end - | RESIZE_TRIANGLES_BUTTONS_AND_GRAPH {triangles, graphLines} => + | RESIZE_TRIANGLES_DOTS_AND_GRAPH {triangles, graphLines} => let val _ = AppDraw.uploadTrianglesVector (triangleDrawObject, triangles) val triangleDrawLength = Vector.length triangles div 2 - (* buttons are reset by setting buttonDrawLength to 0 *) val _ = AppDraw.uploadGraphLines (graphDrawObject, graphLines) val drawGraphLength = Vector.length graphLines div 2 + (* to do: upload dots *) in draw ( drawMailbox , window , graphDrawObject , drawGraphLength - , buttonDrawObject + , dotDrawObject , 0 , triangleDrawObject , triangleDrawLength @@ -158,8 +156,8 @@ struct , window , graphDrawObject , drawGraphLength - , buttonDrawObject - , buttonDrawLength + , dotDrawObject + , dotDrawLength , triangleDrawObject , triangleDrawLength ) @@ -170,8 +168,8 @@ struct , window , graphDrawObject , drawGraphLength - , buttonDrawObject - , buttonDrawLength + , dotDrawObject + , dotDrawLength , triangleDrawObject , triangleDrawLength )) diff --git a/imperative-shell/shell.sml b/imperative-shell/shell.sml index 6045e24..1e31145 100644 --- a/imperative-shell/shell.sml +++ b/imperative-shell/shell.sml @@ -23,7 +23,7 @@ struct val graphDrawObject = AppDraw.initGraphLines () val _ = AppDraw.uploadGraphLines (graphDrawObject, graphLines) - val buttonDrawObject = AppDraw.initButton () + val dotDrawObject = AppDraw.initDot () val triangleDrawObject = AppDraw.initTriangles () val inputMailbox = Mailbox.mailbox () @@ -39,7 +39,7 @@ struct , window , graphDrawObject , Vector.length graphLines div 2 - , buttonDrawObject + , dotDrawObject , 0 , triangleDrawObject , 0 diff --git a/message-types/draw-msg.sml b/message-types/draw-msg.sml index a2041bc..ee1d5c6 100644 --- a/message-types/draw-msg.sml +++ b/message-types/draw-msg.sml @@ -1,27 +1,27 @@ signature DRAW_MESSAGE = sig datatype t = - DRAW_BUTTON of Real32.real vector - | DRAW_TRIANGLES_AND_BUTTONS of - {triangles: Real32.real vector, buttons: Real32.real vector} - | DRAW_TRIANGLES_AND_RESET_BUTTONS of Real32.real vector + DRAW_DOT of Real32.real vector + | DRAW_TRIANGLES_AND_DOTS of + {triangles: Real32.real vector, dots: Real32.real vector} + | DRAW_TRIANGLES_AND_RESET_DOTS of Real32.real vector | DRAW_GRAPH of Real32.real vector - | RESIZE_TRIANGLES_BUTTONS_AND_GRAPH of + | RESIZE_TRIANGLES_DOTS_AND_GRAPH of {triangles: Real32.real vector, graphLines: Real32.real vector} - | CLEAR_BUTTONS + | CLEAR_DOTS | NO_DRAW end structure DrawMessage :> DRAW_MESSAGE = struct datatype t = - DRAW_BUTTON of Real32.real vector - | DRAW_TRIANGLES_AND_BUTTONS of - {triangles: Real32.real vector, buttons: Real32.real vector} - | DRAW_TRIANGLES_AND_RESET_BUTTONS of Real32.real vector + DRAW_DOT of Real32.real vector + | DRAW_TRIANGLES_AND_DOTS of + {triangles: Real32.real vector, dots: Real32.real vector} + | DRAW_TRIANGLES_AND_RESET_DOTS of Real32.real vector | DRAW_GRAPH of Real32.real vector - | RESIZE_TRIANGLES_BUTTONS_AND_GRAPH of + | RESIZE_TRIANGLES_DOTS_AND_GRAPH of {triangles: Real32.real vector, graphLines: Real32.real vector} - | CLEAR_BUTTONS + | CLEAR_DOTS | NO_DRAW end