diff --git a/src/lib/elements/primitives/ArrowPrimitive.ts b/src/lib/elements/primitives/ArrowPrimitive.ts index c6d11bd0f6e957a7c991cc98ddf6f86015ac5aa0..a854daa75883c5de8a4ee0a3c7d38350caf51465 100644 --- a/src/lib/elements/primitives/ArrowPrimitive.ts +++ b/src/lib/elements/primitives/ArrowPrimitive.ts @@ -15,6 +15,11 @@ import {debounce} from "debounce"; * Arrow primitive */ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, BaseElementContainerModel<Models.ArrowPrimitive>> { + /** + * Members + */ + private _wedgePoint: Models.Point | null; + /** * Interactions */ @@ -32,7 +37,7 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, * Elements */ protected _arrowElement: MedsurfDraw.Arrow; - protected _wedgePointElement: MedsurfDraw.WedgePoint; + // protected _wedgePointElement: MedsurfDraw.WedgePoint; /** * Menu elements @@ -145,7 +150,7 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, const imageWidth = this.getImageDimensions().width; // Get wedge point - const wedgePoint: Models.Point = this.model.wedgePoint + this.wedgePoint = this.model.wedgePoint ? {x: this.model.wedgePoint.x * imageWidth, y: this.model.wedgePoint.y * imageWidth} : {x: (this.model.rectangle.x + this.model.rectangle.width) * imageWidth, y: (this.model.rectangle.y + this.model.rectangle.height / 2) * imageWidth}; @@ -159,18 +164,20 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, // -- Arrow element this._arrowElement = new MedsurfDraw.Arrow({ rectangle: new PIXI.Rectangle(0, 0, this.model.rectangle.width * imageWidth, this.model.rectangle.height * imageWidth), - wedgePoint: wedgePoint, + wedgePoint: this.wedgePoint, options: Object.assign({}, this.model.options), lineWidth: this.model.strokeWidth ? Math.round(this.model.strokeWidth * imageWidth * 100) / 100 : undefined }); this.addChild(this._arrowElement); // -- Wedge point element + /* TODO remove this._wedgePointElement = new MedsurfDraw.WedgePoint({ wedgePoint: wedgePoint }); this._wedgePointElement.moveInteraction.on("onMove", this._onWedgeMove, this); this._wedgePointElement.moveInteraction.on("endMove", this._onWedgeEndMove, this); this.addChild(this._wedgePointElement); + */ //</editor-fold> //<editor-fold desc="Menu elements"> @@ -336,8 +343,10 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, this._arrowElement.draw(); this._arrowElement.pivot.set(this._arrowElement.rectangle.width / 2, this._arrowElement.rectangle.height / 2); // -- Wedge point element + /* TODO remove this._wedgePointElement.draw(); this._wedgePointElement.pivot.set(this._arrowElement.rectangle.width / 2, this._arrowElement.rectangle.height / 2); + */ //</editor-fold> } @@ -375,11 +384,13 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, this._arrowElement.destroy(options); } // -- Wedge point element + /* TODO remove if (this._wedgePointElement) { this._wedgePointElement.moveInteraction.off("onMove", this._onWedgeMove, this); this._wedgePointElement.moveInteraction.off("endMove", this._onWedgeEndMove, this); this._wedgePointElement.destroy(options); } + */ //</editor-fold> //<editor-fold desc="Menu elements"> @@ -681,7 +692,9 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, // Elements // -- Wedge point element - this._wedgePointElement.interactive = true; + /* TODO remove + this._wedgePointElement.interactive = true + */ // Events this.on("pointerover", this.moveInteraction.onMoveHover, this.moveInteraction); @@ -1426,6 +1439,7 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, * @private */ protected _onWedgeMove(event: PIXI.InteractionEvent, dX: number, dY: number): void { + /* TODO remove // Get image width const imageWidth = this.getImageDimensions().width; @@ -1448,6 +1462,7 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, // Draw this.draw(); + */ } /** @@ -1559,16 +1574,32 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, const imageWidth = this.getImageDimensions().width; // Calc wedge adjust + /* TODO remove const wedgeXAdjust = this._arrowElement.rectangle.width / (this._wedgePointElement.wedgePoint.x); const wedgeYAdjust = this._arrowElement.rectangle.height / (this._wedgePointElement.wedgePoint.y); + */ + let wedgeXAdjust = 1; + let wedgeYAdjust = 1; + if (this.wedgePoint) { + wedgeXAdjust = this._arrowElement.rectangle.width / this.wedgePoint.x; + wedgeYAdjust = this._arrowElement.rectangle.height / this.wedgePoint.y; + } + // Element // -- Arrow element this._arrowElement.rectangle.width += dW; this._arrowElement.rectangle.height += dH; // -- Wedge point element + /* TODO remove this._wedgePointElement.wedgePoint.x += dW / wedgeXAdjust; this._wedgePointElement.wedgePoint.y += dH / wedgeYAdjust; + */ + if (this.wedgePoint) { + this.wedgePoint.x += dW / wedgeXAdjust; + this.wedgePoint.y += dH / wedgeYAdjust; + } + // Update model this.model.rectangle.width = this._arrowElement.rectangle.width / imageWidth; @@ -1576,8 +1607,14 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, if (!this.model.wedgePoint) { this.model.wedgePoint = new PIXI.Point(); } + /* TODO remove this.model.wedgePoint.x = this._wedgePointElement.wedgePoint.x / imageWidth; this.model.wedgePoint.y = this._wedgePointElement.wedgePoint.y / imageWidth; + */ + if (this.wedgePoint) { + this.model.wedgePoint.x = this.wedgePoint.x / imageWidth; + this.model.wedgePoint.y = this.wedgePoint.y / imageWidth; + } // Draw this.draw(); @@ -1701,6 +1738,21 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, //</editor-fold> //<editor-fold desc="Getter and Setter"> + /** + * Get wedge point + */ + public get wedgePoint(): Models.Point | null { + return this._wedgePoint; + } + + /** + * Set wedge point + * @param value + */ + public set wedgePoint(value: Models.Point | null) { + this._wedgePoint = value; + } + /** * Get move interaction */