diff --git a/src/app/index.ts b/src/app/index.ts index b0e6305a24f806a73d29d241ba15d906616580b0..b8f949fdd850b0fd510cd6b23f16db9d19828414 100644 --- a/src/app/index.ts +++ b/src/app/index.ts @@ -275,6 +275,7 @@ async function setupImage() { layerGroup: layerGroupsArray['sketch'], image: {}, rotateWithLine: false, + triggerImmediateEndDraw: true }); generator.once('startGenerator', _startGenerator, this); generator.once('endGenerator', generator.endGenerator, generator); @@ -1414,7 +1415,7 @@ buttonTest.addEventListener("click", () => { console.log("sketch", layerGroupsArray['sketch']); image.externControlSelectLayerGroup(layerGroupsArray['sketch']); */ - elementsArray['text'].modeInteraction.setMode('delete'); + // elementsArray['text'].modeInteraction.setMode('delete'); // Position point /** / @@ -1443,7 +1444,7 @@ buttonTest.addEventListener("click", () => { // bezierCourve: false, stickMode: MedsurfDraw.StickMode.POSITIONPOINTS, // startElement: test17Point, - layerGroup: layerGroupModel1, + layerGroup: layerGroupsArray['layerGroupModel1'], image: {} }); /**/ @@ -1500,7 +1501,7 @@ buttonTest.addEventListener("click", () => { }); /**/ // Fill collection - /**/ + /** / const generator = new MedsurfDraw.FillGenerator({ target: image, bezierCourve: false, @@ -1511,12 +1512,12 @@ buttonTest.addEventListener("click", () => { }); /**/ // Marker - /** / + /**/ const generator = new MedsurfDraw.MarkerGenerator({ - target: image, - layerGroup: sketch, - image: {} - }); + target: image, + layerGroup: layerGroupsArray['sketch'], + image: {} + }); /**/ // Primitive Marker /** / diff --git a/src/lib/elements/connections/Line.ts b/src/lib/elements/connections/Line.ts index d2fb7eea3be5fb92462f7638a3f3822c917f9293..893ddb8cdf688e31779998bc051d76cd4b704fb3 100644 --- a/src/lib/elements/connections/Line.ts +++ b/src/lib/elements/connections/Line.ts @@ -1527,7 +1527,7 @@ export class Line extends BaseElementContainer<Models.Line, BaseElementContainer if (image) { // Select layer group - if (this.modeInteraction.lastMode !== 'delete_multiple') { + if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) { this.controlUnselectItem(image); } diff --git a/src/lib/elements/fills/FillCollection.ts b/src/lib/elements/fills/FillCollection.ts index a2fb9889c6134d9b5cacb457895ca8be0fe8afbd..9cc65883fd073151762c68e325a4da9a4641a329 100644 --- a/src/lib/elements/fills/FillCollection.ts +++ b/src/lib/elements/fills/FillCollection.ts @@ -1296,7 +1296,7 @@ export class FillCollection extends BaseElementContainer<Models.FillCollection, if (image) { // Select layer group - if (this.modeInteraction.lastMode !== 'delete_multiple') { + if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) { this.controlUnselectItem(image); } diff --git a/src/lib/elements/legends/LegendCollection.ts b/src/lib/elements/legends/LegendCollection.ts index 089c5c6c121560f0b220dc5cc34f81ed4ca89033..6f08ed3b4276a658585d166e6bb456751548c977 100644 --- a/src/lib/elements/legends/LegendCollection.ts +++ b/src/lib/elements/legends/LegendCollection.ts @@ -931,7 +931,7 @@ export class LegendCollection extends BaseElementContainer<Models.LegendCollecti if (image) { // Select layer group - if (this.modeInteraction.lastMode !== 'delete_multiple') { + if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) { this.controlUnselectItem(image); } diff --git a/src/lib/elements/positionings/PositionPoint.ts b/src/lib/elements/positionings/PositionPoint.ts index bcc1fa9837904e53fb2860b97cfc8ec3945eeb08..0b7d27711438ecfa47f4899eaa0b89e173948bae 100644 --- a/src/lib/elements/positionings/PositionPoint.ts +++ b/src/lib/elements/positionings/PositionPoint.ts @@ -1070,7 +1070,7 @@ export class PositionPoint extends BaseElementContainer<Models.PositionPoint, Ba if (image) { // Select layer group - if (this.modeInteraction.lastMode !== 'delete_multiple') { + if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) { this.controlUnselectItem(image); } diff --git a/src/lib/elements/primitives/ArrowPrimitive.ts b/src/lib/elements/primitives/ArrowPrimitive.ts index 8f51d1c9e9d8067a7b3d82f9609d18dfc2111e6c..639267f3386b401944ca4eaf4338e3a4fcdd4287 100644 --- a/src/lib/elements/primitives/ArrowPrimitive.ts +++ b/src/lib/elements/primitives/ArrowPrimitive.ts @@ -992,7 +992,9 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts index 93b2d7c230d94e92ee04e80959f6fd0bc1639171..cd3e76fd4a257aa1ef1efab1531ac910341c040f 100644 --- a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts +++ b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts @@ -965,7 +965,9 @@ export class BackgroundRectanglePrimitive extends BaseElementContainer<Models.Ba let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/elements/primitives/EllipsePrimitive.ts b/src/lib/elements/primitives/EllipsePrimitive.ts index 6a8d3f64fb22efd9a51ff1b273f58aa4d30c25a2..44da24cc40afe84a3e186adfbe11bbb4bee1c59f 100644 --- a/src/lib/elements/primitives/EllipsePrimitive.ts +++ b/src/lib/elements/primitives/EllipsePrimitive.ts @@ -964,7 +964,9 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/elements/primitives/RectanglePrimitive.ts b/src/lib/elements/primitives/RectanglePrimitive.ts index 8e5e575a4262b80e36ba3f182433397ef5869cb5..5ee402e921fc7e9c35079064beb4e0cc1fa3c437 100644 --- a/src/lib/elements/primitives/RectanglePrimitive.ts +++ b/src/lib/elements/primitives/RectanglePrimitive.ts @@ -965,7 +965,9 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/elements/primitives/TextPrimitive.ts b/src/lib/elements/primitives/TextPrimitive.ts index b2aed46a51266389769c08582dabd3772648ed87..717e66d63db1c4020350324c6fad8bf8c599de47 100644 --- a/src/lib/elements/primitives/TextPrimitive.ts +++ b/src/lib/elements/primitives/TextPrimitive.ts @@ -1013,7 +1013,9 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/generators/combinations/ArrowGenerator.ts b/src/lib/generators/combinations/ArrowGenerator.ts index c8b927c85c4522a210693e13ff120b71f370b7da..b7a8d95296af127872b9f0759fbcb3f5a1b92179 100644 --- a/src/lib/generators/combinations/ArrowGenerator.ts +++ b/src/lib/generators/combinations/ArrowGenerator.ts @@ -163,7 +163,8 @@ export class ArrowGenerator extends BaseGenerator<MedsurfDraw.Image, ArrowGenera image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: true + rotateWithLine: true, + triggerImmediateEndDraw: true }); this._arrowPrimitiveGenerator.once("startGenerator", this.start, this); this._arrowPrimitiveGenerator.once("endGenerator", this.endArrowPrimitiveGenerator, this); @@ -177,7 +178,8 @@ export class ArrowGenerator extends BaseGenerator<MedsurfDraw.Image, ArrowGenera image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); diff --git a/src/lib/generators/combinations/EllipseGenerator.ts b/src/lib/generators/combinations/EllipseGenerator.ts index d0ba74a271c5f828c5bd14e5b8a7e144ded70d6c..d96e215098947e14d17a771defe79ab56519af95 100644 --- a/src/lib/generators/combinations/EllipseGenerator.ts +++ b/src/lib/generators/combinations/EllipseGenerator.ts @@ -163,7 +163,8 @@ export class EllipseGenerator extends BaseGenerator<MedsurfDraw.Image, EllipseGe image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: true }); this._ellipsePrimitiveGenerator.once("startGenerator", this.start, this); this._ellipsePrimitiveGenerator.once("endGenerator", this.endEllipsePrimitiveGenerator, this); @@ -177,7 +178,8 @@ export class EllipseGenerator extends BaseGenerator<MedsurfDraw.Image, EllipseGe image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); diff --git a/src/lib/generators/combinations/InteractiveAreaGenerator.ts b/src/lib/generators/combinations/InteractiveAreaGenerator.ts index 1af0550d7caea2c32751ae14f0001dda46cb09af..2180c24a4872b0bcecba7803f739ecf6abdc12ed 100644 --- a/src/lib/generators/combinations/InteractiveAreaGenerator.ts +++ b/src/lib/generators/combinations/InteractiveAreaGenerator.ts @@ -175,7 +175,8 @@ export class InteractiveAreaGenerator extends BaseGenerator<MedsurfDraw.Image, I image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); diff --git a/src/lib/generators/combinations/MarkerGenerator.ts b/src/lib/generators/combinations/MarkerGenerator.ts index f142bc0daf01dd0ec9217a97667921ab2f65bf9e..7081d2a7deba9b1db11b96d5908e3adfdb6204ed 100644 --- a/src/lib/generators/combinations/MarkerGenerator.ts +++ b/src/lib/generators/combinations/MarkerGenerator.ts @@ -202,7 +202,8 @@ export class MarkerGenerator extends BaseGenerator<MedsurfDraw.Image, MarkerGene image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("abortGenerator", this.abortTextPrimitiveGenerator, this); diff --git a/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts b/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts index aeb1cc0fa283b30e49b65bcd532db06b684f113c..e9e627b4e00e2b94f0c196a5d7276b3ca83acea8 100644 --- a/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts +++ b/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts @@ -180,7 +180,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: this.data.rotateWithLine + rotateWithLine: this.data.rotateWithLine, + triggerImmediateEndDraw: true }); break; case Models.ImageObjectType.ELLIPSE: @@ -190,7 +191,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: this.data.rotateWithLine + rotateWithLine: this.data.rotateWithLine, + triggerImmediateEndDraw: true }); break; case Models.ImageObjectType.RECTANGLE: @@ -200,7 +202,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: this.data.rotateWithLine + rotateWithLine: this.data.rotateWithLine, + triggerImmediateEndDraw: true }); break; case Models.ImageObjectType.TEXT: @@ -210,7 +213,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: this.data.rotateWithLine + rotateWithLine: this.data.rotateWithLine, + triggerImmediateEndDraw: true }); break; default: diff --git a/src/lib/generators/combinations/RectangleGenerator.ts b/src/lib/generators/combinations/RectangleGenerator.ts index 5e65f08e4ba090fd0e7bcb0bc138ebb64bc48bc2..99be52da15eec677183e0d5bde7b817ae80fb31f 100644 --- a/src/lib/generators/combinations/RectangleGenerator.ts +++ b/src/lib/generators/combinations/RectangleGenerator.ts @@ -163,7 +163,8 @@ export class RectangleGenerator extends BaseGenerator<MedsurfDraw.Image, Rectang image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: true }); this._rectanglePrimitiveGenerator.once("startGenerator", this.start, this); this._rectanglePrimitiveGenerator.once("endGenerator", this.endRectanglePrimitiveGenerator, this); @@ -177,7 +178,8 @@ export class RectangleGenerator extends BaseGenerator<MedsurfDraw.Image, Rectang image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); diff --git a/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts b/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts index 6578ed897a6620681a18e19f268c82bf37ae9d46..f07b753246d3b73341dad60972b8cdad98ac0302 100644 --- a/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts +++ b/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts @@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato export class ArrowPrimitiveGeneratorModel extends PositionPointGeneratorModel { startElement?: MedsurfDraw.PositionPoint; rotateWithLine: boolean; + triggerImmediateEndDraw: boolean; } /** @@ -226,20 +227,24 @@ export class ArrowPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Ar } this.positionPointElement.model.primitives.push(this.arrowPrimitiveElement.model as any); - //<editor-fold desc="Events"> - // -- Image - this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); - this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); - this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); - this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); - // -- Scale - this.drawInteraction.on("startScale", this.arrowPrimitiveElement.scaleInteraction.startScale, this.arrowPrimitiveElement.scaleInteraction); - this.drawInteraction.on("onScale", this.arrowPrimitiveElement.scaleInteraction.onScale, this.arrowPrimitiveElement.scaleInteraction); - this.drawInteraction.on("endScale", this.arrowPrimitiveElement.scaleInteraction.endScale, this.arrowPrimitiveElement.scaleInteraction); - // -- Draw - this.drawInteraction.on("endDraw", this.endArrowPrimitiveDraw, this); - this.drawInteraction.on("abortDraw", this.abortArrowPrimitiveDraw, this); - //</editor-fold> + if (this.triggerImmediateEndDraw) { + this.endArrowPrimitiveDraw() + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Scale + this.drawInteraction.on("startScale", this.arrowPrimitiveElement.scaleInteraction.startScale, this.arrowPrimitiveElement.scaleInteraction); + this.drawInteraction.on("onScale", this.arrowPrimitiveElement.scaleInteraction.onScale, this.arrowPrimitiveElement.scaleInteraction); + this.drawInteraction.on("endScale", this.arrowPrimitiveElement.scaleInteraction.endScale, this.arrowPrimitiveElement.scaleInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endArrowPrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortArrowPrimitiveDraw, this); + //</editor-fold> + } } /** @@ -252,8 +257,20 @@ export class ArrowPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Ar } this.positionPointElement.model.primitives.push(this.arrowPrimitiveElement.model as any); - // End arrow primitive draw - this.endArrowPrimitiveDraw(); + if (this.triggerImmediateEndDraw) { + this.endArrowPrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endArrowPrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortArrowPrimitiveDraw, this); + //</editor-fold> + } } /** @@ -369,5 +386,20 @@ export class ArrowPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Ar public set rotateWithLine(value: boolean) { this.data.rotateWithLine = value; } + + /** + * Get trigger immediate end draw + */ + public get triggerImmediateEndDraw(): boolean { + return this.data.triggerImmediateEndDraw; + } + + /** + * Set trigger immediate end draw + * @param value + */ + public set triggerImmediateEndDraw(value: boolean) { + this.data.triggerImmediateEndDraw = value; + } //</editor-fold> } \ No newline at end of file diff --git a/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts b/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts index 55768da2ce6ad6d2f2b9feba71dc4e396f090bfb..9800721a6d4a917db3c06764c8426762179f0267 100644 --- a/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts +++ b/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts @@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato export class EllipsePrimitiveGeneratorModel extends PositionPointGeneratorModel { startElement?: MedsurfDraw.PositionPoint; rotateWithLine: boolean; + triggerImmediateEndDraw: boolean; } /** @@ -226,20 +227,24 @@ export class EllipsePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, } this.positionPointElement.model.primitives.push(this.ellipsePrimitiveElement.model as any); - //<editor-fold desc="Events"> - // -- Image - this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); - this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); - this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); - this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); - // ---- Scale - this.drawInteraction.on("startScale", this.ellipsePrimitiveElement.scaleInteraction.startScale, this.ellipsePrimitiveElement.scaleInteraction); - this.drawInteraction.on("onScale", this.ellipsePrimitiveElement.scaleInteraction.onScale, this.ellipsePrimitiveElement.scaleInteraction); - this.drawInteraction.on("endScale", this.ellipsePrimitiveElement.scaleInteraction.endScale, this.ellipsePrimitiveElement.scaleInteraction); - // -- Draw - this.drawInteraction.on("endDraw", this.endEllipsePrimitiveDraw, this); - this.drawInteraction.on("abortDraw", this.abortEllipsePrimitiveDraw, this); - //</editor-fold> + if (this.triggerImmediateEndDraw) { + this.endEllipsePrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // ---- Scale + this.drawInteraction.on("startScale", this.ellipsePrimitiveElement.scaleInteraction.startScale, this.ellipsePrimitiveElement.scaleInteraction); + this.drawInteraction.on("onScale", this.ellipsePrimitiveElement.scaleInteraction.onScale, this.ellipsePrimitiveElement.scaleInteraction); + this.drawInteraction.on("endScale", this.ellipsePrimitiveElement.scaleInteraction.endScale, this.ellipsePrimitiveElement.scaleInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endEllipsePrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortEllipsePrimitiveDraw, this); + //</editor-fold> + } } /** @@ -252,8 +257,20 @@ export class EllipsePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, } this.positionPointElement.model.primitives.push(this.ellipsePrimitiveElement.model as any); - // End ellipse primitive draw - this.endEllipsePrimitiveDraw(); + if (this.triggerImmediateEndDraw) { + this.endEllipsePrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endEllipsePrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortEllipsePrimitiveDraw, this); + //</editor-fold> + } } /** @@ -369,5 +386,20 @@ export class EllipsePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, public set rotateWithLine(value: boolean) { this.data.rotateWithLine = value; } + + /** + * Get trigger immediate end draw + */ + public get triggerImmediateEndDraw(): boolean { + return this.data.triggerImmediateEndDraw; + } + + /** + * Set trigger immediate end draw + * @param value + */ + public set triggerImmediateEndDraw(value: boolean) { + this.data.triggerImmediateEndDraw = value; + } //</editor-fold> } \ No newline at end of file diff --git a/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts b/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts index df5e22944192395a325f49a2c23d88526665eadf..4312e654c4fdcf9d5034a776234ee9dc9c8fb1da 100644 --- a/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts +++ b/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts @@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato export class RectanglePrimitiveGeneratorModel extends PositionPointGeneratorModel { startElement?: MedsurfDraw.PositionPoint; rotateWithLine: boolean; + triggerImmediateEndDraw: boolean; } /** @@ -225,20 +226,24 @@ export class RectanglePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image } this.positionPointElement.model.primitives.push(this.rectanglePrimitiveElement.model as any); - //<editor-fold desc="Events"> - // -- Image - this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); - this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); - this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); - this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); - // ---- Scale - this.drawInteraction.on("startScale", this.rectanglePrimitiveElement.scaleInteraction.startScale, this.rectanglePrimitiveElement.scaleInteraction); - this.drawInteraction.on("onScale", this.rectanglePrimitiveElement.scaleInteraction.onScale, this.rectanglePrimitiveElement.scaleInteraction); - this.drawInteraction.on("endScale", this.rectanglePrimitiveElement.scaleInteraction.endScale, this.rectanglePrimitiveElement.scaleInteraction); - // -- Draw - this.drawInteraction.on("endDraw", this.endRectanglePrimitiveDraw, this); - this.drawInteraction.on("abortDraw", this.abortRectanglePrimitiveDraw, this); - //</editor-fold> + if (this.triggerImmediateEndDraw) { + this.endRectanglePrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // ---- Scale + this.drawInteraction.on("startScale", this.rectanglePrimitiveElement.scaleInteraction.startScale, this.rectanglePrimitiveElement.scaleInteraction); + this.drawInteraction.on("onScale", this.rectanglePrimitiveElement.scaleInteraction.onScale, this.rectanglePrimitiveElement.scaleInteraction); + this.drawInteraction.on("endScale", this.rectanglePrimitiveElement.scaleInteraction.endScale, this.rectanglePrimitiveElement.scaleInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endRectanglePrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortRectanglePrimitiveDraw, this); + //</editor-fold> + } } /** @@ -251,8 +256,20 @@ export class RectanglePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image } this.positionPointElement.model.primitives.push(this.rectanglePrimitiveElement.model as any); - // End rectangle primitive draw - this.endRectanglePrimitiveDraw(); + if (this.triggerImmediateEndDraw) { + this.endRectanglePrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endRectanglePrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortRectanglePrimitiveDraw, this); + //</editor-fold> + } } /** @@ -368,5 +385,20 @@ export class RectanglePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image public set rotateWithLine(value: boolean) { this.data.rotateWithLine = value; } + + /** + * Get trigger immediate end draw + */ + public get triggerImmediateEndDraw(): boolean { + return this.data.triggerImmediateEndDraw; + } + + /** + * Set trigger immediate end draw + * @param value + */ + public set triggerImmediateEndDraw(value: boolean) { + this.data.triggerImmediateEndDraw = value; + } //</editor-fold> } \ No newline at end of file diff --git a/src/lib/generators/primitives/TextPrimitiveGenerator.ts b/src/lib/generators/primitives/TextPrimitiveGenerator.ts index 721b24d37d62bb723aa10c7fa6959aaf85c93688..d1fcfb940f9c89752051fdb651644aa6e6c7fa9c 100644 --- a/src/lib/generators/primitives/TextPrimitiveGenerator.ts +++ b/src/lib/generators/primitives/TextPrimitiveGenerator.ts @@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato export class TextPrimitiveGeneratorModel extends PositionPointGeneratorModel { startElement?: MedsurfDraw.PositionPoint; rotateWithLine: boolean; + triggerImmediateEndDraw: boolean; } /** @@ -225,20 +226,24 @@ export class TextPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Tex } this.positionPointElement.model.primitives.push(this.textPrimitiveElement.model as any); - //<editor-fold desc="Events"> - // -- Image - this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); - this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); - this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); - this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); - // ---- Scale - this.drawInteraction.on("startScale", this.textPrimitiveElement.scaleInteraction.startScale, this.textPrimitiveElement.scaleInteraction); - this.drawInteraction.on("onScale", this.textPrimitiveElement.scaleInteraction.onScale, this.textPrimitiveElement.scaleInteraction); - this.drawInteraction.on("endScale", this.textPrimitiveElement.scaleInteraction.endScale, this.textPrimitiveElement.scaleInteraction); - // -- Draw - this.drawInteraction.on("endDraw", this.endTextPrimitiveDraw, this); - this.drawInteraction.on("abortDraw", this.abortTextPrimitiveDraw, this); - //</editor-fold> + if (this.triggerImmediateEndDraw) { + this.endTextPrimitiveDraw() + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // ---- Scale + this.drawInteraction.on("startScale", this.textPrimitiveElement.scaleInteraction.startScale, this.textPrimitiveElement.scaleInteraction); + this.drawInteraction.on("onScale", this.textPrimitiveElement.scaleInteraction.onScale, this.textPrimitiveElement.scaleInteraction); + this.drawInteraction.on("endScale", this.textPrimitiveElement.scaleInteraction.endScale, this.textPrimitiveElement.scaleInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endTextPrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortTextPrimitiveDraw, this); + //</editor-fold> + } } /** @@ -251,8 +256,21 @@ export class TextPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Tex } this.positionPointElement.model.primitives.push(this.textPrimitiveElement.model as any); - // End text primitive draw - this.endTextPrimitiveDraw(); + // Check for trigger var + if (this.triggerImmediateEndDraw) { + this.endTextPrimitiveDraw() + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endTextPrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortTextPrimitiveDraw, this); + //</editor-fold> + } } /** @@ -368,5 +386,20 @@ export class TextPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Tex public set rotateWithLine(value: boolean) { this.data.rotateWithLine = value; } + + /** + * Get trigger immediate end draw + */ + public get triggerImmediateEndDraw(): boolean { + return this.data.triggerImmediateEndDraw; + } + + /** + * Set trigger immediate end draw + * @param value + */ + public set triggerImmediateEndDraw(value: boolean) { + this.data.triggerImmediateEndDraw = value; + } //</editor-fold> } \ No newline at end of file