@drizm/ng-whiteboard
Version:
A Canvas component for Angular which supports free drawing.
31 lines • 5.2 kB
JavaScript
import { CanvasWhiteboardShape } from './canvas-whiteboard-shape';
import { CanvasWhiteboardPoint } from '../canvas-whiteboard-point.model';
export class LineShape extends CanvasWhiteboardShape {
constructor(positionPoint, options, endPosition) {
super(positionPoint, options);
this.endPosition = endPosition || new CanvasWhiteboardPoint(this.positionPoint.x, this.positionPoint.y);
}
getShapeName() {
return 'LineShape';
}
draw(context) {
if (!this.endPosition) {
return;
}
context.beginPath();
Object.assign(context, this.options);
context.moveTo(this.positionPoint.x, this.positionPoint.y);
context.lineTo(this.endPosition.x, this.endPosition.y);
context.closePath();
context.stroke();
}
drawPreview(context) {
this.positionPoint = new CanvasWhiteboardPoint(0, 0);
this.endPosition = new CanvasWhiteboardPoint(context.canvas.width, context.canvas.height);
this.draw(context);
}
onUpdateReceived(update) {
this.endPosition = new CanvasWhiteboardPoint(update.x, update.y);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1zaGFwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXdoaXRlYm9hcmQvc3JjL2xpYi9fY2xhc3Nlcy9zaGFwZS9saW5lLXNoYXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBR3ZFLE1BQU0sT0FBTyxTQUFVLFNBQVEscUJBQXFCO0lBR2xELFlBQVksYUFBcUMsRUFDckMsT0FBc0MsRUFDdEMsV0FBbUM7UUFDN0MsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsSUFBSSxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWlDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUNELE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RCxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBaUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkscUJBQXFCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUE4QjtRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQVcsRUFBRSxNQUFNLENBQUMsQ0FBVyxDQUFDLENBQUM7SUFDdkYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYW52YXNXaGl0ZWJvYXJkU2hhcGV9IGZyb20gJy4vY2FudmFzLXdoaXRlYm9hcmQtc2hhcGUnO1xyXG5pbXBvcnQge0NhbnZhc1doaXRlYm9hcmRTaGFwZU9wdGlvbnN9IGZyb20gJy4vY2FudmFzLXdoaXRlYm9hcmQtc2hhcGUtb3B0aW9ucyc7XHJcbmltcG9ydCB7Q2FudmFzV2hpdGVib2FyZFBvaW50fSBmcm9tICcuLi9jYW52YXMtd2hpdGVib2FyZC1wb2ludC5tb2RlbCc7XHJcbmltcG9ydCB7Q2FudmFzV2hpdGVib2FyZFVwZGF0ZX0gZnJvbSAnLi4vY2FudmFzLXdoaXRlYm9hcmQtdXBkYXRlLm1vZGVsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBMaW5lU2hhcGUgZXh0ZW5kcyBDYW52YXNXaGl0ZWJvYXJkU2hhcGUge1xyXG4gIGVuZFBvc2l0aW9uOiBDYW52YXNXaGl0ZWJvYXJkUG9pbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBvc2l0aW9uUG9pbnQ/OiBDYW52YXNXaGl0ZWJvYXJkUG9pbnQsXHJcbiAgICAgICAgICAgICAgb3B0aW9ucz86IENhbnZhc1doaXRlYm9hcmRTaGFwZU9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgZW5kUG9zaXRpb24/OiBDYW52YXNXaGl0ZWJvYXJkUG9pbnQpIHtcclxuICAgIHN1cGVyKHBvc2l0aW9uUG9pbnQsIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uIHx8IG5ldyBDYW52YXNXaGl0ZWJvYXJkUG9pbnQodGhpcy5wb3NpdGlvblBvaW50LngsIHRoaXMucG9zaXRpb25Qb2ludC55KTtcclxuICB9XHJcblxyXG4gIGdldFNoYXBlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICdMaW5lU2hhcGUnO1xyXG4gIH1cclxuXHJcbiAgZHJhdyhjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lbmRQb3NpdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgT2JqZWN0LmFzc2lnbihjb250ZXh0LCB0aGlzLm9wdGlvbnMpO1xyXG5cclxuICAgIGNvbnRleHQubW92ZVRvKHRoaXMucG9zaXRpb25Qb2ludC54LCB0aGlzLnBvc2l0aW9uUG9pbnQueSk7XHJcbiAgICBjb250ZXh0LmxpbmVUbyh0aGlzLmVuZFBvc2l0aW9uLngsIHRoaXMuZW5kUG9zaXRpb24ueSk7XHJcblxyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG5cclxuICBkcmF3UHJldmlldyhjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOiB2b2lkIHtcclxuICAgIHRoaXMucG9zaXRpb25Qb2ludCA9IG5ldyBDYW52YXNXaGl0ZWJvYXJkUG9pbnQoMCwgMCk7XHJcbiAgICB0aGlzLmVuZFBvc2l0aW9uID0gbmV3IENhbnZhc1doaXRlYm9hcmRQb2ludChjb250ZXh0LmNhbnZhcy53aWR0aCwgY29udGV4dC5jYW52YXMuaGVpZ2h0KTtcclxuICAgIHRoaXMuZHJhdyhjb250ZXh0KTtcclxuICB9XHJcblxyXG4gIG9uVXBkYXRlUmVjZWl2ZWQodXBkYXRlOiBDYW52YXNXaGl0ZWJvYXJkVXBkYXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLmVuZFBvc2l0aW9uID0gbmV3IENhbnZhc1doaXRlYm9hcmRQb2ludCh1cGRhdGUueCBhcyBudW1iZXIsIHVwZGF0ZS55IGFzIG51bWJlcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==