diff --git a/dotscape b/dotscape index 33d86ac..da46f18 100755 Binary files a/dotscape and b/dotscape differ diff --git a/functional-core/app/app-init.sml b/functional-core/app/app-init.sml index bef517c..e027ca0 100644 --- a/functional-core/app/app-init.sml +++ b/functional-core/app/app-init.sml @@ -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 diff --git a/functional-core/app/app-type.sml b/functional-core/app/app-type.sml index 2ee4eb4..ddf2c6b 100644 --- a/functional-core/app/app-type.sml +++ b/functional-core/app/app-type.sml @@ -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 diff --git a/functional-core/app/app-with.sml b/functional-core/app/app-with.sml index 53b84ce..2a8d577 100644 --- a/functional-core/app/app-with.sml +++ b/functional-core/app/app-with.sml @@ -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 diff --git a/functional-core/file/parse-file.sml b/functional-core/file/parse-file.sml index df90204..3052b3a 100644 --- a/functional-core/file/parse-file.sml +++ b/functional-core/file/parse-file.sml @@ -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 diff --git a/imperative-shell/constants.sml b/imperative-shell/constants.sml index 8e35145..05a166f 100644 --- a/imperative-shell/constants.sml +++ b/imperative-shell/constants.sml @@ -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\ diff --git a/imperative-shell/file-thread.sml b/imperative-shell/file-thread.sml index 69a3b9e..e80f20f 100644 --- a/imperative-shell/file-thread.sml +++ b/imperative-shell/file-thread.sml @@ -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\ diff --git a/imperative-shell/shell.sml b/imperative-shell/shell.sml index 5a4003a..a896614 100644 --- a/imperative-shell/shell.sml +++ b/imperative-shell/shell.sml @@ -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 () diff --git a/message-types/input-msg.sml b/message-types/input-msg.sml index f6d15fb..cbd01bb 100644 --- a/message-types/input-msg.sml +++ b/message-types/input-msg.sml @@ -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