From 46bd6a8adbf25f38f3f7777589e0e7b63b10943d Mon Sep 17 00:00:00 2001 From: npalomba Date: Tue, 2 Apr 2019 19:42:28 +0200 Subject: [PATCH] Added eraser resize when right clicking while having the eraser tool selected. Signed-off-by: npalomba --- js/_mouseEvents.js | 43 ++++++++++++++++++++++++++++++++----------- js/_updateCursor.js | 4 ++-- js/_variables.js | 1 + 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/js/_mouseEvents.js b/js/_mouseEvents.js index 02895e8..2ecc472 100644 --- a/js/_mouseEvents.js +++ b/js/_mouseEvents.js @@ -27,8 +27,12 @@ window.addEventListener("mousedown", function (mouseEvent) { } else if (currentTool == 'pencil' && mouseEvent.which == 3) { currentTool = 'resize-brush'; - prevBrushSize=brushSize; + prevBrushSize = brushSize; } + else if (currentTool == 'eraser' && mouseEvent.which == 3) { + currentTool = 'resize-eraser'; + prevEraserSize = eraserSize; + } if (currentTool == 'eyedropper' && mouseEvent.target == currentLayer.canvas) eyedropperPreview.style.display = 'block'; @@ -205,17 +209,34 @@ function draw (mouseEvent) { //var roundingAmount = 20 - Math.round(distanceFromClick/10); //this doesnt work in reverse... because... it's not basing it off of the brush size which it should be var brushSizeChange = Math.round(distanceFromClick/10); - var newBrushSize = prevBrushSize + brushSizeChange; - - //set the brush to the new size as long as its bigger than 1 - brushSize = Math.max(1,newBrushSize); - - //fix offset so the cursor stays centered - brushPreview.style.left = lastPos[0] + currentLayer.canvas.offsetLeft - brushSize * zoom / 2 + 'px'; - brushPreview.style.top = lastPos[1] + currentLayer.canvas.offsetTop - brushSize * zoom / 2 + 'px'; + var newBrushSize = prevBrushSize + brushSizeChange; - updateCursor(); - } + //set the brush to the new size as long as its bigger than 1 + brushSize = Math.max(1,newBrushSize); + + //fix offset so the cursor stays centered + brushPreview.style.left = lastPos[0] + currentLayer.canvas.offsetLeft - brushSize * zoom / 2 + 'px'; + brushPreview.style.top = lastPos[1] + currentLayer.canvas.offsetTop - brushSize * zoom / 2 + 'px'; + + updateCursor(); + } + else if (currentTool == 'resize-eraser' && dragging) { + //get new brush size based on x distance from original clicking location + var distanceFromClick = cursorLocation[0] - lastPos[0]; + //var roundingAmount = 20 - Math.round(distanceFromClick/10); + //this doesnt work in reverse... because... it's not basing it off of the brush size which it should be + var eraserSizeChange = Math.round(distanceFromClick/10); + var newEraserSizeChange = prevEraserSize + eraserSizeChange; + + //set the brush to the new size as long as its bigger than 1 + eraserSize = Math.max(1,newEraserSizeChange); + + //fix offset so the cursor stays centered + brushPreview.style.left = lastPos[0] + currentLayer.canvas.offsetLeft - eraserSize * zoom / 2 + 'px'; + brushPreview.style.top = lastPos[1] + currentLayer.canvas.offsetTop - eraserSize * zoom / 2 + 'px'; + + updateCursor(); + } } //mousewheel scrroll diff --git a/js/_updateCursor.js b/js/_updateCursor.js index 281be27..bc919a9 100644 --- a/js/_updateCursor.js +++ b/js/_updateCursor.js @@ -6,7 +6,7 @@ function updateCursor () { brushPreview.style.display = 'block'; brushPreview.style.width = brushSize * zoom + 'px'; brushPreview.style.height = brushSize * zoom + 'px'; - } else if (currentTool == 'eraser') { + } else if (currentTool == 'eraser' || currentTool == 'resize-eraser') { // Size management for the eraser console.log("Eraser size: " + eraserSize); canvasView.style.cursor = 'crosshair'; @@ -33,6 +33,6 @@ function updateCursor () { if (currentTool == 'zoom') canvasView.style.cursor = "url('/pixel-editor/zoom-in.png'), auto"; - if (currentTool == 'resize-brush') + if (currentTool == 'resize-brush' || currentTool == 'resize-eraser') canvasView.style.cursor = 'default'; } \ No newline at end of file diff --git a/js/_variables.js b/js/_variables.js index 2852b3c..7753952 100644 --- a/js/_variables.js +++ b/js/_variables.js @@ -7,6 +7,7 @@ var currentToolTemp = 'pencil'; var brushSize = 1; var eraserSize = 1; var prevBrushSize = 1; +var prevEraserSize = 1; var dialogueOpen = false; var documentCreated = false;