diff options
Diffstat (limited to 'js/dojo-1.6/dojox/drawing/annotations/Arrow.js')
| -rw-r--r-- | js/dojo-1.6/dojox/drawing/annotations/Arrow.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/drawing/annotations/Arrow.js b/js/dojo-1.6/dojox/drawing/annotations/Arrow.js new file mode 100644 index 0000000..2764252 --- /dev/null +++ b/js/dojo-1.6/dojox/drawing/annotations/Arrow.js @@ -0,0 +1,82 @@ +/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.drawing.annotations.Arrow"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.drawing.annotations.Arrow"] = true;
+dojo.provide("dojox.drawing.annotations.Arrow");
+dojo.require("dojox.drawing.stencil.Path");
+
+dojox.drawing.annotations.Arrow = dojox.drawing.util.oo.declare(
+ // summary:
+ // An annotation called internally to put an arrowhead
+ // on ether end of a Line. Initiated in Arrow (and Vector)
+ // with the optional params: arrowStart and arrowEnd. Both
+ // default true for Axes.
+ //
+ dojox.drawing.stencil.Path,
+ function(/* dojox.__stencilArgs */options){
+ // arguments: See stencil._Base
+ this.stencil.connectMult([
+ [this.stencil, "select", this, "select"],
+ [this.stencil, "deselect", this, "deselect"],
+ [this.stencil, "render", this, "render"],
+ [this.stencil, "onDelete", this, "destroy"]
+ ]);
+
+ this.connect("onBeforeRender", this, function(){
+ var o = this.stencil.points[this.idx1];
+ var c = this.stencil.points[this.idx2];
+ if(this.stencil.getRadius() >= this.minimumSize){
+ this.points = this.arrowHead(c.x, c.y, o.x, o.y, this.style);
+ }else{
+ this.points = [];
+ }
+ });
+
+ },
+ {
+ idx1:0,
+ idx2:1,
+
+ subShape:true,
+ minimumSize:30,
+ //annotation:true, NOT!
+
+ arrowHead: function(x1, y1, x2, y2, style){
+ // summary:
+ // Creates data used to draw arrow head.
+ //
+ var obj = {
+ start:{
+ x:x1,
+ y:y1
+ },
+ x:x2,
+ y:y2
+ }
+ var angle = this.util.angle(obj);
+
+ var lineLength = this.util.length(obj);
+ var al = style.arrows.length;
+ var aw = style.arrows.width/2;
+ if(lineLength<al){
+ al = lineLength/2;
+ }
+ var p1 = this.util.pointOnCircle(x2, y2, -al, angle-aw);
+ var p2 = this.util.pointOnCircle(x2, y2, -al, angle+aw);
+
+ return [
+ {x:x2, y:y2},
+ p1,
+ p2
+ ];
+ }
+
+ }
+);
+
+}
|
