@@ -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