From c9c0babf3cd994247d4cf62cb884a5cf0827635f Mon Sep 17 00:00:00 2001 From: Dariusz L Date: Thu, 3 Jul 2025 02:40:07 +0200 Subject: [PATCH] Add mask drawing mode to canvas interactions Introduces support for a 'drawingMask' interaction mode in CanvasInteractions. Mouse events are now delegated to the maskTool when in this mode, and the canvas is re-rendered after each relevant event. --- js/CanvasInteractions.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/js/CanvasInteractions.js b/js/CanvasInteractions.js index 6c04ce5..15885cf 100644 --- a/js/CanvasInteractions.js +++ b/js/CanvasInteractions.js @@ -70,6 +70,12 @@ export class CanvasInteractions { const worldCoords = this.canvas.getMouseWorldCoordinates(e); const viewCoords = this.canvas.getMouseViewCoordinates(e); + if (this.interaction.mode === 'drawingMask') { + this.canvas.maskTool.handleMouseDown(worldCoords, viewCoords); + this.canvas.render(); + return; + } + // --- Ostateczna, poprawna kolejność sprawdzania --- // 1. Akcje globalne z modyfikatorami (mają najwyższy priorytet) @@ -115,6 +121,7 @@ export class CanvasInteractions { handleMouseMove(e) { const worldCoords = this.canvas.getMouseWorldCoordinates(e); + const viewCoords = this.canvas.getMouseViewCoordinates(e); this.canvas.lastMousePosition = worldCoords; // Zawsze aktualizuj ostatnią pozycję myszy // Sprawdź, czy rozpocząć przeciąganie @@ -131,6 +138,10 @@ export class CanvasInteractions { } switch (this.interaction.mode) { + case 'drawingMask': + this.canvas.maskTool.handleMouseMove(worldCoords, viewCoords); + this.canvas.render(); + break; case 'panning': this.panViewport(e); break; @@ -156,6 +167,13 @@ export class CanvasInteractions { } handleMouseUp(e) { + const viewCoords = this.canvas.getMouseViewCoordinates(e); + if (this.interaction.mode === 'drawingMask') { + this.canvas.maskTool.handleMouseUp(viewCoords); + this.canvas.render(); + return; + } + if (this.interaction.mode === 'resizingCanvas') { this.finalizeCanvasResize(); }