From 7b8bc5d9b6c32493ff1f800eb6766c24f0ed2ba7 Mon Sep 17 00:00:00 2001
From: Laurent Knoll <laurent.knoll@orange.com>
Date: Sun, 18 Sep 2022 20:10:42 +0200
Subject: [PATCH] =?UTF-8?q?Meilleure=20gestion=20de=20la=20souris=20sur=20?=
 =?UTF-8?q?le=20trac=C3=A9=20manuel?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/instruments/blobMask.ts | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/src/instruments/blobMask.ts b/src/instruments/blobMask.ts
index f89847a..6bd4d96 100644
--- a/src/instruments/blobMask.ts
+++ b/src/instruments/blobMask.ts
@@ -51,7 +51,7 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume
         }
         this.wasClosed = isClosed;
 
-        if(DEBUG_MODE) {
+        if(DEBUG_MODE) { // Traces les contours convexes et fitted ellipse
             if(this.drawGroup.bounds.area > 10) {
                 let fittedEllipse = new ToEllipseFitter().transform(this.coords).toRemovedPath();
                 fittedEllipse.strokeColor = new paper.Color("red");
@@ -89,6 +89,7 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume
      */
     public onActivation() {
         if(!this.lab.raster.data.blobMaskAttached) {
+            this.lab.raster.on("mousedown", this.onMouseDown.bind(this));
             this.lab.raster.on("mousedrag", this.onMouseDrag.bind(this));
             this.lab.raster.data.blobMaskAttached = true;
         }
@@ -97,18 +98,35 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume
     /**
      * Lorsque quelque chose est déplacé de la règle
      */
-    private onMouseDrag(event : paper.MouseEvent) : boolean {
+    private addMousePoint(point : paper.Point) {
+        if(!this.coords.isClosed()) { // Une fois la boucle fermée, on ne peut plus ajouter de
+            this.coords.points.push(point)
+            this.refresh();
+        }
+        return true;
+    }
+
+    private onMouseDown(event : paper.MouseEvent) : boolean {
         if(!this.active) {
             return true;
         }
-        if(!this.coords.isClosed()) { // Une fois la boucle fermée, on ne peut plus ajouter de
-            this.coords.points.push(event.point)
+        this.addMousePoint(event.point);
+        return true;
+    }
+
+    /**
+     * Déplacement de la souris
+     */
+    private onMouseDrag(event : paper.MouseEvent) : boolean {
+        if(!this.active) {
+            return true;
         }
-        this.refresh();
+        this.addMousePoint(event.point);
         return true;
     }
 
-    protected fillColor(active: boolean, coords : PathCoords): paper.Color | null {
+
+    protected override fillColor(active: boolean, coords : PathCoords): paper.Color | null {
         if(coords.isClosed()) {
             let fillColor = active ? new paper.Color("yellow") : new paper.Color("olive");
             fillColor.alpha = 0.5;
-- 
GitLab