add function to quad tree to turn items into strings (for later saving to file)

This commit is contained in:
2025-07-12 03:38:20 +01:00
parent 21512cc979
commit 04bb7a18c0
15 changed files with 50 additions and 15 deletions

BIN
dotscape

Binary file not shown.

View File

@@ -28,7 +28,7 @@ fcore/browse-mode.sml
fcore/app-update.sml
(* pure file parsing functions *)
fcore/parse-file.sml
fcore/parser/parser.mlb
(* IMPERATIVE SHELL *)
$(SML_LIB)/basis/mlton.mlb

View File

@@ -1,5 +0,0 @@
structure ParseFile =
struct
(* unimplemented *)
fun parseLine line = NONE
end

View File

@@ -3,24 +3,23 @@ struct
fun make (canvasWidth, canvasHeight) =
let
val maxPoints = Int.max (canvasWidth, canvasHeight)
val emptyYAxis = Vector.tabulate (maxPoints, fn _ =>
{r = 0, g = 0, b = 0, a = 0})
val emptyYAxis = Vector.tabulate (maxPoints, fn _ => {r = 0, g = 0, b = 0, a = 0})
in
Vector.tabulate (maxPoints, fn _ => emptyYAxis)
end
local
fun loopY (yAxis, x, ex, y, ey, colour) =
if y > ey then
yAxis
if y > ey then yAxis
else
let val yAxis = Vector.update (yAxis, y, colour)
in loopY (yAxis, x, ex, y + 1, ey, colour)
let
val yAxis = Vector.update (yAxis, y, colour)
in
loopY (yAxis, x, ex, y + 1, ey, colour)
end
fun loopX (grid, x, ex, y, ey, colour) =
if x > ex then
grid
if x > ex then grid
else
let
val yAxis = Vector.sub (grid, x)

7
fcore/parser/tokens.sml Normal file
View File

@@ -0,0 +1,7 @@
structure Tokens =
struct
datatype t =
L_BRACE
| R_BRACE
| INT of int
end

View File

@@ -1 +0,0 @@
structure Tokens = struct datatype t = L_BRACE | R_BRACE | INT of int end

View File

@@ -500,4 +500,39 @@ struct
in
Vector.concat vec
end
fun toStringFolder ({x, ex, y, ey, data = {r, g, b, a}}, acc) =
let
val item = String.concat
[ "{"
, Int.toString x
, " "
, Int.toString y
, " "
, Int.toString ex
, " "
, Int.toString ey
, " "
, Int.toString r
, " "
, Int.toString g
, " "
, Int.toString b
, " "
, Int.toString a
, " }"
]
in
item :: acc
end
fun toString (squares, size) =
let
val qtree = buildTree (0, 0, size, squares)
val bintree = merge (qtree, squares)
val vec = BinTree.foldr (toStringFolder, bintree, [])
in
Vector.concat vec
end
end