rename 'button' (the coloured square that appears over a clickpoint) to 'dot' throughout codebase, because I may want actual buttons later

This commit is contained in:
2024-08-14 21:24:46 +01:00
parent abddddbc9e
commit 30dd9de17a
5 changed files with 73 additions and 75 deletions

View File

@@ -14,23 +14,23 @@ struct
let let
val (drawVec, _, _) = ClickPoints.getClickPosition (1.0, 0.0, 0.0, model) val (drawVec, _, _) = ClickPoints.getClickPosition (1.0, 0.0, 0.0, model)
val drawVec = TriangleStage.toVector (model, drawVec) val drawVec = TriangleStage.toVector (model, drawVec)
val drawMsg = DRAW_BUTTON drawVec val drawMsg = DRAW_DOT drawVec
in in
(model, drawMsg) (model, drawMsg)
end end
fun mouseLeftClick (model: app_type) = fun mouseLeftClick (model: app_type) =
let let
val (buttonVec, hpos, vpos) = val (dotVec, hpos, vpos) =
ClickPoints.getClickPosition (0.0, 0.0, 1.0, model) ClickPoints.getClickPosition (0.0, 0.0, 1.0, model)
val newUndoTuple = (hpos, vpos) val newUndoTuple = (hpos, vpos)
in in
if Vector.length buttonVec > 0 then if Vector.length dotVec > 0 then
case #triangleStage model of case #triangleStage model of
NO_TRIANGLE => NO_TRIANGLE =>
let let
val drawVec = TriangleStage.toVector (model, buttonVec) val drawVec = TriangleStage.toVector (model, dotVec)
val drawMsg = DRAW_BUTTON drawVec val drawMsg = DRAW_DOT drawVec
val newTriangleStage = FIRST {x1 = hpos, y1 = vpos} val newTriangleStage = FIRST {x1 = hpos, y1 = vpos}
val model = val model =
@@ -41,8 +41,8 @@ struct
| FIRST {x1, y1} => | FIRST {x1, y1} =>
let let
val drawVec = val drawVec =
TriangleStage.firstToVector (x1, y1, buttonVec, model) TriangleStage.firstToVector (x1, y1, dotVec, model)
val drawMsg = DRAW_BUTTON drawVec val drawMsg = DRAW_DOT drawVec
val newTriangleStage = SECOND val newTriangleStage = SECOND
{x1 = x1, y1 = y1, x2 = hpos, y2 = vpos} {x1 = x1, y1 = y1, x2 = hpos, y2 = vpos}
@@ -57,7 +57,7 @@ struct
(model, x1, y1, x2, y2, hpos, vpos, newUndoTuple) (model, x1, y1, x2, y2, hpos, vpos, newUndoTuple)
val drawVec = Triangles.toVector model val drawVec = Triangles.toVector model
val drawMsg = DRAW_TRIANGLES_AND_RESET_BUTTONS drawVec val drawMsg = DRAW_TRIANGLES_AND_RESET_DOTS drawVec
in in
(model, drawMsg) (model, drawMsg)
end end
@@ -75,7 +75,7 @@ struct
else Vector.fromList [] else Vector.fromList []
val drawMsg = val drawMsg =
RESIZE_TRIANGLES_BUTTONS_AND_GRAPH RESIZE_TRIANGLES_DOTS_AND_GRAPH
{triangles = triangles, graphLines = graphLines} {triangles = triangles, graphLines = graphLines}
in in
(model, drawMsg) (model, drawMsg)
@@ -84,15 +84,15 @@ struct
fun undoAction model = fun undoAction model =
case #triangleStage model of case #triangleStage model of
FIRST {x1, y1} => FIRST {x1, y1} =>
(* Change FIRST to NO_TRIANGLE and clear buttons. *) (* Change FIRST to NO_TRIANGLE and clear dots. *)
let let
val model = val model =
AppWith.undo (model, NO_TRIANGLE, #triangles model, (x1, y1)) AppWith.undo (model, NO_TRIANGLE, #triangles model, (x1, y1))
in in
(model, CLEAR_BUTTONS) (model, CLEAR_DOTS)
end end
| SECOND {x1, y1, x2, y2} => | SECOND {x1, y1, x2, y2} =>
(* Change FIRST to SECOND and redraw buttons. *) (* Change FIRST to SECOND and redraw dots. *)
let let
val newTriangleStage = FIRST {x1 = x1, y1 = y1} val newTriangleStage = FIRST {x1 = x1, y1 = y1}
val model = val model =
@@ -100,7 +100,7 @@ struct
val emptyVec: Real32.real vector = Vector.fromList [] val emptyVec: Real32.real vector = Vector.fromList []
val drawVec = TriangleStage.firstToVector (x1, y1, emptyVec, model) val drawVec = TriangleStage.firstToVector (x1, y1, emptyVec, model)
val drawMsg = DRAW_BUTTON drawVec val drawMsg = DRAW_DOT drawVec
in in
(model, drawMsg) (model, drawMsg)
end end
@@ -120,8 +120,8 @@ struct
val drawVec = TriangleStage.secondToVector val drawVec = TriangleStage.secondToVector
(x1, y1, x2, y2, emptyVec, model) (x1, y1, x2, y2, emptyVec, model)
val drawMsg = val drawMsg =
DRAW_TRIANGLES_AND_BUTTONS DRAW_TRIANGLES_AND_DOTS
{triangles = newTriangleVec, buttons = drawVec} {triangles = newTriangleVec, dots = drawVec}
in in
(model, drawMsg) (model, drawMsg)
end end
@@ -135,7 +135,7 @@ struct
(* There is a click point to redo. *) (* There is a click point to redo. *)
(case #triangleStage model of (case #triangleStage model of
NO_TRIANGLE => NO_TRIANGLE =>
(* add to triangle stage, and redraw buttons *) (* add to triangle stage, and redraw dots *)
let let
val newTriangleStage = FIRST {x1 = x, y1 = y} val newTriangleStage = FIRST {x1 = x, y1 = y}
val model = val model =
@@ -144,12 +144,12 @@ struct
val emptyVec: Real32.real vector = Vector.fromList [] val emptyVec: Real32.real vector = Vector.fromList []
val drawVec = TriangleStage.firstToVector (x, y, emptyVec, model) val drawVec = TriangleStage.firstToVector (x, y, emptyVec, model)
val drawMsg = DRAW_BUTTON drawVec val drawMsg = DRAW_DOT drawVec
in in
(model, drawMsg) (model, drawMsg)
end end
| FIRST {x1, y1} => | FIRST {x1, y1} =>
(* add to triangle stage, redraw buttons *) (* add to triangle stage, redraw dots *)
let let
val newTriangleStage = SECOND {x1 = x1, y1 = y1, x2 = x, y2 = y} val newTriangleStage = SECOND {x1 = x1, y1 = y1, x2 = x, y2 = y}
val model = val model =
@@ -159,7 +159,7 @@ struct
val emptyVec: Real32.real vector = Vector.fromList [] val emptyVec: Real32.real vector = Vector.fromList []
val drawVec = TriangleStage.secondToVector val drawVec = TriangleStage.secondToVector
(x1, y1, x, y, emptyVec, model) (x1, y1, x, y, emptyVec, model)
val drawMsg = DRAW_BUTTON drawVec val drawMsg = DRAW_DOT drawVec
in in
(model, drawMsg) (model, drawMsg)
end end
@@ -174,7 +174,7 @@ struct
AppWith.redo (model, newTriangleStage, newTriangles, redoHd) AppWith.redo (model, newTriangleStage, newTriangles, redoHd)
val drawVec = Triangles.toVector model val drawVec = Triangles.toVector model
val drawMsg = DRAW_TRIANGLES_AND_RESET_BUTTONS drawVec val drawMsg = DRAW_TRIANGLES_AND_RESET_DOTS drawVec
in in
(model, drawMsg) (model, drawMsg)
end) end)

View File

@@ -62,13 +62,13 @@ struct
() ()
end end
fun initButton () = fun initDot () =
let let
val buttonDrawObject = initDrawObject val dotDrawObject = initDrawObject
( Constants.colouredVertexShaderString ( Constants.colouredVertexShaderString
, Constants.colouredFragmentShaderString , Constants.colouredFragmentShaderString
) )
val {vertexBuffer, program} = buttonDrawObject val {vertexBuffer, program} = dotDrawObject
val _ = Gles3.bindBuffer vertexBuffer val _ = Gles3.bindBuffer vertexBuffer
val _ = Gles3.bufferData (#[], 0, Gles3.STATIC_DRAW ()) val _ = Gles3.bufferData (#[], 0, Gles3.STATIC_DRAW ())
@@ -78,29 +78,29 @@ struct
val _ = Gles3.vertexAttribPointer (1, 3, 5, 8) val _ = Gles3.vertexAttribPointer (1, 3, 5, 8)
val _ = Gles3.enableVertexAttribArray 1 val _ = Gles3.enableVertexAttribArray 1
in in
buttonDrawObject dotDrawObject
end end
fun uploadButtonVector (buttonDrawObject: draw_object, vec) = fun uploadDotVector (dotDrawObject: draw_object, vec) =
let let
val {vertexBuffer, ...} = buttonDrawObject val {vertexBuffer, ...} = dotDrawObject
val _ = Gles3.bindBuffer vertexBuffer val _ = Gles3.bindBuffer vertexBuffer
val _ = Gles3.bufferData (vec, Vector.length vec, Gles3.STATIC_DRAW ()) val _ = Gles3.bufferData (vec, Vector.length vec, Gles3.STATIC_DRAW ())
in in
() ()
end end
fun drawButton (buttonDrawObject: draw_object, buttonDrawLength) = fun drawDot (dotDrawObject: draw_object, dotDrawLength) =
if buttonDrawLength > 0 then if dotDrawLength > 0 then
let let
val {vertexBuffer, program} = buttonDrawObject val {vertexBuffer, program} = dotDrawObject
val _ = Gles3.bindBuffer vertexBuffer val _ = Gles3.bindBuffer vertexBuffer
val _ = Gles3.vertexAttribPointer (0, 2, 5, 0) val _ = Gles3.vertexAttribPointer (0, 2, 5, 0)
val _ = Gles3.enableVertexAttribArray 0 val _ = Gles3.enableVertexAttribArray 0
val _ = Gles3.vertexAttribPointer (1, 3, 5, 8) val _ = Gles3.vertexAttribPointer (1, 3, 5, 8)
val _ = Gles3.enableVertexAttribArray 1 val _ = Gles3.enableVertexAttribArray 1
val _ = Gles3.useProgram program val _ = Gles3.useProgram program
val _ = Gles3.drawArrays (Gles3.TRIANGLES (), 0, buttonDrawLength) val _ = Gles3.drawArrays (Gles3.TRIANGLES (), 0, dotDrawLength)
in in
() ()
end end

View File

@@ -22,8 +22,8 @@ struct
, window , window
, graphDrawObject , graphDrawObject
, drawGraphLength , drawGraphLength
, buttonDrawObject , dotDrawObject
, buttonDrawLength , dotDrawLength
, triangleDrawObject , triangleDrawObject
, triangleDrawLength , triangleDrawLength
) = ) =
@@ -37,7 +37,7 @@ struct
val _ = AppDraw.drawGraphLines (graphDrawObject, drawGraphLength) val _ = AppDraw.drawGraphLines (graphDrawObject, drawGraphLength)
val _ = val _ =
AppDraw.drawTriangles (triangleDrawObject, triangleDrawLength) AppDraw.drawTriangles (triangleDrawObject, triangleDrawLength)
val _ = AppDraw.drawButton (buttonDrawObject, buttonDrawLength) val _ = AppDraw.drawDot (dotDrawObject, dotDrawLength)
val _ = Glfw.swapBuffers window val _ = Glfw.swapBuffers window
val _ = Glfw.pollEvents () val _ = Glfw.pollEvents ()
@@ -47,102 +47,100 @@ struct
, window , window
, graphDrawObject , graphDrawObject
, drawGraphLength , drawGraphLength
, buttonDrawObject , dotDrawObject
, buttonDrawLength , dotDrawLength
, triangleDrawObject , triangleDrawObject
, triangleDrawLength , triangleDrawLength
) )
end end
| SOME drawMsg => | SOME drawMsg =>
(case drawMsg of (case drawMsg of
DRAW_BUTTON vec => DRAW_DOT vec =>
let let
val _ = AppDraw.uploadButtonVector (buttonDrawObject, vec) val _ = AppDraw.uploadDotVector (dotDrawObject, vec)
val buttonDrawLength = Vector.length vec div 5 val dotDrawLength = Vector.length vec div 5
in in
draw draw
( drawMailbox ( drawMailbox
, window , window
, graphDrawObject , graphDrawObject
, drawGraphLength , drawGraphLength
, buttonDrawObject , dotDrawObject
, buttonDrawLength , dotDrawLength
, triangleDrawObject , triangleDrawObject
, triangleDrawLength , triangleDrawLength
) )
end end
| DRAW_TRIANGLES_AND_RESET_BUTTONS triangleVec => | DRAW_TRIANGLES_AND_RESET_DOTS triangleVec =>
let let
val _ = val _ =
AppDraw.uploadTrianglesVector AppDraw.uploadTrianglesVector
(triangleDrawObject, triangleVec) (triangleDrawObject, triangleVec)
val triangleDrawLength = Vector.length triangleVec div 2 val triangleDrawLength = Vector.length triangleVec div 2
(* buttons are reset by setting buttonDrawLength to 0 *) (* dots are reset by setting dotDrawLength to 0 *)
in in
draw draw
( drawMailbox ( drawMailbox
, window , window
, graphDrawObject , graphDrawObject
, drawGraphLength , drawGraphLength
, buttonDrawObject , dotDrawObject
, 0 , 0
, triangleDrawObject , triangleDrawObject
, triangleDrawLength , triangleDrawLength
) )
end end
| DRAW_TRIANGLES_AND_BUTTONS | DRAW_TRIANGLES_AND_DOTS {triangles = triangleVec, dots = dotsVec} =>
{triangles = triangleVec, buttons = buttonsVec} =>
let let
val _ = val _ =
AppDraw.uploadTrianglesVector AppDraw.uploadTrianglesVector
(triangleDrawObject, triangleVec) (triangleDrawObject, triangleVec)
val triangleDrawLength = Vector.length triangleVec div 2 val triangleDrawLength = Vector.length triangleVec div 2
val _ = val _ = AppDraw.uploadDotVector (dotDrawObject, dotsVec)
AppDraw.uploadButtonVector (buttonDrawObject, buttonsVec) val dotDrawLength = Vector.length dotsVec div 5
val buttonDrawLength = Vector.length buttonsVec div 5
in in
draw draw
( drawMailbox ( drawMailbox
, window , window
, graphDrawObject , graphDrawObject
, drawGraphLength , drawGraphLength
, buttonDrawObject , dotDrawObject
, buttonDrawLength , dotDrawLength
, triangleDrawObject , triangleDrawObject
, triangleDrawLength , triangleDrawLength
) )
end end
| CLEAR_BUTTONS => | CLEAR_DOTS =>
let let
val buttonDrawLength = 0 val dotDrawLength = 0
in in
draw draw
( drawMailbox ( drawMailbox
, window , window
, graphDrawObject , graphDrawObject
, drawGraphLength , drawGraphLength
, buttonDrawObject , dotDrawObject
, buttonDrawLength , dotDrawLength
, triangleDrawObject , triangleDrawObject
, triangleDrawLength , triangleDrawLength
) )
end end
| RESIZE_TRIANGLES_BUTTONS_AND_GRAPH {triangles, graphLines} => | RESIZE_TRIANGLES_DOTS_AND_GRAPH {triangles, graphLines} =>
let let
val _ = val _ =
AppDraw.uploadTrianglesVector (triangleDrawObject, triangles) AppDraw.uploadTrianglesVector (triangleDrawObject, triangles)
val triangleDrawLength = Vector.length triangles div 2 val triangleDrawLength = Vector.length triangles div 2
(* buttons are reset by setting buttonDrawLength to 0 *)
val _ = AppDraw.uploadGraphLines (graphDrawObject, graphLines) val _ = AppDraw.uploadGraphLines (graphDrawObject, graphLines)
val drawGraphLength = Vector.length graphLines div 2 val drawGraphLength = Vector.length graphLines div 2
(* to do: upload dots *)
in in
draw draw
( drawMailbox ( drawMailbox
, window , window
, graphDrawObject , graphDrawObject
, drawGraphLength , drawGraphLength
, buttonDrawObject , dotDrawObject
, 0 , 0
, triangleDrawObject , triangleDrawObject
, triangleDrawLength , triangleDrawLength
@@ -158,8 +156,8 @@ struct
, window , window
, graphDrawObject , graphDrawObject
, drawGraphLength , drawGraphLength
, buttonDrawObject , dotDrawObject
, buttonDrawLength , dotDrawLength
, triangleDrawObject , triangleDrawObject
, triangleDrawLength , triangleDrawLength
) )
@@ -170,8 +168,8 @@ struct
, window , window
, graphDrawObject , graphDrawObject
, drawGraphLength , drawGraphLength
, buttonDrawObject , dotDrawObject
, buttonDrawLength , dotDrawLength
, triangleDrawObject , triangleDrawObject
, triangleDrawLength , triangleDrawLength
)) ))

View File

@@ -23,7 +23,7 @@ struct
val graphDrawObject = AppDraw.initGraphLines () val graphDrawObject = AppDraw.initGraphLines ()
val _ = AppDraw.uploadGraphLines (graphDrawObject, graphLines) val _ = AppDraw.uploadGraphLines (graphDrawObject, graphLines)
val buttonDrawObject = AppDraw.initButton () val dotDrawObject = AppDraw.initDot ()
val triangleDrawObject = AppDraw.initTriangles () val triangleDrawObject = AppDraw.initTriangles ()
val inputMailbox = Mailbox.mailbox () val inputMailbox = Mailbox.mailbox ()
@@ -39,7 +39,7 @@ struct
, window , window
, graphDrawObject , graphDrawObject
, Vector.length graphLines div 2 , Vector.length graphLines div 2
, buttonDrawObject , dotDrawObject
, 0 , 0
, triangleDrawObject , triangleDrawObject
, 0 , 0

View File

@@ -1,27 +1,27 @@
signature DRAW_MESSAGE = signature DRAW_MESSAGE =
sig sig
datatype t = datatype t =
DRAW_BUTTON of Real32.real vector DRAW_DOT of Real32.real vector
| DRAW_TRIANGLES_AND_BUTTONS of | DRAW_TRIANGLES_AND_DOTS of
{triangles: Real32.real vector, buttons: Real32.real vector} {triangles: Real32.real vector, dots: Real32.real vector}
| DRAW_TRIANGLES_AND_RESET_BUTTONS of Real32.real vector | DRAW_TRIANGLES_AND_RESET_DOTS of Real32.real vector
| DRAW_GRAPH 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} {triangles: Real32.real vector, graphLines: Real32.real vector}
| CLEAR_BUTTONS | CLEAR_DOTS
| NO_DRAW | NO_DRAW
end end
structure DrawMessage :> DRAW_MESSAGE = structure DrawMessage :> DRAW_MESSAGE =
struct struct
datatype t = datatype t =
DRAW_BUTTON of Real32.real vector DRAW_DOT of Real32.real vector
| DRAW_TRIANGLES_AND_BUTTONS of | DRAW_TRIANGLES_AND_DOTS of
{triangles: Real32.real vector, buttons: Real32.real vector} {triangles: Real32.real vector, dots: Real32.real vector}
| DRAW_TRIANGLES_AND_RESET_BUTTONS of Real32.real vector | DRAW_TRIANGLES_AND_RESET_DOTS of Real32.real vector
| DRAW_GRAPH 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} {triangles: Real32.real vector, graphLines: Real32.real vector}
| CLEAR_BUTTONS | CLEAR_DOTS
| NO_DRAW | NO_DRAW
end end