onMouseUp() { if (!this.isMouseDown) return; this.isMouseDown = false; this.ellipse.setCoords(); this.ellipse.on('scaling', (o) => { this.onScaling(o); }); this.options.layer.canvas.setActiveObject(this.ellipse); this.options.layer.canvas.renderAll(); this.options.layer.canvas.trigger('object:modified', {target: this.ellipse}); }
onMouseDown(o) { this.isMouseDown = true; this.mouseStartPosition = this.options.layer.canvas.getPointer(o.e); this.ellipse.set({ left: this.mouseStartPosition.x, top: this.mouseStartPosition.y, }); this.options.layer.canvas.add(this.ellipse); this.options.layer.canvas.renderAll(); }
onScaling() { const { width, height, scaleX, scaleY } = this.ellipse; this.ellipse.set({ width, height, rx: width * scaleX / 2, ry: height * scaleY / 2, scaleX: 1, scaleY: 1, }); }
onMouseMove(o) { if (!this.isMouseDown) return; this.mousePosition = this.options.layer.canvas.getPointer(o.e); this.ellipse.set({ rx: Math.abs(this.mouseStartPosition.x - this.mousePosition.x)/2, ry: Math.abs(this.mouseStartPosition.y - this.mousePosition.y)/2, }); if (this.mouseStartPosition.x > this.mousePosition.x) { this.ellipse.set({ left: this.mousePosition.x, }); } if (this.mouseStartPosition.y > this.mousePosition.y) { this.ellipse.set({ top: this.mousePosition.y, }); } this.options.layer.canvas.renderAll(); }