diff --git a/web/public/bitmap_editor.html b/web/public/bitmap_editor.html index 5e3bd981..1606b696 100644 --- a/web/public/bitmap_editor.html +++ b/web/public/bitmap_editor.html @@ -27,22 +27,20 @@ baseJ: 0, drawHeight: 0, INVERT_MODE: false, - comments: true, + comments: true }; var state = {}; try { var savedState = localStorage.getItem(STATE_KEY); if (savedState) { + var parsedState = JSON.parse(savedState); state = Object.assign({}, defaults, parsedState); } else { state = defaults; } } catch (error) { - console.error( - "Error parsing state from localStorage. Using defaults.", - error, - ); + console.error("Error parsing state from localStorage. Using defaults.", error); state = defaults; } // initialize global variables from state @@ -145,7 +143,7 @@ try { Init(); } catch (error) { - console.log(error); + console.log(error) Reset(); } } @@ -586,17 +584,12 @@ } generateCode = document.getElementById("generatedCode"); - let subroutineName = document.getElementById("subroutineName").value; - if (document.getElementById("changeNameOnShift").checked) { - subroutineName = - subroutineName + - (Math.abs(currentJShift) / marginSaveFrames).toString(); - } + // Fixed name/signature requirements + let subroutineName = "draw"; - if (document.getElementById("jackCode").checked) { + if (currentCodeMode === "jack") { + // Always generate a Jack function with this signature let subroutineType = "function"; - if (document.getElementById("methodSubroutine").checked) - subroutineType = "method"; generateCode.value = subroutineType + @@ -621,7 +614,7 @@ } } generateCode.value = generateCode.value + "\treturn;\n}"; - } else { + } else { // hack assembly rowsOfWords = GetRowsFromWordColumns(colsOfWords); generateCode.value = "(" + subroutineName + ")\n"; @@ -856,31 +849,35 @@ newGrid[i][j] = grid[i][j]; } } - saveGrid(newGrid); saveState(); Init(); // init loads the new grid into grid } } - function ChangeName() { - if (document.getElementById("subroutineName").value == "") - document.getElementById("subroutineName").value = "draw"; - GenerateCode(true); - } function ChangeCodeType() { - if (document.getElementById("hackAssemblyCode").checked) { - document.getElementById("baseTopLeft").click(); - document.getElementById("baseBottomLeft").disabled = true; - document.getElementById("codeTypeHeader").textContent = - "Generated Hack Assembly"; + // Update header text based on current mode + if (currentCodeMode === "hack") { + document.getElementById("hackTab").classList.add("active"); + document.getElementById("jackTab").classList.remove("active"); } else { - document.getElementById("baseBottomLeft").disabled = false; - document.getElementById("codeTypeHeader").textContent = - "Generated Jack Code"; + document.getElementById("jackTab").classList.add("active"); + document.getElementById("hackTab").classList.remove("active"); } GenerateCode(); } + // I made this global for ezier... + var currentCodeMode = "jack"; + + // convenience helpers for toggle controls + function SwitchToHack() { + currentCodeMode = "hack"; + ChangeCodeType(); + } + function SwitchToJack() { + currentCodeMode = "jack"; + ChangeCodeType(); + } function UpdateMarginType() { if (document.getElementById("fitToDrawing").checked) { document.getElementById("marginSaveFramestd").hidden = false; @@ -898,25 +895,83 @@ GenerateCode(); } - - + +

Jack Bitmap Editor v2.9

-

- See here for - updates, feature documentation, and contributions. + +

Use this tool for drawing bitmap images and generating Hack or Jack code.
+ Then copy-pase the generated code into your Hack or Jack program. Change the generated label / function name, as needed.

-

+ +

- +
@@ -1008,9 +1063,8 @@

Jack Bitmap Editor v2.9

@@ -1024,58 +1078,7 @@

Jack Bitmap Editor v2.9

Bitmap - Generated Jack Code +
+ + + x + + + + + + + +
+
+
+ + +
- - - - - -
-
- - - x - - - - - - - -
-
- - +
@@ -1121,99 +1124,25 @@

Jack Bitmap Editor v2.9

- + + -
+ - + - - +
- - - - - - - -
-
- - - -
-
- - - - - - - -
- - - - - - -
- - - - - -
- + + + +