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