add 'numClickPoints' field to app type, and add parameter with same name to
ClickPoints.generate function
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
signature APP_INIT =
|
||||
sig
|
||||
val fromWindowWidthAndHeight: int * int -> AppType.app_type
|
||||
val fromWindowWidthAndHeight: int * int * int -> AppType.app_type
|
||||
end
|
||||
|
||||
structure AppInit :> APP_INIT =
|
||||
@@ -8,15 +8,23 @@ struct
|
||||
open AppType
|
||||
|
||||
fun helpFromWidthAndHeight
|
||||
(windowWidth, windowHeight, wStart, wFinish, hStart, hFinish) : app_type =
|
||||
( windowWidth
|
||||
, windowHeight
|
||||
, wStart
|
||||
, wFinish
|
||||
, hStart
|
||||
, hFinish
|
||||
, numClickPoints
|
||||
) : app_type =
|
||||
let
|
||||
val xClickPoints = ClickPoints.generate (wStart, wFinish)
|
||||
val yClickPoints = ClickPoints.generate (hStart, hFinish)
|
||||
val xClickPoints = ClickPoints.generate (wStart, wFinish, numClickPoints)
|
||||
val yClickPoints = ClickPoints.generate (hStart, hFinish, numClickPoints)
|
||||
in
|
||||
{ triangles = []
|
||||
, triangleStage = NO_TRIANGLE
|
||||
, windowWidth = windowWidth
|
||||
, windowHeight = windowHeight
|
||||
, numClickPoints = numClickPoints
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, undo = []
|
||||
@@ -29,10 +37,17 @@ struct
|
||||
}
|
||||
end
|
||||
|
||||
fun fromWindowWidthAndHeight (windowWidth, windowHeight) =
|
||||
fun fromWindowWidthAndHeight (windowWidth, windowHeight, numClickPoints) =
|
||||
if windowWidth = windowHeight then
|
||||
helpFromWidthAndHeight
|
||||
(windowWidth, windowHeight, 0, windowWidth, 0, windowHeight)
|
||||
( windowWidth
|
||||
, windowHeight
|
||||
, 0
|
||||
, windowWidth
|
||||
, 0
|
||||
, windowHeight
|
||||
, numClickPoints
|
||||
)
|
||||
else if windowWidth > windowHeight then
|
||||
let
|
||||
val difference = windowWidth - windowHeight
|
||||
@@ -40,7 +55,14 @@ struct
|
||||
val wFinish = wStart + windowHeight
|
||||
in
|
||||
helpFromWidthAndHeight
|
||||
(windowWidth, windowHeight, wStart, wFinish, 0, windowHeight)
|
||||
( windowWidth
|
||||
, windowHeight
|
||||
, wStart
|
||||
, wFinish
|
||||
, 0
|
||||
, windowHeight
|
||||
, numClickPoints
|
||||
)
|
||||
end
|
||||
else
|
||||
let
|
||||
@@ -49,6 +71,13 @@ struct
|
||||
val hFinish = hStart + windowWidth
|
||||
in
|
||||
helpFromWidthAndHeight
|
||||
(windowWidth, windowHeight, 0, windowWidth, hStart, hFinish)
|
||||
( windowWidth
|
||||
, windowHeight
|
||||
, 0
|
||||
, windowWidth
|
||||
, hStart
|
||||
, hFinish
|
||||
, numClickPoints
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -15,12 +15,12 @@ sig
|
||||
, y3: Real32.real
|
||||
}
|
||||
|
||||
|
||||
type app_type =
|
||||
{ triangles: triangle list
|
||||
, triangleStage: triangle_stage
|
||||
, windowWidth: int
|
||||
, windowHeight: int
|
||||
, numClickPoints: int
|
||||
, xClickPoints: Real32.real vector
|
||||
, yClickPoints: Real32.real vector
|
||||
, undo: (Real32.real * Real32.real) list
|
||||
@@ -63,6 +63,7 @@ struct
|
||||
, triangleStage: triangle_stage
|
||||
, windowWidth: int
|
||||
, windowHeight: int
|
||||
, numClickPoints: int
|
||||
, xClickPoints: Real32.real vector
|
||||
, yClickPoints: Real32.real vector
|
||||
, undo: (Real32.real * Real32.real) list
|
||||
|
||||
@@ -65,6 +65,7 @@ struct
|
||||
val
|
||||
{ triangleStage = _
|
||||
, triangles
|
||||
, numClickPoints
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -84,6 +85,7 @@ struct
|
||||
, undo = newUndo
|
||||
, redo = []
|
||||
, triangles = triangles
|
||||
, numClickPoints = numClickPoints
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -103,6 +105,7 @@ struct
|
||||
val
|
||||
{ triangles
|
||||
, triangleStage = _
|
||||
, numClickPoints
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -124,6 +127,7 @@ struct
|
||||
, triangles = newTriangles
|
||||
, undo = newUndo
|
||||
, redo = []
|
||||
, numClickPoints = numClickPoints
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -141,6 +145,7 @@ struct
|
||||
val
|
||||
{ xClickPoints
|
||||
, yClickPoints
|
||||
, numClickPoints
|
||||
, windowWidth
|
||||
, windowHeight
|
||||
, triangles
|
||||
@@ -156,6 +161,7 @@ struct
|
||||
in
|
||||
{ xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, numClickPoints = numClickPoints
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, windowWidth = windowWidth
|
||||
@@ -175,6 +181,7 @@ struct
|
||||
val
|
||||
{ xClickPoints
|
||||
, yClickPoints
|
||||
, numClickPoints
|
||||
, windowWidth
|
||||
, windowHeight
|
||||
, triangles
|
||||
@@ -190,6 +197,7 @@ struct
|
||||
in
|
||||
{ xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, numClickPoints = numClickPoints
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, windowWidth = windowWidth
|
||||
@@ -211,6 +219,7 @@ struct
|
||||
val
|
||||
{ xClickPoints = _
|
||||
, yClickPoints = _
|
||||
, numClickPoints
|
||||
, windowWidth = _
|
||||
, windowHeight = _
|
||||
, triangles
|
||||
@@ -224,11 +233,12 @@ struct
|
||||
, arrowY
|
||||
} = app
|
||||
|
||||
val xClickPoints = ClickPoints.generate (wStart, wFinish)
|
||||
val yClickPoints = ClickPoints.generate (hStart, hFinish)
|
||||
val xClickPoints = ClickPoints.generate (wStart, wFinish, numClickPoints)
|
||||
val yClickPoints = ClickPoints.generate (hStart, hFinish, numClickPoints)
|
||||
in
|
||||
{ xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, numClickPoints = numClickPoints
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, windowWidth = windowWidth
|
||||
@@ -273,6 +283,7 @@ struct
|
||||
, mouseY = _
|
||||
, triangles
|
||||
, triangleStage
|
||||
, numClickPoints
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -288,6 +299,7 @@ struct
|
||||
, mouseY = mouseY
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, numClickPoints = numClickPoints
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -306,6 +318,7 @@ struct
|
||||
val
|
||||
{ triangleStage = _
|
||||
, triangles = _
|
||||
, numClickPoints
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -330,6 +343,7 @@ struct
|
||||
, triangles = newTriangles
|
||||
, undo = newUndo
|
||||
, redo = newRedo
|
||||
, numClickPoints = numClickPoints
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -348,6 +362,7 @@ struct
|
||||
val
|
||||
{ triangleStage = _
|
||||
, triangles = _
|
||||
, numClickPoints
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -371,6 +386,7 @@ struct
|
||||
, triangles = newTriangles
|
||||
, undo = newUndo
|
||||
, redo = newRedo
|
||||
, numClickPoints = numClickPoints
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -388,6 +404,7 @@ struct
|
||||
val
|
||||
{ triangleStage
|
||||
, triangles
|
||||
, numClickPoints
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -406,6 +423,7 @@ struct
|
||||
, triangles = triangles
|
||||
, undo = undo
|
||||
, redo = redo
|
||||
, numClickPoints = numClickPoints
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -422,6 +440,7 @@ struct
|
||||
val
|
||||
{ xClickPoints
|
||||
, yClickPoints
|
||||
, numClickPoints
|
||||
, windowWidth
|
||||
, windowHeight
|
||||
, undo
|
||||
@@ -442,6 +461,7 @@ struct
|
||||
, undo = []
|
||||
, redo = []
|
||||
, showGraph = showGraph
|
||||
, numClickPoints = numClickPoints
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
signature CLICK_POINTS =
|
||||
sig
|
||||
val generate: int * int -> Real32.real vector
|
||||
val generate: int * int * int -> Real32.real vector
|
||||
val getClickPositionFromMouse: AppType.app_type -> (int * int) option
|
||||
val getDrawDot:
|
||||
Real32.real
|
||||
@@ -18,13 +18,14 @@ end
|
||||
|
||||
structure ClickPoints :> CLICK_POINTS =
|
||||
struct
|
||||
fun generate (start, finish) =
|
||||
fun generate (start, finish, numPoints) =
|
||||
let
|
||||
val difference = finish - start
|
||||
val increment = Real32.fromInt difference / 40.0
|
||||
val increment = Real32.fromInt difference / Real32.fromInt numPoints
|
||||
val start = Real32.fromInt start
|
||||
in
|
||||
Vector.tabulate (41, fn idx => (Real32.fromInt idx * increment) + start)
|
||||
Vector.tabulate (numPoints + 1, fn idx =>
|
||||
(Real32.fromInt idx * increment) + start)
|
||||
end
|
||||
|
||||
(*
|
||||
|
||||
@@ -2,6 +2,7 @@ structure Constants =
|
||||
struct
|
||||
val windowWidth = 1000
|
||||
val windowHeight = 900
|
||||
val initialNumClickPoints = 26
|
||||
|
||||
val graphVertexShaderString =
|
||||
"#version 300 es\n\
|
||||
|
||||
@@ -15,9 +15,11 @@ struct
|
||||
val _ = Glfw.makeContextCurrent window
|
||||
val _ = Gles3.loadGlad ()
|
||||
|
||||
val initialModel =
|
||||
AppInit.fromWindowWidthAndHeight
|
||||
(Constants.windowWidth, Constants.windowHeight)
|
||||
val initialModel = AppInit.fromWindowWidthAndHeight
|
||||
( Constants.windowWidth
|
||||
, Constants.windowHeight
|
||||
, Constants.initialNumClickPoints
|
||||
)
|
||||
|
||||
val graphLines = GraphLines.generate initialModel
|
||||
val graphDrawObject = AppDraw.initGraphLines ()
|
||||
|
||||
Reference in New Issue
Block a user