//>>built
define("dojox/drawing/tools/custom/Vector",["dojo","../../util/oo","../../manager/_registry","../Arrow","../../defaults"],function(_1,oo,_2,_3,_4){
var _5=oo.declare(_3,function(_6){
this.minimumSize=this.style.arrows.length;
this.addShadow({size:3,mult:2});
},{draws:true,type:"dojox.drawing.tools.custom.Vector",minimumSize:30,showAngle:true,changeAxis:function(_7){
_7=_7!==undefined?_7:this.style.zAxis?0:1;
if(_7==0){
this.style.zAxis=false;
this.data.cosphi=0;
}else{
this.style.zAxis=true;
var p=this.points;
var pt=this.zPoint();
this.setPoints([{x:p[0].x,y:p[0].y},{x:pt.x,y:pt.y}]);
}
this.render();
},_createZeroVector:function(_8,d,_9){
var s=_8=="hit"?this.minimumSize:this.minimumSize/6;
var f=_8=="hit"?_9.fill:null;
d={cx:this.data.x1,cy:this.data.y1,rx:s,ry:s};
this.remove(this[_8]);
this[_8]=this.container.createEllipse(d).setStroke(_9).setFill(f);
this.util.attr(this[_8],"drawingType","stencil");
},_create:function(_a,d,_b){
this.remove(this[_a]);
this[_a]=this.container.createLine(d).setStroke(_b);
this._setNodeAtts(this[_a]);
},onDrag:function(_c){
if(this.created){
return;
}
var x1=_c.start.x,y1=_c.start.y,x2=_c.x,y2=_c.y;
if(this.keys.shift&&!this.style.zAxis){
var pt=this.util.snapAngle(_c,45/180);
x2=pt.x;
y2=pt.y;
}
if(this.keys.alt){
var dx=x2>x1?((x2-x1)/2):((x1-x2)/-2);
var dy=y2>y1?((y2-y1)/2):((y1-y2)/-2);
x1-=dx;
x2-=dx;
y1-=dy;
y2-=dy;
}
if(this.style.zAxis){
var _d=this.zPoint(_c);
x2=_d.x;
y2=_d.y;
}
this.setPoints([{x:x1,y:y1},{x:x2,y:y2}]);
this.render();
},onTransform:function(_e){
if(!this._isBeingModified){
this.onTransformBegin();
}
this.setPoints(this.points);
this.render();
},anchorConstrain:function(x,y){
if(!this.style.zAxis){
return null;
}
var _f=this.style.zAngle*Math.PI/180;
var _10=x<0?x>-y:x<-y;
var dx=_10?x:-y/Math.tan(_f);
var dy=!_10?y:-Math.tan(_f)*x;
return {x:dx,y:dy};
},zPoint:function(obj){
if(obj===undefined){
if(!this.points[0]){
return null;
}
var d=this.pointsToData();
obj={start:{x:d.x1,y:d.y1},x:d.x2,y:d.y2};
}
var _11=this.util.length(obj);
var _12=this.util.angle(obj);
_12=_12<0?360+_12:_12;
_12=_12>135&&_12<315?this.style.zAngle:this.util.oppAngle(this.style.zAngle);
return this.util.pointOnCircle(obj.start.x,obj.start.y,_11,_12);
},pointsToData:function(p){
p=p||this.points;
var _13=0;
var obj={start:{x:p[0].x,y:p[0].y},x:p[1].x,y:p[1].y};
if(this.style.zAxis&&(this.util.length(obj)>this.minimumSize)){
var _14=this.util.angle(obj);
_14=_14<0?360+_14:_14;
_13=_14>135&&_14<315?1:-1;
}
this.data={x1:p[0].x,y1:p[0].y,x2:p[1].x,y2:p[1].y,cosphi:_13};
return this.data;
},dataToPoints:function(o){
o=o||this.data;
if(o.radius||o.angle){
var _15=0;
var pt=this.util.pointOnCircle(o.x,o.y,o.radius,o.angle);
if(this.style.zAxis||(o.cosphi&&o.cosphi!=0)){
this.style.zAxis=true;
_15=o.angle>135&&o.angle<315?1:-1;
}
this.data=o={x1:o.x,y1:o.y,x2:pt.x,y2:pt.y,cosphi:_15};
}
this.points=[{x:o.x1,y:o.y1},{x:o.x2,y:o.y2}];
return this.points;
},render:function(){
this.onBeforeRender(this);
if(this.getRadius()>=this.minimumSize){
this._create("hit",this.data,this.style.currentHit);
this._create("shape",this.data,this.style.current);
}else{
this.data.cosphi=0;
this._createZeroVector("hit",this.data,this.style.currentHit);
this._createZeroVector("shape",this.data,this.style.current);
}
},onUp:function(obj){
if(this.created||!this._downOnCanvas){
return;
}
this._downOnCanvas=false;
if(!this.shape){
var d=100;
obj.start.x=this.style.zAxis?obj.start.x+d:obj.start.x;
obj.y=obj.y+d;
this.setPoints([{x:obj.start.x,y:obj.start.y},{x:obj.x,y:obj.y}]);
this.render();
}
if(this.getRadius()<this.minimumSize){
var p=this.points;
this.setPoints([{x:p[0].x,y:p[0].y},{x:p[0].x,y:p[0].y}]);
}else{
var p=this.points;
var pt=this.style.zAxis?this.zPoint(obj):this.util.snapAngle(obj,this.angleSnap/180);
this.setPoints([{x:p[0].x,y:p[0].y},{x:pt.x,y:pt.y}]);
}
this.renderedOnce=true;
this.onRender(this);
}});
_1.setObject("dojox.drawing.tools.custom.Vector",_5);
_5.setup={name:"dojox.drawing.tools.custom.Vector",tooltip:"Vector Tool",iconClass:"iconVector"};
if(_4.zAxisEnabled){
_5.setup.secondary={name:"vectorSecondary",label:"z-axis",funct:function(_16){
_16.selected?this.zDeselect(_16):this.zSelect(_16);
var _17=this.drawing.stencils.selectedStencils;
for(var nm in _17){
if(_17[nm].shortType=="vector"&&(_17[nm].style.zAxis!=_4.zAxis)){
var s=_17[nm];
s.changeAxis();
if(s.style.zAxis){
s.deselect();
s.select();
}
}
}
},setup:function(){
var _18=_4.zAxis;
this.zSelect=function(_19){
if(!_19.enabled){
return;
}
_18=true;
_4.zAxis=true;
_19.select();
this.vectorTest();
this.zSelected=_19;
};
this.zDeselect=function(_1a){
if(!_1a.enabled){
return;
}
_18=false;
_4.zAxis=false;
_1a.deselect();
this.vectorTest();
this.zSelected=null;
};
this.vectorTest=function(){
_1.forEach(this.buttons,function(b){
if(b.toolType=="vector"&&b.selected){
this.drawing.currentStencil.style.zAxis=_18;
}
},this);
};
_1.connect(this,"onRenderStencil",this,function(){
if(this.zSelected){
this.zDeselect(this.zSelected);
}
});
var c=_1.connect(this.drawing,"onSurfaceReady",this,function(){
_1.disconnect(c);
_1.connect(this.drawing.stencils,"onSelect",this,function(_1b){
if(_1b.shortType=="vector"){
if(_1b.style.zAxis){
_1.forEach(this.buttons,function(b){
if(b.toolType=="vectorSecondary"){
this.zSelect(b);
}
},this);
}else{
_1.forEach(this.buttons,function(b){
if(b.toolType=="vectorSecondary"){
this.zDeselect(b);
}
},this);
}
}
});
});
},postSetup:function(btn){
_1.connect(btn,"enable",function(){
_4.zAxisEnabled=true;
});
_1.connect(btn,"disable",function(){
_4.zAxisEnabled=false;
});
}};
}
_2.register(_5.setup,"tool");
return _5;
});
