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.