From ed4999ea6b374eaeeb97a012b6e8fbf9fffad168 Mon Sep 17 00:00:00 2001 From: Noob Date: Sat, 24 May 2025 17:54:09 -0400 Subject: Add undo and clear buttons, and ctrl+z shortcut --- views/partials/canvas.html | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) (limited to 'views/partials') diff --git a/views/partials/canvas.html b/views/partials/canvas.html index d8323f2..f8d73ec 100644 --- a/views/partials/canvas.html +++ b/views/partials/canvas.html @@ -1,10 +1,11 @@ -
+



pen size :
+

Pro tip: it case it ain't obvious you can use white as an eraser
@@ -19,13 +20,34 @@ //ctx.fillStyle = "black"; let isDrawing = false; + let undoStack = []; + let maxUndoSteps = 20; // Adjust as needed + + function saveState() { + undoStack.push(ctx.getImageData(0, 0, canvas.width, canvas.height)); + if (undoStack.length > maxUndoSteps) { + undoStack.shift(); + } + } + function undo() { + if (undoStack.length > 0) { + const imageData = undoStack.pop(); + ctx.putImageData(imageData, 0, 0); + } + } + function clear() { + saveState(); + ctx.clearRect(0, 0, canvas.width, canvas.height); + } function startDrawing(event) { event.preventDefault(); + saveState(); isDrawing = true; draw(event); } function startDrawingTouch(event) { event.preventDefault(); + saveState(); isDrawing = true; drawTouch(event); } @@ -80,6 +102,12 @@ const sendbtn = document.getElementById('sendbtn'); sendbtn.addEventListener("click", sendPic); + const undobtn = document.getElementById('undobtn'); + undobtn.addEventListener("click", undo); + + const clearbtn = document.getElementById('clearbtn'); + clearbtn.addEventListener("click", clear); + const blackbtn = document.getElementById('blackbtn'); blackbtn.addEventListener("click", () => { ctx.strokeStyle="#000000"; @@ -125,7 +153,13 @@ ctx.lineWidth=pensize.value; console.log(pensize.value) }); - - + // Keyboard shortcut for undo + document.addEventListener("keydown", function(event) { + if (event.ctrlKey && event.key === 'z') { + undo(); + } + }); + + \ No newline at end of file -- cgit v1.2.3