diff --git a/dotscape b/dotscape index 2a56919..887472f 100755 Binary files a/dotscape and b/dotscape differ diff --git a/fcore/app-init.sml b/fcore/app-init.sml index 5c7e097..ed23c86 100644 --- a/fcore/app-init.sml +++ b/fcore/app-init.sml @@ -23,12 +23,9 @@ struct (windowWidth, windowHeight, canvasWidth, canvasHeight) val maxPoints = Int.max (canvasWidth, canvasHeight) - val squares = Vector.tabulate (maxPoints, fn _ => - Vector.tabulate (maxPoints, fn _ => {r = 0, g = 0, b = 0, a = 0})) val layerTree = LayerTree.init maxPoints in { mode = AppType.NORMAL_MODE - , squares = squares , canvasWidth = canvasWidth , canvasHeight = canvasHeight , windowWidth = windowWidth diff --git a/fcore/app-type.sml b/fcore/app-type.sml index 287afd2..08ba9e2 100644 --- a/fcore/app-type.sml +++ b/fcore/app-type.sml @@ -8,7 +8,6 @@ struct type app_type = { mode: app_mode - , squares: square vector vector , canvasWidth: int , canvasHeight: int , windowWidth: int diff --git a/fcore/app-with.sml b/fcore/app-with.sml index 8c217e6..51fef4c 100644 --- a/fcore/app-with.sml +++ b/fcore/app-with.sml @@ -2,28 +2,10 @@ structure AppWith = struct open AppType - fun changeSquaresSize (squares, newCanvasWidth, newCanvasHeight) = - let - val maxPoints = Int.max (newCanvasWidth, newCanvasHeight) - in - Vector.tabulate (maxPoints, fn i => - if i < Vector.length squares then - let - val yAxis = Vector.sub (squares, i) - in - Vector.tabulate (maxPoints, fn ii => - if ii < Vector.length yAxis then Vector.sub (yAxis, ii) - else {r = 0, g = 0, b = 0, a = 0}) - end - else - Vector.tabulate (maxPoints, fn _ => {r = 0, g = 0, b = 0, a = 0})) - end - fun arrowX (app, arrowX) = let val { mode - , squares , arrowX = _ , arrowY , canvasWidth @@ -49,7 +31,6 @@ struct } = app in { mode = mode - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -79,7 +60,6 @@ struct let val { mode - , squares , arrowX , arrowY = _ , canvasWidth @@ -105,7 +85,6 @@ struct } = app in { mode = mode - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -139,7 +118,6 @@ struct , yClickPoints = _ , windowWidth = _ , windowHeight = _ - , squares , arrowX , arrowY , canvasWidth @@ -165,7 +143,6 @@ struct (windowWidth, windowHeight, canvasWidth, canvasHeight) in { mode = mode - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -201,7 +178,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -223,7 +199,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -257,7 +232,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -279,7 +253,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -313,7 +286,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -335,7 +307,6 @@ struct { mode = newMode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -369,7 +340,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -391,7 +361,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -425,7 +394,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -447,7 +415,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -481,7 +448,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -505,7 +471,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -539,7 +504,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -563,7 +527,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -597,7 +560,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -621,7 +583,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -655,7 +616,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -679,7 +639,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -713,7 +672,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -737,7 +695,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -771,7 +728,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX , arrowY , canvasWidth @@ -795,7 +751,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -829,7 +784,6 @@ struct , yClickPoints , windowWidth , windowHeight - , squares , arrowX = _ , arrowY = _ , canvasWidth @@ -851,7 +805,6 @@ struct { mode = mode , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowX = arrowX , arrowY = arrowY , canvasWidth = canvasWidth @@ -880,7 +833,6 @@ struct val { mode , canvasWidth = _ - , squares , arrowX , arrowY , canvasHeight @@ -914,7 +866,6 @@ struct , arrowX = arrowX , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowY = arrowY , canvasHeight = canvasHeight , windowWidth = windowWidth @@ -942,7 +893,6 @@ struct { mode , canvasHeight = _ , canvasWidth - , squares , arrowX , arrowY , windowWidth @@ -976,7 +926,6 @@ struct , arrowX = arrowX , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowY = arrowY , windowWidth = windowWidth , windowHeight = windowHeight @@ -997,75 +946,12 @@ struct } end - fun useSquares (app: app_type, squares, canvasWidth, canvasHeight) = - let - val - { mode - , canvasHeight = _ - , canvasWidth = _ - , squares = _ - , arrowX - , arrowY - , windowWidth - , windowHeight - , xClickPoints - , yClickPoints - - , showGraph - , mouseX - , mouseY - , openFilePath - , fileBrowser - , fileBrowserIdx - , r - , g - , b - , a - , layer - , layerTree - , modalNum - } = app - - val arrowX = Int.min (arrowX, canvasWidth) - val arrowY = Int.min (arrowY, canvasHeight) - val (xClickPoints, yClickPoints) = - ClickPoints.generate - (windowWidth, windowHeight, canvasWidth, canvasHeight) - in - { mode = mode - , canvasHeight = canvasHeight - , canvasWidth = canvasWidth - , arrowX = arrowX - , mouseX = mouseX - , mouseY = mouseY - , squares = squares - , arrowY = arrowY - , windowWidth = windowWidth - , windowHeight = windowHeight - , xClickPoints = xClickPoints - , yClickPoints = yClickPoints - - , showGraph = showGraph - , openFilePath = openFilePath - , fileBrowser = fileBrowser - , fileBrowserIdx = fileBrowserIdx - , r = r - , g = g - , b = b - , a = a - , layer = layer - , layerTree = layerTree - , modalNum = 0 - } - end - fun cursorColour (app, r, g, b, a) = let val { mode , canvasHeight , canvasWidth - , squares , arrowX , arrowY , windowWidth @@ -1094,7 +980,6 @@ struct , arrowX = arrowX , mouseX = mouseX , mouseY = mouseY - , squares = squares , arrowY = arrowY , windowWidth = windowWidth , windowHeight = windowHeight diff --git a/fcore/common-update.sml b/fcore/common-update.sml index bae17ac..416a79f 100644 --- a/fcore/common-update.sml +++ b/fcore/common-update.sml @@ -10,17 +10,19 @@ struct fun resizeWindow (model, width, height, dots) = let val - { squares - , canvasWidth + { canvasWidth , canvasHeight , showGraph , arrowX , arrowY , xClickPoints , yClickPoints + , layerTree , ... } = model + val maxSide = Int.max (canvasWidth, canvasHeight) + val squares = LayerTree.flatten (maxSide, layerTree) val squares = CollisionTree.toTriangles ( width @@ -46,11 +48,12 @@ struct fun getSaveSquaresMsg (model: app_type) = let - val {canvasWidth, canvasHeight, squares, ...} = model - val str = CollisionTree.toSaveString (squares, canvasWidth, canvasHeight) - val msg = SAVE_SQUARES str - in - (model, [FILE msg]) + (* todo: reimplement, saving each layer to a different line + val {canvasWidth, canvasHeight, squares, ...} = model + val str = CollisionTree.toSaveString (squares, canvasWidth, canvasHeight) + val msg = SAVE_SQUARES str + *) + in raise Fail "todo common-update.sml: reimplement saving" end fun getLoadSquaresMsg model = @@ -58,7 +61,11 @@ struct fun getExportSquaresMsg (model: app_type) = let - val {squares, canvasWidth, canvasHeight, ...} = model + val {layerTree, canvasWidth, canvasHeight, ...} = model + + val maxSide = Int.max (canvasWidth, canvasHeight) + val squares = LayerTree.flatten (maxSide, layerTree) + val exportString = CollisionTree.toExportString (squares, canvasWidth, canvasHeight) val msg = EXPORT_SQUARES exportString @@ -68,7 +75,11 @@ struct fun getCollisionMsg (model: app_type) = let - val {squares, canvasWidth, canvasHeight, modalNum, ...} = model + val {layerTree, canvasWidth, canvasHeight, modalNum, ...} = model + + val maxSide = Int.max (canvasWidth, canvasHeight) + val squares = LayerTree.flatten (maxSide, layerTree) + val exportString = CollisionTree.toCollisionString (squares, canvasWidth, canvasHeight, modalNum) diff --git a/fcore/normal-mode.sml b/fcore/normal-mode.sml index a2c428f..6e451d3 100644 --- a/fcore/normal-mode.sml +++ b/fcore/normal-mode.sml @@ -333,11 +333,7 @@ struct end fun useSquares (model, squares, canvasWidth, canvasHeight) = - let - val model = AppWith.useSquares (model, squares, canvasWidth, canvasHeight) - in - updateCanvas (model, canvasWidth, canvasHeight) - end + raise Fail "todo: reimplement" fun enterBrowseMode model = let