From b3e5c035d1b661842feaf08a58cd2b3bfa587b75 Mon Sep 17 00:00:00 2001 From: bruefire Date: Sun, 31 Mar 2024 11:26:00 +0900 Subject: [PATCH] modified the magic wand logics for erasing. --- js/MagicWand.js | 5 +++-- js/MaskEditorForVframes.js | 7 +++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/js/MagicWand.js b/js/MagicWand.js index c61f196..7f53ead 100644 --- a/js/MagicWand.js +++ b/js/MagicWand.js @@ -70,7 +70,7 @@ class MagicWand { newMaskData.data[index + 0] = parseInt(this.maskingColor.substr(1,2), 16); newMaskData.data[index + 1] = parseInt(this.maskingColor.substr(3,2), 16); newMaskData.data[index + 2] = parseInt(this.maskingColor.substr(5,2), 16); - newMaskData.data[index + 3] = 255; + newMaskData.data[index + 3] = this.adding ? 255 : 0; }); newMaskCtx.putImageData(newMaskData, 0, 0); @@ -82,7 +82,7 @@ class MagicWand { return newMaskCvs; } - constructor(imageCanvas, maskCanvas, sketchCanvas, colorStr, threshold) { + constructor(imageCanvas, maskCanvas, sketchCanvas, colorStr, threshold, adding) { this.targetCanvas = document.createElement('canvas'); let trgCvs = this.targetCanvas; trgCvs.width = maskCanvas.width; @@ -98,6 +98,7 @@ class MagicWand { this.maskingColor = colorStr; this.threshold = threshold; + this.adding = adding; } } diff --git a/js/MaskEditorForVframes.js b/js/MaskEditorForVframes.js index 08e3c91..173f47b 100644 --- a/js/MaskEditorForVframes.js +++ b/js/MaskEditorForVframes.js @@ -619,7 +619,9 @@ class MaskEditorDialog extends ComfyDialog { const y = event.offsetY || event.targetTouches[0].clientY - maskRect.top; if (this.is_magicWand) { - if (window.TouchEvent && event instanceof TouchEvent || event.buttons == 1) { + if ((window.TouchEvent && event instanceof TouchEvent || event.buttons == 1) + || (event.buttons == 2 || event.buttons == 5 || event.buttons == 32)) { + var diff = performance.now() - self.lasttime; if(diff > 20 && !this.drawing_mode) { @@ -752,7 +754,8 @@ class MaskEditorDialog extends ComfyDialog { this.maskCanvas, this.sketchCanvas, this.getActiveBrushColor(), - 16); + 16, + event.button == 0); this.magicWandInst.execute(x, y, 0, this.maskCanvas); self.lastx = x;