root / trunk / web / dojo / dojox / drawing / util / common.js
History | View | Annotate | Download (2.88 KB)
1 |
/*
|
---|---|
2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
4 |
see: http://dojotoolkit.org/license for details
|
5 |
*/
|
6 |
|
7 |
|
8 |
if(!dojo._hasResource["dojox.drawing.util.common"]){ |
9 |
dojo._hasResource["dojox.drawing.util.common"]=true; |
10 |
dojo.provide("dojox.drawing.util.common");
|
11 |
dojo.require("dojox.math.round");
|
12 |
(function(){
|
13 |
var _1={};
|
14 |
var _2=0; |
15 |
dojox.drawing.util.common={radToDeg:function(n){ |
16 |
return (n*180)/Math.PI; |
17 |
},degToRad:function(n){ |
18 |
return (n*Math.PI)/180; |
19 |
},angle:function(_3,_4){ |
20 |
if(_4){
|
21 |
_4=_4/180;
|
22 |
var _5=this.radians(_3),_6=Math.PI*_4,_7=dojox.math.round(_5/_6),_8=_7*_6; |
23 |
return dojox.math.round(this.radToDeg(_8)); |
24 |
}else{
|
25 |
return this.radToDeg(this.radians(_3)); |
26 |
} |
27 |
},oppAngle:function(_9){ |
28 |
(_9+=180)>360?_9=_9-360:_9; |
29 |
return _9;
|
30 |
},radians:function(o){ |
31 |
return Math.atan2(o.start.y-o.y,o.x-o.start.x);
|
32 |
},length:function(o){ |
33 |
return Math.sqrt(Math.pow(o.start.x-o.x,2)+Math.pow(o.start.y-o.y,2)); |
34 |
},lineSub:function(x1,y1,x2,y2,_a){ |
35 |
var _b=this.distance(this.argsToObj.apply(this,arguments)); |
36 |
_b=_b<_a?_a:_b; |
37 |
var pc=(_b-_a)/_b;
|
38 |
var x=x1-(x1-x2)*pc;
|
39 |
var y=y1-(y1-y2)*pc;
|
40 |
return {x:x,y:y}; |
41 |
},argsToObj:function(){ |
42 |
var a=arguments; |
43 |
if(a.length<4){ |
44 |
return a[0]; |
45 |
} |
46 |
return {start:{x:a[0],y:a[1]},x:a[2],y:a[3]}; |
47 |
},distance:function(){ |
48 |
var o=this.argsToObj.apply(this,arguments); |
49 |
return Math.abs(Math.sqrt(Math.pow(o.start.x-o.x,2)+Math.pow(o.start.y-o.y,2))); |
50 |
},slope:function(p1,p2){ |
51 |
if(!(p1.x-p2.x)){
|
52 |
return 0; |
53 |
} |
54 |
return ((p1.y-p2.y)/(p1.x-p2.x));
|
55 |
},pointOnCircle:function(cx,cy,_c,_d){ |
56 |
var _e=_d*Math.PI/180; |
57 |
var x=_c*Math.cos(_e);
|
58 |
var y=_c*Math.sin(_e);
|
59 |
return {x:cx+x,y:cy-y}; |
60 |
},constrainAngle:function(_f,min,max){ |
61 |
var _10=this.angle(_f); |
62 |
if(_10>=min&&_10<=max){
|
63 |
return _f;
|
64 |
} |
65 |
var _11=this.length(_f); |
66 |
var _12=_10>max?max:min-_10<100?min:max; |
67 |
return this.pointOnCircle(_f.start.x,_f.start.y,_11,_12); |
68 |
},snapAngle:function(obj,ca){ |
69 |
var _13=this.radians(obj),_14=this.length(obj),seg=Math.PI*ca,rnd=Math.round(_13/seg),_15=rnd*seg,_16=this.radToDeg(_15),pt=this.pointOnCircle(obj.start.x,obj.start.y,_14,_16); |
70 |
return pt;
|
71 |
},idSetStart:function(num){ |
72 |
_2=num; |
73 |
},uid:function(str){ |
74 |
str=str||"shape";
|
75 |
_1[str]=_1[str]===undefined?_2:_1[str]+1; |
76 |
return str+_1[str];
|
77 |
},abbr:function(_17){ |
78 |
return _17.substring(_17.lastIndexOf(".")+1).charAt(0).toLowerCase()+_17.substring(_17.lastIndexOf(".")+2); |
79 |
},mixin:function(o1,o2){ |
80 |
},objects:{},register:function(obj){ |
81 |
this.objects[obj.id]=obj;
|
82 |
},byId:function(id){ |
83 |
return this.objects[id]; |
84 |
},attr:function(_18,_19,_1a,_1b){ |
85 |
if(!_18){
|
86 |
return false; |
87 |
} |
88 |
try{
|
89 |
if(_18.shape&&_18.util){
|
90 |
_18=_18.shape; |
91 |
} |
92 |
if(!_1a&&_19=="id"&&_18.target){ |
93 |
var n=_18.target;
|
94 |
while(!dojo.attr(n,"id")){ |
95 |
n=n.parentNode; |
96 |
} |
97 |
return dojo.attr(n,"id"); |
98 |
} |
99 |
if(_18.rawNode||_18.target){
|
100 |
var _1c=Array.prototype.slice.call(arguments); |
101 |
_1c[0]=_18.rawNode||_18.target;
|
102 |
return dojo.attr.apply(dojo,_1c);
|
103 |
} |
104 |
return dojo.attr(_18,"id"); |
105 |
} |
106 |
catch(e){
|
107 |
if(!_1b){
|
108 |
} |
109 |
return false; |
110 |
} |
111 |
}}; |
112 |
})(); |
113 |
} |