1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // wrapped by build app
- define("dojox/drawing/annotations/Arrow", ["dijit","dojo","dojox","dojo/require!dojox/drawing/stencil/Path"], function(dijit,dojo,dojox){
- 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
- ];
- }
-
- }
- );
- });
|