Skip to content

Commit fe998ec

Browse files
committed
modified arrow tool to show arrow head when dragging
1 parent 5cdbd1f commit fe998ec

File tree

1 file changed

+27
-16
lines changed

1 file changed

+27
-16
lines changed

src/arrow.js

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,22 @@ class Arrow extends FabricCanvasTool {
2828
selectable: false,
2929
evented: false
3030
});
31+
32+
this.head = new fabric.Triangle({
33+
fill: this._color,
34+
left: pointer.x,
35+
top: pointer.y,
36+
originX: 'center',
37+
originY: 'center',
38+
height: 3 * this._width,
39+
width: 3 * this._width,
40+
selectable: false,
41+
evented: false,
42+
angle: 90
43+
});
44+
3145
canvas.add(this.line);
46+
canvas.add(this.head);
3247
}
3348

3449
doMouseMove(o) {
@@ -37,30 +52,26 @@ class Arrow extends FabricCanvasTool {
3752
var pointer = canvas.getPointer(o.e);
3853
this.line.set({ x2: pointer.x, y2: pointer.y });
3954
this.line.setCoords();
55+
56+
let x_delta = pointer.x - this.line.x1;
57+
let y_delta = pointer.y - this.line.y1;
58+
59+
this.head.set({
60+
left: pointer.x,
61+
top: pointer.y,
62+
angle: 90 + Math.atan2(y_delta, x_delta) * 180/Math.PI
63+
});
64+
4065
canvas.renderAll();
4166
}
4267

4368
doMouseUp(o) {
4469
this.isDown = false;
4570
let canvas = this._canvas;
46-
var pointer = canvas.getPointer(o.e);
47-
let x_delta = this.line.x2 - this.line.x1;
48-
let y_delta = this.line.y2 - this.line.y1;
4971

50-
let head = new fabric.Triangle({
51-
fill: this._color,
52-
left: pointer.x,
53-
top: pointer.y,
54-
originX: 'center',
55-
originY: 'center',
56-
height: 3 * this._width,
57-
width: 3 * this._width,
58-
selectable: false,
59-
evented: false,
60-
angle: 90 + Math.atan2(y_delta, x_delta) * 180/Math.PI,
61-
});
6272
canvas.remove(this.line);
63-
let arrow = new fabric.Group([this.line, head]);
73+
canvas.remove(this.head);
74+
let arrow = new fabric.Group([this.line, this.head]);
6475
canvas.add(arrow);
6576
}
6677

0 commit comments

Comments
 (0)