allow width and height to have a different number of click points
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
signature APP_INIT =
|
||||
sig
|
||||
val fromWindowWidthAndHeight: int * int * int -> AppType.app_type
|
||||
val fromWindowWidthAndHeight: int * int * int * int -> AppType.app_type
|
||||
end
|
||||
|
||||
structure AppInit :> APP_INIT =
|
||||
@@ -14,18 +14,22 @@ struct
|
||||
, wFinish
|
||||
, hStart
|
||||
, hFinish
|
||||
, numClickPoints
|
||||
, widthClickPoints
|
||||
, heightClickPoints
|
||||
) : app_type =
|
||||
let
|
||||
val xClickPoints = ClickPoints.generate (wStart, wFinish, numClickPoints)
|
||||
val yClickPoints = ClickPoints.generate (hStart, hFinish, numClickPoints)
|
||||
val xClickPoints =
|
||||
ClickPoints.generate (wStart, wFinish, widthClickPoints)
|
||||
val yClickPoints =
|
||||
ClickPoints.generate (hStart, hFinish, heightClickPoints)
|
||||
in
|
||||
{ mode = AppType.NORMAL_MODE
|
||||
, triangles = []
|
||||
, triangleStage = NO_TRIANGLE
|
||||
, windowWidth = windowWidth
|
||||
, windowHeight = windowHeight
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = widthClickPoints
|
||||
, numClickPointsY = heightClickPoints
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, undo = []
|
||||
@@ -45,18 +49,9 @@ struct
|
||||
}
|
||||
end
|
||||
|
||||
fun fromWindowWidthAndHeight (windowWidth, windowHeight, numClickPoints) =
|
||||
if windowWidth = windowHeight then
|
||||
helpFromWidthAndHeight
|
||||
( windowWidth
|
||||
, windowHeight
|
||||
, 0
|
||||
, windowWidth
|
||||
, 0
|
||||
, windowHeight
|
||||
, numClickPoints
|
||||
)
|
||||
else if windowWidth > windowHeight then
|
||||
fun fromWindowWidthAndHeight
|
||||
(windowWidth, windowHeight, widthClickPoints, heightClickPoints) =
|
||||
if windowWidth > windowHeight then
|
||||
let
|
||||
val difference = windowWidth - windowHeight
|
||||
val wStart = difference div 2
|
||||
@@ -69,7 +64,8 @@ struct
|
||||
, wFinish
|
||||
, 0
|
||||
, windowHeight
|
||||
, numClickPoints
|
||||
, widthClickPoints
|
||||
, heightClickPoints
|
||||
)
|
||||
end
|
||||
else
|
||||
@@ -85,7 +81,8 @@ struct
|
||||
, windowWidth
|
||||
, hStart
|
||||
, hFinish
|
||||
, numClickPoints
|
||||
, widthClickPoints
|
||||
, heightClickPoints
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -28,7 +28,8 @@ sig
|
||||
, triangleStage: triangle_stage
|
||||
, windowWidth: int
|
||||
, windowHeight: int
|
||||
, numClickPoints: int
|
||||
, numClickPointsX: int
|
||||
, numClickPointsY: int
|
||||
, xClickPoints: Real32.real vector
|
||||
, yClickPoints: Real32.real vector
|
||||
, undo: (Real32.real * Real32.real) list
|
||||
@@ -86,7 +87,8 @@ struct
|
||||
, triangleStage: triangle_stage
|
||||
, windowWidth: int
|
||||
, windowHeight: int
|
||||
, numClickPoints: int
|
||||
, numClickPointsX: int
|
||||
, numClickPointsY: int
|
||||
, xClickPoints: Real32.real vector
|
||||
, yClickPoints: Real32.real vector
|
||||
, undo: (Real32.real * Real32.real) list
|
||||
|
||||
@@ -80,7 +80,8 @@ struct
|
||||
{ triangleStage = _
|
||||
, mode
|
||||
, triangles
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -108,7 +109,8 @@ struct
|
||||
, redo = []
|
||||
, mode = mode
|
||||
, triangles = triangles
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -136,7 +138,8 @@ struct
|
||||
{ mode
|
||||
, triangles
|
||||
, triangleStage = _
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -176,7 +179,8 @@ struct
|
||||
, triangles = newTriangles
|
||||
, undo = newUndo
|
||||
, redo = []
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -202,7 +206,8 @@ struct
|
||||
{ mode
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, windowWidth
|
||||
, windowHeight
|
||||
, triangles
|
||||
@@ -226,7 +231,8 @@ struct
|
||||
{ mode = mode
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, windowWidth = windowWidth
|
||||
@@ -254,7 +260,8 @@ struct
|
||||
{ mode
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, windowWidth
|
||||
, windowHeight
|
||||
, triangles
|
||||
@@ -278,7 +285,8 @@ struct
|
||||
{ mode = mode
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, windowWidth = windowWidth
|
||||
@@ -308,7 +316,8 @@ struct
|
||||
{ mode
|
||||
, xClickPoints = _
|
||||
, yClickPoints = _
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, windowWidth = _
|
||||
, windowHeight = _
|
||||
, triangles
|
||||
@@ -329,13 +338,14 @@ struct
|
||||
, num
|
||||
} = app
|
||||
|
||||
val xClickPoints = ClickPoints.generate (wStart, wFinish, numClickPoints)
|
||||
val yClickPoints = ClickPoints.generate (hStart, hFinish, numClickPoints)
|
||||
val xClickPoints = ClickPoints.generate (wStart, wFinish, numClickPointsX)
|
||||
val yClickPoints = ClickPoints.generate (hStart, hFinish, numClickPointsY)
|
||||
in
|
||||
{ mode = mode
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, windowWidth = windowWidth
|
||||
@@ -388,7 +398,8 @@ struct
|
||||
, mouseY = _
|
||||
, triangles
|
||||
, triangleStage
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -412,7 +423,8 @@ struct
|
||||
, mouseY = mouseY
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -439,7 +451,8 @@ struct
|
||||
{ mode
|
||||
, triangleStage = _
|
||||
, triangles = _
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -472,7 +485,8 @@ struct
|
||||
, triangles = newTriangles
|
||||
, undo = newUndo
|
||||
, redo = newRedo
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -499,7 +513,8 @@ struct
|
||||
{ mode
|
||||
, triangleStage = _
|
||||
, triangles = _
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -531,7 +546,8 @@ struct
|
||||
, triangles = newTriangles
|
||||
, undo = newUndo
|
||||
, redo = newRedo
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -557,7 +573,8 @@ struct
|
||||
{ mode
|
||||
, triangleStage
|
||||
, triangles
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -584,7 +601,8 @@ struct
|
||||
, triangles = triangles
|
||||
, undo = undo
|
||||
, redo = redo
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -609,7 +627,8 @@ struct
|
||||
{ mode = _
|
||||
, triangleStage
|
||||
, triangles
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -636,7 +655,8 @@ struct
|
||||
, triangles = triangles
|
||||
, undo = undo
|
||||
, redo = redo
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -661,7 +681,8 @@ struct
|
||||
{ mode = _
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, windowWidth
|
||||
, windowHeight
|
||||
, undo
|
||||
@@ -690,7 +711,8 @@ struct
|
||||
, undo = []
|
||||
, redo = []
|
||||
, showGraph = showGraph
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -715,7 +737,8 @@ struct
|
||||
{ mode
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, windowWidth
|
||||
, windowHeight
|
||||
, triangles
|
||||
@@ -739,7 +762,8 @@ struct
|
||||
{ mode = mode
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, windowWidth = windowWidth
|
||||
@@ -767,7 +791,8 @@ struct
|
||||
{ mode
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, windowWidth
|
||||
, windowHeight
|
||||
, triangles
|
||||
@@ -791,7 +816,8 @@ struct
|
||||
{ mode = mode
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, triangles = triangles
|
||||
, triangleStage = triangleStage
|
||||
, windowWidth = windowWidth
|
||||
@@ -813,13 +839,14 @@ struct
|
||||
}
|
||||
end
|
||||
|
||||
fun num (app: app_type, newNum): app_type =
|
||||
fun num (app: app_type, newNum) : app_type =
|
||||
let
|
||||
val
|
||||
{ triangleStage
|
||||
, mode
|
||||
, triangles
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -846,7 +873,8 @@ struct
|
||||
, redo = []
|
||||
, mode = mode
|
||||
, triangles = triangles
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -866,13 +894,14 @@ struct
|
||||
}
|
||||
end
|
||||
|
||||
fun r (app: app_type): app_type =
|
||||
fun r (app: app_type) : app_type =
|
||||
let
|
||||
val
|
||||
{ triangleStage
|
||||
, mode
|
||||
, triangles
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -900,7 +929,8 @@ struct
|
||||
, redo = []
|
||||
, mode = mode
|
||||
, triangles = triangles
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -920,13 +950,14 @@ struct
|
||||
}
|
||||
end
|
||||
|
||||
fun g (app: app_type): app_type =
|
||||
fun g (app: app_type) : app_type =
|
||||
let
|
||||
val
|
||||
{ triangleStage
|
||||
, mode
|
||||
, triangles
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -954,7 +985,8 @@ struct
|
||||
, redo = []
|
||||
, mode = mode
|
||||
, triangles = triangles
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
@@ -974,13 +1006,14 @@ struct
|
||||
}
|
||||
end
|
||||
|
||||
fun b (app: app_type): app_type =
|
||||
fun b (app: app_type) : app_type =
|
||||
let
|
||||
val
|
||||
{ triangleStage
|
||||
, mode
|
||||
, triangles
|
||||
, numClickPoints
|
||||
, numClickPointsX
|
||||
, numClickPointsY
|
||||
, xClickPoints
|
||||
, yClickPoints
|
||||
, windowWidth
|
||||
@@ -1008,7 +1041,8 @@ struct
|
||||
, redo = []
|
||||
, mode = mode
|
||||
, triangles = triangles
|
||||
, numClickPoints = numClickPoints
|
||||
, numClickPointsX = numClickPointsX
|
||||
, numClickPointsY = numClickPointsY
|
||||
, xClickPoints = xClickPoints
|
||||
, yClickPoints = yClickPoints
|
||||
, windowWidth = windowWidth
|
||||
|
||||
@@ -5,7 +5,14 @@ end
|
||||
|
||||
structure ParseFile :> PARSE_FILE =
|
||||
struct
|
||||
datatype triangle_token = X | Y | R | G | B | COORD of Real32.real | UNKNOWN of string
|
||||
datatype triangle_token =
|
||||
X
|
||||
| Y
|
||||
| R
|
||||
| G
|
||||
| B
|
||||
| COORD of Real32.real
|
||||
| UNKNOWN of string
|
||||
|
||||
val zero: Real32.real = 0.0
|
||||
|
||||
|
||||
@@ -2,7 +2,8 @@ structure Constants =
|
||||
struct
|
||||
val windowWidth = 1000
|
||||
val windowHeight = 900
|
||||
val initialNumClickPoints = 15
|
||||
val initialWidthClickPoints = 16
|
||||
val initialHeightClickPoints = 20
|
||||
|
||||
val graphVertexShaderString =
|
||||
"#version 300 es\n\
|
||||
|
||||
@@ -65,19 +65,31 @@ struct
|
||||
[ x1
|
||||
, ",\n"
|
||||
, y1
|
||||
, ", r, g, b,\n"
|
||||
, ",\n"
|
||||
, r
|
||||
, ",\n"
|
||||
, g
|
||||
, ",\n"
|
||||
, b
|
||||
, ",\n"
|
||||
, x2
|
||||
, ",\n"
|
||||
, y2
|
||||
, ", r, g, b,\n"
|
||||
, ",\n"
|
||||
, r
|
||||
, ",\n"
|
||||
, g
|
||||
, ",\n"
|
||||
, b
|
||||
, ",\n"
|
||||
, x3
|
||||
, ",\n"
|
||||
, y3
|
||||
, ", \n"
|
||||
, ",\n"
|
||||
, r
|
||||
, ", "
|
||||
, ",\n"
|
||||
, g
|
||||
, ", "
|
||||
, ",\n"
|
||||
, b
|
||||
, case tl of
|
||||
[] => "\n"
|
||||
@@ -99,10 +111,8 @@ struct
|
||||
val _ = TextIO.output (io, fileStartString)
|
||||
|
||||
val functionStartString =
|
||||
" fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector =\n\
|
||||
" fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight) : Real32.real vector =\n\
|
||||
\ let\n\
|
||||
\ val startX = Real32.fromInt startX\n\
|
||||
\ val startY = Real32.fromInt startY\n\
|
||||
\ val endY = windowHeight - startY\n\
|
||||
\ val startY = windowHeight - (startY + drawHeight)\n\
|
||||
\ val endX = startX + drawWidth\n\
|
||||
|
||||
@@ -18,7 +18,8 @@ struct
|
||||
val initialModel = AppInit.fromWindowWidthAndHeight
|
||||
( Constants.windowWidth
|
||||
, Constants.windowHeight
|
||||
, Constants.initialNumClickPoints
|
||||
, Constants.initialWidthClickPoints
|
||||
, Constants.initialHeightClickPoints
|
||||
)
|
||||
|
||||
val graphLines = GraphLines.generate initialModel
|
||||
@@ -27,7 +28,7 @@ struct
|
||||
|
||||
val dotDrawObject = AppDraw.initDot ()
|
||||
val triangleDrawObject = AppDraw.initTriangles ()
|
||||
|
||||
|
||||
val modalTextDrawObject = AppDraw.initModalText ()
|
||||
|
||||
val inputMailbox = Mailbox.mailbox ()
|
||||
|
||||
@@ -24,7 +24,8 @@ sig
|
||||
| KEY_SPACE
|
||||
| USE_TRIANGLES of AppType.triangle list
|
||||
| TRIANGLES_LOAD_ERROR
|
||||
| FILE_BROWSER_AND_PATH of { fileBrowser: AppType.file_browser_item vector, path: string }
|
||||
| FILE_BROWSER_AND_PATH of
|
||||
{fileBrowser: AppType.file_browser_item vector, path: string}
|
||||
end
|
||||
|
||||
structure InputMessage :> INPUT_MESSAGE =
|
||||
@@ -53,5 +54,6 @@ struct
|
||||
| KEY_SPACE
|
||||
| USE_TRIANGLES of AppType.triangle list
|
||||
| TRIANGLES_LOAD_ERROR
|
||||
| FILE_BROWSER_AND_PATH of { fileBrowser: AppType.file_browser_item vector, path: string }
|
||||
| FILE_BROWSER_AND_PATH of
|
||||
{fileBrowser: AppType.file_browser_item vector, path: string}
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user