- angle0= Math.atan2(seg[3],seg[2]);
- angle1=-Math.atan2(seg[3],seg[2]);
- angle2=-Math.atan2(seg[3],seg[2])-Math.PI;
- g.moveTo(seg[0]+l*Math.cos(angle0),
- seg[1]+l*Math.sin(angle0));
- g.lineTo(seg[0]+w*Math.sin(angle1),
- seg[1]+w*Math.cos(angle1));
- g.lineTo(seg[0]+w*Math.sin(angle2),
- seg[1]+w*Math.cos(angle2));
+ // seg: {dashendx, dashendy, dx, dy, dashstartx, dashstarty, dashstartdx, dashstartdy}
+ // where dx is normalised x component of direction vector
+ // note that a dash can go around a corner, so the info is not redundant
+
+ if (s.line_style.toLowerCase() == "arrows-reversed") {
+ g.moveTo(seg[4]-l*seg[6], seg[5]-l*seg[7]); // note reversed arrow head
+ g.lineTo(seg[4]-w*seg[7], seg[5]+w*seg[6]);
+ g.lineTo(seg[4]+w*seg[7], seg[5]-w*seg[6]);
+ } else {
+ g.moveTo(seg[0]+l*seg[2], seg[1]+l*seg[3]);
+ g.lineTo(seg[0]-w*seg[3], seg[1]+w*seg[2]);
+ g.lineTo(seg[0]+w*seg[3], seg[1]-w*seg[2]);
+ }