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
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)

View File

@@ -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

View File

@@ -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
))

View File

@@ -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

View File

@@ -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