From e0572c82a15b2a52ea1f29c2d9d5fc6c20640175 Mon Sep 17 00:00:00 2001 From: kts of kettek Date: Thu, 15 Feb 2024 11:19:40 -0800 Subject: [PATCH] Only show shape preview if using a brush --- frontend/src/sections/Editor2D.svelte | 33 ++++++++++++++------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/frontend/src/sections/Editor2D.svelte b/frontend/src/sections/Editor2D.svelte index 57bfa10..1d0ca96 100644 --- a/frontend/src/sections/Editor2D.svelte +++ b/frontend/src/sections/Editor2D.svelte @@ -25,6 +25,7 @@ let mousePixelX: number = 0 let mousePixelY: number = 0 + export let currentTool: Tool export let primaryColorIndex: number export let secondaryColorIndex: number export let brushSize: number @@ -164,21 +165,23 @@ ctx.lineWidth = 1 // Draw brush preview. - let shape: PixelPosition[] - if (brushType === 'square' || brushSize <= 2) { - // FIXME: This is daft to adjust +1,+1 for size 2 -- without this, the rect preview draws one pixel offset to the top-left, which is not the same as when the filled rect is placed. - if (brushSize === 2) { - shape = FilledSquare(1, 1, brushSize, 1) - } else { - shape = FilledSquare(0, 0, brushSize, 1) + if (currentTool instanceof BrushTool) { + let shape: PixelPosition[] + if (brushType === 'square' || brushSize <= 2) { + // FIXME: This is daft to adjust +1,+1 for size 2 -- without this, the rect preview draws one pixel offset to the top-left, which is not the same as when the filled rect is placed. + if (brushSize === 2) { + shape = FilledSquare(1, 1, brushSize, 1) + } else { + shape = FilledSquare(0, 0, brushSize, 1) + } + } else if (brushType === 'circle') { + shape = FilledCircle(0, 0, brushSize-2, 1) + } + let {r, g, b, a }= file.canvas.getPaletteAsRGBA(primaryColorIndex) + ctx.fillStyle = `rgba(${r},${g},${b},${a})` + for (let i = 0; i < shape.length; i++) { + ctx.fillRect(offsetX*zoom+(mousePixelX+shape[i].x)*zoom, offsetY*zoom+(mousePixelY+shape[i].y)*zoom, zoom, zoom) } - } else if (brushType === 'circle') { - shape = FilledCircle(0, 0, brushSize-2, 1) - } - let {r, g, b, a }= file.canvas.getPaletteAsRGBA(primaryColorIndex) - ctx.fillStyle = `rgba(${r},${g},${b},${a})` - for (let i = 0; i < shape.length; i++) { - ctx.fillRect(offsetX*zoom+(mousePixelX+shape[i].x)*zoom, offsetY*zoom+(mousePixelY+shape[i].y)*zoom, zoom, zoom) } // Draw zoomed pixel-sized square where mouse is. if (zoom > 1) { @@ -206,8 +209,6 @@ } } - export let currentTool: Tool - function canvasMousedown(node) { let buttons: Set = new Set() let x: number = 0