diff --git a/src/instruments/blobMask.ts b/src/instruments/blobMask.ts index 7d66c2114d1fe1756eeebc97df08022adc8ec19f..b2058de54b15c31dc489fb1f6d5dc5d60c1ec433 100644 --- a/src/instruments/blobMask.ts +++ b/src/instruments/blobMask.ts @@ -19,14 +19,17 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume /** * Appelé lorsque le tracé est fermé */ - public onClose : () => void = () => {}; + public onClose: () => void = () => { + }; /** * Appelé lorsque le tracé s'ouvre */ - public onOpen : () => void = () => {}; + public onOpen: () => void = () => { + }; - public constructor(protected lab : Lab, coords : PathCoords) { + + public constructor(protected lab: Lab, coords: PathCoords) { super(lab, coords, [ new Handle("startHandle", true), ]) @@ -43,16 +46,16 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume refresh() { super.refresh(); let isClosed = this.coords.isClosed(); - if(!this.wasClosed && isClosed) { + if (!this.wasClosed && isClosed) { this.onClose(); - } else if(this.wasClosed && !isClosed) { + } else if (this.wasClosed && !isClosed) { this.onOpen(); } this.wasClosed = isClosed; - if(DEBUG_MODE) { // Traces les contours convexes et fitted ellipse - if(this.drawGroup.bounds.area > 10) { + 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"); fittedEllipse.strokeWidth = PaperUtils.absoluteDimension(2); @@ -75,8 +78,8 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume } locateHandle(coords: PathCoords, handle: Handle): paper.Point { - if(handle.name == "startHandle") { - if(coords.points.length == 0) { + if (handle.name == "startHandle") { + if (coords.points.length == 0) { return null; } else { return coords.points[0]; @@ -89,7 +92,7 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume * Attacher le handler lors de l'activation */ public onActivation() { - if(!this.lab.raster.data.blobMaskAttached) { + 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; @@ -99,19 +102,19 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume /** * Lorsque quelque chose est déplacé de la règle */ - private addMousePoint(point : paper.Point) { - if(!this.coords.isClosed()) { // Une fois la boucle fermée, on ne peut plus ajouter de + 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) { + private onMouseDown(event: paper.MouseEvent): boolean { + if (!this.active) { return true; } - if(event.modifiers.control) { + if (event.modifiers.control) { return true; // On ne fait si CONTROL est pressé en dessinant } this.addMousePoint(event.point); @@ -121,11 +124,11 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume /** * Déplacement de la souris */ - private onMouseDrag(event : paper.MouseEvent) : boolean { - if(!this.active) { + private onMouseDrag(event: paper.MouseEvent): boolean { + if (!this.active) { return true; } - if(event.modifiers.control) { + if (event.modifiers.control) { return true; // On ne fait si CONTROL est pressé en dessinant } this.addMousePoint(event.point); @@ -133,8 +136,8 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume } - protected override fillColor(active: boolean, coords : PathCoords): paper.Color | null { - if(coords.isClosed()) { + 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; return fillColor; @@ -143,6 +146,13 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume } } + /** + * Appelé lorsque le tracé est fermé + */ + public isClosed() : boolean { + return this.coords.isClosed(); + } + /** * Supprime quelques derniers points */ diff --git a/src/ui/steps/drawBlobMaskStep.tsx b/src/ui/steps/drawBlobMaskStep.tsx index cc1515334659b9fc152a86de1ac4fa854ffb4b4c..cd2cfac12225448e260193dfd131dd92bded8c69 100644 --- a/src/ui/steps/drawBlobMaskStep.tsx +++ b/src/ui/steps/drawBlobMaskStep.tsx @@ -28,6 +28,7 @@ export class DrawBlobMaskStep extends Step<DrawBlobMaskStepState> { onActivation(): void { this.props.lab.blobMask.activate(); + this.setState({closed: this.props.lab.blobMask.isClosed() }); this.props.lab.blobMask.onClose = () => { this.setState({closed: true }); };