add layer field to app type, as preparation for switching to layer tree

This commit is contained in:
2025-08-09 08:15:11 +01:00
parent 8e475a3abe
commit 8d855be27a
5 changed files with 108 additions and 3 deletions

BIN
dotscape

Binary file not shown.

View File

@@ -47,6 +47,7 @@ struct
, g = 0
, b = 0
, a = 1
, layer = 0
, modalNum = 0
, undo = []
, redo = []

View File

@@ -33,6 +33,7 @@ struct
, g: int
, b: int
, a: int
, layer: int
, modalNum: int
, undo: square list
, redo: square list

View File

@@ -51,6 +51,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -80,6 +81,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -110,6 +112,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -139,6 +142,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -169,6 +173,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -195,6 +200,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -225,6 +231,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -251,6 +258,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -281,6 +289,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -307,6 +316,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -337,6 +347,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -367,6 +378,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -397,6 +409,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -423,6 +436,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -453,6 +467,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -479,6 +494,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -509,6 +525,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -535,6 +552,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -565,6 +583,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -591,6 +610,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -621,6 +641,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -647,6 +668,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = modalNum
, undo = undo
, redo = redo
@@ -677,6 +699,7 @@ struct
, g
, b
, a
, layer
, modalNum = prevNum
, undo
, redo
@@ -705,6 +728,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = newNum
, undo = undo
, redo = redo
@@ -735,6 +759,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -763,6 +788,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = 0
, undo = undo
, redo = redo
@@ -793,6 +819,7 @@ struct
, g = _
, b
, a
, layer
, modalNum
, undo
, redo
@@ -821,6 +848,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = 0
, undo = undo
, redo = redo
@@ -851,6 +879,7 @@ struct
, g
, b = _
, a
, layer
, modalNum
, undo
, redo
@@ -879,6 +908,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = 0
, undo = undo
, redo = redo
@@ -909,6 +939,7 @@ struct
, g
, b
, a = _
, layer
, modalNum
, undo
, redo
@@ -937,12 +968,73 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = 0
, undo = undo
, redo = redo
}
end
fun layer (app: app_type) : app_type =
let
val
{ mode
, mouseX
, mouseY
, xClickPoints
, yClickPoints
, windowWidth
, windowHeight
, squares
, arrowX
, arrowY
, canvasWidth
, canvasHeight
, showGraph
, openFilePath
, fileBrowser
, fileBrowserIdx
, r
, g
, b
, a
, layer = _
, modalNum
, undo
, redo
} = app
val layer = modalNum
in
{ mode = mode
, mouseX = mouseX
, mouseY = mouseY
, squares = squares
, arrowX = arrowX
, arrowY = arrowY
, canvasWidth = canvasWidth
, canvasHeight = canvasHeight
, 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
, modalNum = modalNum
, undo = undo
, redo = redo
}
end
fun canvasWidth (app: app_type, newCanvasWidth) =
let
val
@@ -967,6 +1059,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -999,6 +1092,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = 0
, undo = undo
, redo = redo
@@ -1029,6 +1123,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -1061,6 +1156,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = 0
, undo = undo
, redo = redo
@@ -1091,6 +1187,7 @@ struct
, g
, b
, a
, layer
, modalNum
, undo
, redo
@@ -1123,6 +1220,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = 0
, undo = undo
, redo = redo
@@ -1153,6 +1251,7 @@ struct
, g = _
, b = _
, a = _
, layer
, modalNum
, undo
, redo
@@ -1179,6 +1278,7 @@ struct
, g = g
, b = b
, a = a
, layer = layer
, modalNum = 0
, undo = undo
, redo = redo

View File

@@ -1,16 +1,19 @@
structure LayerTree =
struct
type square = {r: int, g: int, b: int, a: int}
val emptyPixel = {r = 0, g = 0, b = 0, a = 0}
type grid = square vector vector
fun isBlank ({a, ...}: square) = a = 0
datatype tree =
NODE of {key: int, value: grid, left: tree, right: tree}
| LEAF
val emptyPixel = {r = 0, g = 0, b = 0, a = 0}
val emptyTree = LEAF
fun isBlank ({a, ...}: square) = a = 0
fun insert (newKey, newValue, tree) =
case tree of
LEAF => NODE {key = newKey, value = newValue, left = LEAF, right = LEAF}