diff --git a/dsc b/dsc index d437c89..1f88a9c 100755 Binary files a/dsc and b/dsc differ diff --git a/fcore/common-update.sml b/fcore/common-update.sml index 266b495..8fcf46b 100644 --- a/fcore/common-update.sml +++ b/fcore/common-update.sml @@ -69,7 +69,7 @@ struct val squares = LayerTree.flatten (maxSide, layerTree) val exportString = - CollisionTree.toExportString (squares, canvasWidth, canvasHeight) + CollisionTree.toExportString (squares, canvasWidth, canvasHeight, openFilePath) val msg = EXPORT_SQUARES {output = exportString, filepath = openFilePath} in (model, [FILE msg]) diff --git a/fcore/quad-tree.sml b/fcore/quad-tree.sml index d36ef1b..c63f07a 100644 --- a/fcore/quad-tree.sml +++ b/fcore/quad-tree.sml @@ -585,7 +585,7 @@ struct item :: acc end - fun toExportString (squares, canvasWidth, canvasHeight) = + fun toExportString (squares, canvasWidth, canvasHeight, filepath) = let val size = Int.max (canvasWidth, canvasHeight) val qtree = buildTree (0, 0, size, squares) @@ -594,10 +594,12 @@ struct val f = toExportStringFolder (canvasWidth, canvasHeight) val coords = BinTree.foldr (f, bintree, []) val coords = String.concatWith ",\n" coords + + val structureName = FileString.filenameToStructureName filepath + val structureStart = String.concat ["structure ", structureName, " = struct\n"] in String.concat - [ "structure AAA = \nstruct\n" - + [ structureStart , " fun xToNdc (xOffset, xpos, scale, halfWidth) =\n" , " ((xpos * scale + xOffset) - halfWidth) / halfWidth\n\n" diff --git a/green.dsc b/green.dsc index 103ed82..e16fbe2 100644 --- a/green.dsc +++ b/green.dsc @@ -1,3 +1,3 @@ 28 32 { - [ { 0 0 0 0 0 0 0 1 } { 0 25 0 26 0 0 0 1 } { 1 7 1 9 0 0 0 1 } { 1 24 5 24 0 0 0 1 } { 1 25 3 25 184 216 248 1 } { 1 26 1 26 120 152 232 1 } { 1 27 5 27 0 0 0 1 } { 2 6 2 6 0 0 0 1 } { 2 7 2 7 184 216 248 1 } { 2 8 2 8 240 248 248 1 } { 2 9 4 9 184 216 248 1 } { 2 10 2 10 0 0 0 1 } { 2 25 2 26 184 216 248 1 } { 3 5 6 5 0 0 0 1 } { 3 6 3 6 184 216 248 1 } { 3 7 3 7 240 248 248 1 } { 3 8 3 10 184 216 248 1 } { 3 8 4 9 184 216 248 1 } { 3 11 3 16 0 0 0 1 } { 3 11 5 11 0 0 0 1 } { 3 26 3 26 120 152 232 1 } { 4 2 4 5 0 0 0 1 } { 4 6 4 6 240 248 248 1 } { 4 7 4 9 184 216 248 1 } { 4 7 5 8 184 216 248 1 } { 4 7 6 7 184 216 248 1 } { 4 10 4 10 120 152 232 1 } { 4 12 5 16 184 216 248 1 } { 4 14 9 16 184 216 248 1 } { 4 14 10 15 184 216 248 1 } { 4 17 4 18 0 0 0 1 } { 4 25 4 25 120 152 232 1 } { 4 26 5 26 64 96 184 1 } { 5 1 5 1 0 0 0 1 } { 5 2 5 2 120 152 232 1 } { 5 3 5 3 184 216 248 1 } { 5 4 6 4 120 152 232 1 } { 5 6 5 8 184 216 248 1 } { 5 9 5 9 120 152 232 1 } { 5 10 5 10 104 128 216 1 } { 5 12 5 18 184 216 248 1 } { 5 14 6 18 184 216 248 1 } { 5 14 8 17 184 216 248 1 } { 5 19 5 20 0 0 0 1 } { 5 25 5 26 64 96 184 1 } { 6 0 8 0 0 0 0 1 } { 6 1 6 1 120 152 232 1 } { 6 2 6 2 184 216 248 1 } { 6 3 6 4 120 152 232 1 } { 6 5 6 6 0 0 0 1 } { 6 8 6 8 120 152 232 1 } { 6 9 6 9 104 128 216 1 } { 6 10 6 10 0 0 0 1 } { 6 11 6 13 104 128 216 1 } { 6 14 6 19 184 216 248 1 } { 6 20 10 20 240 248 248 1 } { 6 21 6 21 0 0 0 1 } { 6 25 6 26 0 0 0 1 } { 7 1 7 1 184 216 248 1 } { 7 2 7 3 120 152 232 1 } { 7 2 9 2 120 152 232 1 } { 7 4 7 4 0 0 0 1 } { 7 5 19 6 184 216 248 1 } { 7 7 7 9 0 0 0 1 } { 7 10 8 17 184 216 248 1 } { 7 18 7 18 104 128 216 1 } { 7 19 9 21 240 248 248 1 } { 7 22 7 22 0 0 0 1 } { 8 1 8 2 120 152 232 1 } { 8 3 10 3 0 0 0 1 } { 8 4 8 17 184 216 248 1 } { 8 4 13 9 184 216 248 1 } { 8 4 21 4 184 216 248 1 } { 8 18 8 22 240 248 248 1 } { 8 18 9 21 240 248 248 1 } { 8 18 10 20 240 248 248 1 } { 8 23 9 23 0 0 0 1 } { 9 1 9 1 0 0 0 1 } { 9 10 9 13 104 128 216 1 } { 9 17 9 21 240 248 248 1 } { 9 17 10 20 240 248 248 1 } { 9 17 13 17 240 248 248 1 } { 9 22 19 22 184 216 248 1 } { 10 2 10 3 0 0 0 1 } { 10 2 11 2 0 0 0 1 } { 10 4 10 15 184 216 248 1 } { 10 4 11 11 184 216 248 1 } { 10 4 12 10 184 216 248 1 } { 10 16 10 20 240 248 248 1 } { 10 16 11 19 240 248 248 1 } { 10 16 12 18 240 248 248 1 } { 10 21 17 23 184 216 248 1 } { 10 24 11 24 0 0 0 1 } { 11 3 11 11 184 216 248 1 } { 11 3 12 10 184 216 248 1 } { 11 3 19 6 184 216 248 1 } { 11 3 20 5 184 216 248 1 } { 11 12 11 14 0 0 0 1 } { 11 15 11 19 240 248 248 1 } { 11 20 17 23 184 216 248 1 } { 12 1 18 1 0 0 0 1 } { 12 2 12 10 184 216 248 1 } { 12 2 13 9 184 216 248 1 } { 12 2 17 8 184 216 248 1 } { 12 2 18 7 184 216 248 1 } { 12 11 12 11 0 0 0 1 } { 12 15 12 15 0 0 0 1 } { 12 19 16 24 184 216 248 1 } { 12 25 18 25 0 0 0 1 } { 13 10 13 10 0 0 0 1 } { 13 16 13 16 0 0 0 1 } { 13 18 16 24 184 216 248 1 } { 13 18 17 23 184 216 248 1 } { 13 18 19 22 184 216 248 1 } { 14 9 16 9 0 0 0 1 } { 14 17 16 17 0 0 0 1 } { 17 9 21 9 240 248 248 1 } { 17 10 17 10 0 0 0 1 } { 17 16 17 16 0 0 0 1 } { 17 17 17 23 184 216 248 1 } { 17 17 19 22 184 216 248 1 } { 17 24 17 24 120 152 232 1 } { 17 29 17 30 0 0 0 1 } { 18 8 20 10 240 248 248 1 } { 18 11 18 11 0 0 0 1 } { 18 15 18 15 0 0 0 1 } { 18 16 19 22 184 216 248 1 } { 18 16 21 21 184 216 248 1 } { 18 23 19 23 120 152 232 1 } { 18 24 18 24 104 128 216 1 } { 18 28 22 28 0 0 0 1 } { 18 29 20 29 240 248 248 1 } { 18 30 18 30 184 216 248 1 } { 18 31 22 32 0 0 0 1 } { 19 2 20 2 0 0 0 1 } { 19 7 19 11 240 248 248 1 } { 19 7 20 10 240 248 248 1 } { 19 12 19 14 0 0 0 1 } { 19 15 19 22 184 216 248 1 } { 19 15 21 21 184 216 248 1 } { 19 24 20 24 0 0 0 1 } { 19 29 19 30 240 248 248 1 } { 20 6 20 10 240 248 248 1 } { 20 6 21 9 240 248 248 1 } { 20 6 22 8 240 248 248 1 } { 20 6 24 6 240 248 248 1 } { 20 11 21 21 184 216 248 1 } { 20 11 22 20 184 216 248 1 } { 20 11 24 17 184 216 248 1 } { 20 22 21 22 120 152 232 1 } { 20 23 20 23 104 128 216 1 } { 20 30 20 30 184 216 248 1 } { 21 3 22 3 0 0 0 1 } { 21 5 21 9 240 248 248 1 } { 21 5 22 8 240 248 248 1 } { 21 5 23 7 240 248 248 1 } { 21 10 21 21 184 216 248 1 } { 21 10 22 20 184 216 248 1 } { 21 10 26 13 184 216 248 1 } { 21 23 22 23 0 0 0 1 } { 21 29 21 29 184 216 248 1 } { 21 30 22 30 120 152 232 1 } { 22 4 22 8 240 248 248 1 } { 22 9 22 20 184 216 248 1 } { 22 9 23 19 184 216 248 1 } { 22 9 24 17 184 216 248 1 } { 22 21 22 21 120 152 232 1 } { 22 22 22 22 104 128 216 1 } { 22 29 22 30 120 152 232 1 } { 23 4 23 4 0 0 0 1 } { 23 8 23 19 184 216 248 1 } { 23 8 24 17 184 216 248 1 } { 23 8 25 15 184 216 248 1 } { 23 20 23 20 120 152 232 1 } { 23 21 23 21 104 128 216 1 } { 23 22 23 22 0 0 0 1 } { 23 29 23 30 0 0 0 1 } { 24 5 24 5 0 0 0 1 } { 24 7 24 17 184 216 248 1 } { 24 18 24 19 120 152 232 1 } { 24 20 24 20 104 128 216 1 } { 24 21 24 21 0 0 0 1 } { 25 6 25 7 0 0 0 1 } { 25 16 25 17 120 152 232 1 } { 25 18 25 18 104 128 216 1 } { 25 19 25 20 0 0 0 1 } { 26 8 26 9 0 0 0 1 } { 26 14 26 15 120 152 232 1 } { 26 16 26 16 104 128 216 1 } { 26 17 26 18 0 0 0 1 } { 27 10 27 16 0 0 0 1 } ] + [ { 0 25 0 26 0 0 0 1 } { 1 7 1 9 0 0 0 1 } { 1 24 5 24 0 0 0 1 } { 1 25 3 25 184 216 248 1 } { 1 26 1 26 120 152 232 1 } { 1 27 5 27 0 0 0 1 } { 2 6 2 6 0 0 0 1 } { 2 7 2 7 184 216 248 1 } { 2 8 2 8 240 248 248 1 } { 2 9 4 9 184 216 248 1 } { 2 10 2 10 0 0 0 1 } { 2 25 2 26 184 216 248 1 } { 3 5 6 5 0 0 0 1 } { 3 6 3 6 184 216 248 1 } { 3 7 3 7 240 248 248 1 } { 3 8 3 10 184 216 248 1 } { 3 8 4 9 184 216 248 1 } { 3 11 3 16 0 0 0 1 } { 3 11 5 11 0 0 0 1 } { 3 26 3 26 120 152 232 1 } { 4 2 4 5 0 0 0 1 } { 4 6 4 6 240 248 248 1 } { 4 7 4 9 184 216 248 1 } { 4 7 5 8 184 216 248 1 } { 4 7 6 7 184 216 248 1 } { 4 10 4 10 120 152 232 1 } { 4 12 5 16 184 216 248 1 } { 4 14 9 16 184 216 248 1 } { 4 14 10 15 184 216 248 1 } { 4 17 4 18 0 0 0 1 } { 4 25 4 25 120 152 232 1 } { 4 26 5 26 64 96 184 1 } { 5 1 5 1 0 0 0 1 } { 5 2 5 2 120 152 232 1 } { 5 3 5 3 184 216 248 1 } { 5 4 6 4 120 152 232 1 } { 5 6 5 8 184 216 248 1 } { 5 9 5 9 120 152 232 1 } { 5 10 5 10 104 128 216 1 } { 5 12 5 18 184 216 248 1 } { 5 14 6 18 184 216 248 1 } { 5 14 8 17 184 216 248 1 } { 5 19 5 20 0 0 0 1 } { 5 25 5 26 64 96 184 1 } { 6 0 8 0 0 0 0 1 } { 6 1 6 1 120 152 232 1 } { 6 2 6 2 184 216 248 1 } { 6 3 6 4 120 152 232 1 } { 6 5 6 6 0 0 0 1 } { 6 8 6 8 120 152 232 1 } { 6 9 6 9 104 128 216 1 } { 6 10 6 10 0 0 0 1 } { 6 11 6 13 104 128 216 1 } { 6 14 6 19 184 216 248 1 } { 6 20 10 20 240 248 248 1 } { 6 21 6 21 0 0 0 1 } { 6 25 6 26 0 0 0 1 } { 7 1 7 1 184 216 248 1 } { 7 2 7 3 120 152 232 1 } { 7 2 9 2 120 152 232 1 } { 7 4 7 4 0 0 0 1 } { 7 5 19 6 184 216 248 1 } { 7 7 7 9 0 0 0 1 } { 7 10 8 17 184 216 248 1 } { 7 18 7 18 104 128 216 1 } { 7 19 9 21 240 248 248 1 } { 7 22 7 22 0 0 0 1 } { 8 1 8 2 120 152 232 1 } { 8 3 10 3 0 0 0 1 } { 8 4 8 17 184 216 248 1 } { 8 4 13 9 184 216 248 1 } { 8 4 21 4 184 216 248 1 } { 8 18 8 22 240 248 248 1 } { 8 18 9 21 240 248 248 1 } { 8 18 10 20 240 248 248 1 } { 8 23 9 23 0 0 0 1 } { 9 1 9 1 0 0 0 1 } { 9 10 9 13 104 128 216 1 } { 9 17 9 21 240 248 248 1 } { 9 17 10 20 240 248 248 1 } { 9 17 13 17 240 248 248 1 } { 9 22 19 22 184 216 248 1 } { 10 2 10 3 0 0 0 1 } { 10 2 11 2 0 0 0 1 } { 10 4 10 15 184 216 248 1 } { 10 4 11 11 184 216 248 1 } { 10 4 12 10 184 216 248 1 } { 10 16 10 20 240 248 248 1 } { 10 16 11 19 240 248 248 1 } { 10 16 12 18 240 248 248 1 } { 10 21 17 23 184 216 248 1 } { 10 24 11 24 0 0 0 1 } { 11 3 11 11 184 216 248 1 } { 11 3 12 10 184 216 248 1 } { 11 3 19 6 184 216 248 1 } { 11 3 20 5 184 216 248 1 } { 11 12 11 14 0 0 0 1 } { 11 15 11 19 240 248 248 1 } { 11 20 17 23 184 216 248 1 } { 12 1 18 1 0 0 0 1 } { 12 2 12 10 184 216 248 1 } { 12 2 13 9 184 216 248 1 } { 12 2 17 8 184 216 248 1 } { 12 2 18 7 184 216 248 1 } { 12 11 12 11 0 0 0 1 } { 12 15 12 15 0 0 0 1 } { 12 19 16 24 184 216 248 1 } { 12 25 18 25 0 0 0 1 } { 13 10 13 10 0 0 0 1 } { 13 16 13 16 0 0 0 1 } { 13 18 16 24 184 216 248 1 } { 13 18 17 23 184 216 248 1 } { 13 18 19 22 184 216 248 1 } { 14 9 16 9 0 0 0 1 } { 14 17 16 17 0 0 0 1 } { 17 9 21 9 240 248 248 1 } { 17 10 17 10 0 0 0 1 } { 17 16 17 16 0 0 0 1 } { 17 17 17 23 184 216 248 1 } { 17 17 19 22 184 216 248 1 } { 17 24 17 24 120 152 232 1 } { 17 29 17 30 0 0 0 1 } { 18 8 20 10 240 248 248 1 } { 18 11 18 11 0 0 0 1 } { 18 15 18 15 0 0 0 1 } { 18 16 19 22 184 216 248 1 } { 18 16 21 21 184 216 248 1 } { 18 23 19 23 120 152 232 1 } { 18 24 18 24 104 128 216 1 } { 18 28 22 28 0 0 0 1 } { 18 29 20 29 240 248 248 1 } { 18 30 18 30 184 216 248 1 } { 18 31 22 32 0 0 0 1 } { 19 2 20 2 0 0 0 1 } { 19 7 19 11 240 248 248 1 } { 19 7 20 10 240 248 248 1 } { 19 12 19 14 0 0 0 1 } { 19 15 19 22 184 216 248 1 } { 19 15 21 21 184 216 248 1 } { 19 24 20 24 0 0 0 1 } { 19 29 19 30 240 248 248 1 } { 20 6 20 10 240 248 248 1 } { 20 6 21 9 240 248 248 1 } { 20 6 22 8 240 248 248 1 } { 20 6 24 6 240 248 248 1 } { 20 11 21 21 184 216 248 1 } { 20 11 22 20 184 216 248 1 } { 20 11 24 17 184 216 248 1 } { 20 22 21 22 120 152 232 1 } { 20 23 20 23 104 128 216 1 } { 20 30 20 30 184 216 248 1 } { 21 3 22 3 0 0 0 1 } { 21 5 21 9 240 248 248 1 } { 21 5 22 8 240 248 248 1 } { 21 5 23 7 240 248 248 1 } { 21 10 21 21 184 216 248 1 } { 21 10 22 20 184 216 248 1 } { 21 10 26 13 184 216 248 1 } { 21 23 22 23 0 0 0 1 } { 21 29 21 29 184 216 248 1 } { 21 30 22 30 120 152 232 1 } { 22 4 22 8 240 248 248 1 } { 22 9 22 20 184 216 248 1 } { 22 9 23 19 184 216 248 1 } { 22 9 24 17 184 216 248 1 } { 22 21 22 21 120 152 232 1 } { 22 22 22 22 104 128 216 1 } { 22 29 22 30 120 152 232 1 } { 23 4 23 4 0 0 0 1 } { 23 8 23 19 184 216 248 1 } { 23 8 24 17 184 216 248 1 } { 23 8 25 15 184 216 248 1 } { 23 20 23 20 120 152 232 1 } { 23 21 23 21 104 128 216 1 } { 23 22 23 22 0 0 0 1 } { 23 29 23 30 0 0 0 1 } { 24 5 24 5 0 0 0 1 } { 24 7 24 17 184 216 248 1 } { 24 18 24 19 120 152 232 1 } { 24 20 24 20 104 128 216 1 } { 24 21 24 21 0 0 0 1 } { 25 6 25 7 0 0 0 1 } { 25 16 25 17 120 152 232 1 } { 25 18 25 18 104 128 216 1 } { 25 19 25 20 0 0 0 1 } { 26 8 26 9 0 0 0 1 } { 26 14 26 15 120 152 232 1 } { 26 16 26 16 104 128 216 1 } { 26 17 26 18 0 0 0 1 } { 27 10 27 16 0 0 0 1 } ] } diff --git a/imperative-shell/converter.sml b/imperative-shell/converter.sml index 46a8c79..9b736a5 100644 --- a/imperative-shell/converter.sml +++ b/imperative-shell/converter.sml @@ -5,7 +5,7 @@ struct SOME line => loadIO (io, str ^ line) | NONE => str - fun convertFile (fullPath, filename) = + fun convertFile fullPath = let val io = TextIO.openIn fullPath val text = loadIO (io, "") @@ -17,7 +17,7 @@ struct val maxSide = Int.max (canvasWidth, canvasHeight) val squares = LayerTree.flatten (maxSide, tree) val exportString = - CollisionTree.toExportString (squares, canvasWidth, canvasHeight) + CollisionTree.toExportString (squares, canvasWidth, canvasHeight, fullPath) val pathWithoutExtension = String.substring (fullPath, 0, String.size fullPath - 4) @@ -57,7 +57,7 @@ struct () else if endsWithDsc path then (* is a file ending with .dsc extension *) - convertFile (folderPath, path) + convertFile folderPath else (* is a file but doesn't end with .dsc, so ignore *) ()