Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / gfx / _base.js @ 9

History | View | Annotate | Download (5.46 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.gfx._base"]){
9
dojo._hasResource["dojox.gfx._base"]=true;
10
dojo.provide("dojox.gfx._base");
11
(function(){
12
var g=dojox.gfx,b=g._base;
13
g._hasClass=function(_1,_2){
14
var _3=_1.getAttribute("className");
15
return _3&&(" "+_3+" ").indexOf(" "+_2+" ")>=0;
16
};
17
g._addClass=function(_4,_5){
18
var _6=_4.getAttribute("className")||"";
19
if(!_6||(" "+_6+" ").indexOf(" "+_5+" ")<0){
20
_4.setAttribute("className",_6+(_6?" ":"")+_5);
21
}
22
};
23
g._removeClass=function(_7,_8){
24
var _9=_7.getAttribute("className");
25
if(_9){
26
_7.setAttribute("className",_9.replace(new RegExp("(^|\\s+)"+_8+"(\\s+|$)"),"$1$2"));
27
}
28
};
29
b._getFontMeasurements=function(){
30
var _a={"1em":0,"1ex":0,"100%":0,"12pt":0,"16px":0,"xx-small":0,"x-small":0,"small":0,"medium":0,"large":0,"x-large":0,"xx-large":0};
31
if(dojo.isIE){
32
dojo.doc.documentElement.style.fontSize="100%";
33
}
34
var _b=dojo.doc.createElement("div");
35
var s=_b.style;
36
s.position="absolute";
37
s.left="-100px";
38
s.top="0px";
39
s.width="30px";
40
s.height="1000em";
41
s.borderWidth="0px";
42
s.margin="0px";
43
s.padding="0px";
44
s.outline="none";
45
s.lineHeight="1";
46
s.overflow="hidden";
47
dojo.body().appendChild(_b);
48
for(var p in _a){
49
_b.style.fontSize=p;
50
_a[p]=Math.round(_b.offsetHeight*12/16)*16/12/1000;
51
}
52
dojo.body().removeChild(_b);
53
_b=null;
54
return _a;
55
};
56
var _c=null;
57
b._getCachedFontMeasurements=function(_d){
58
if(_d||!_c){
59
_c=b._getFontMeasurements();
60
}
61
return _c;
62
};
63
var _e=null,_f={};
64
b._getTextBox=function(_10,_11,_12){
65
var m,s,al=arguments.length;
66
if(!_e){
67
m=_e=dojo.doc.createElement("div");
68
s=m.style;
69
s.position="absolute";
70
s.left="-10000px";
71
s.top="0";
72
dojo.body().appendChild(m);
73
}else{
74
m=_e;
75
s=m.style;
76
}
77
m.className="";
78
s.borderWidth="0";
79
s.margin="0";
80
s.padding="0";
81
s.outline="0";
82
if(al>1&&_11){
83
for(var i in _11){
84
if(i in _f){
85
continue;
86
}
87
s[i]=_11[i];
88
}
89
}
90
if(al>2&&_12){
91
m.className=_12;
92
}
93
m.innerHTML=_10;
94
if(m["getBoundingClientRect"]){
95
var bcr=m.getBoundingClientRect();
96
return {l:bcr.left,t:bcr.top,w:bcr.width||(bcr.right-bcr.left),h:bcr.height||(bcr.bottom-bcr.top)};
97
}else{
98
return dojo.marginBox(m);
99
}
100
};
101
var _13=0;
102
b._getUniqueId=function(){
103
var id;
104
do{
105
id=dojo._scopeName+"Unique"+(++_13);
106
}while(dojo.byId(id));
107
return id;
108
};
109
})();
110
dojo.mixin(dojox.gfx,{defaultPath:{type:"path",path:""},defaultPolyline:{type:"polyline",points:[]},defaultRect:{type:"rect",x:0,y:0,width:100,height:100,r:0},defaultEllipse:{type:"ellipse",cx:0,cy:0,rx:200,ry:100},defaultCircle:{type:"circle",cx:0,cy:0,r:100},defaultLine:{type:"line",x1:0,y1:0,x2:100,y2:100},defaultImage:{type:"image",x:0,y:0,width:0,height:0,src:""},defaultText:{type:"text",x:0,y:0,text:"",align:"start",decoration:"none",rotated:false,kerning:true},defaultTextPath:{type:"textpath",text:"",align:"start",decoration:"none",rotated:false,kerning:true},defaultStroke:{type:"stroke",color:"black",style:"solid",width:1,cap:"butt",join:4},defaultLinearGradient:{type:"linear",x1:0,y1:0,x2:100,y2:100,colors:[{offset:0,color:"black"},{offset:1,color:"white"}]},defaultRadialGradient:{type:"radial",cx:0,cy:0,r:100,colors:[{offset:0,color:"black"},{offset:1,color:"white"}]},defaultPattern:{type:"pattern",x:0,y:0,width:0,height:0,src:""},defaultFont:{type:"font",style:"normal",variant:"normal",weight:"normal",size:"10pt",family:"serif"},getDefault:(function(){
111
var _14={};
112
return function(_15){
113
var t=_14[_15];
114
if(t){
115
return new t();
116
}
117
t=_14[_15]=new Function;
118
t.prototype=dojox.gfx["default"+_15];
119
return new t();
120
};
121
})(),normalizeColor:function(_16){
122
return (_16 instanceof dojo.Color)?_16:new dojo.Color(_16);
123
},normalizeParameters:function(_17,_18){
124
if(_18){
125
var _19={};
126
for(var x in _17){
127
if(x in _18&&!(x in _19)){
128
_17[x]=_18[x];
129
}
130
}
131
}
132
return _17;
133
},makeParameters:function(_1a,_1b){
134
if(!_1b){
135
return dojo.delegate(_1a);
136
}
137
var _1c={};
138
for(var i in _1a){
139
if(!(i in _1c)){
140
_1c[i]=dojo.clone((i in _1b)?_1b[i]:_1a[i]);
141
}
142
}
143
return _1c;
144
},formatNumber:function(x,_1d){
145
var val=x.toString();
146
if(val.indexOf("e")>=0){
147
val=x.toFixed(4);
148
}else{
149
var _1e=val.indexOf(".");
150
if(_1e>=0&&val.length-_1e>5){
151
val=x.toFixed(4);
152
}
153
}
154
if(x<0){
155
return val;
156
}
157
return _1d?" "+val:val;
158
},makeFontString:function(_1f){
159
return _1f.style+" "+_1f.variant+" "+_1f.weight+" "+_1f.size+" "+_1f.family;
160
},splitFontString:function(str){
161
var _20=dojox.gfx.getDefault("Font");
162
var t=str.split(/\s+/);
163
do{
164
if(t.length<5){
165
break;
166
}
167
_20.style=t[0];
168
_20.variant=t[1];
169
_20.weight=t[2];
170
var i=t[3].indexOf("/");
171
_20.size=i<0?t[3]:t[3].substring(0,i);
172
var j=4;
173
if(i<0){
174
if(t[4]=="/"){
175
j=6;
176
}else{
177
if(t[4].charAt(0)=="/"){
178
j=5;
179
}
180
}
181
}
182
if(j<t.length){
183
_20.family=t.slice(j).join(" ");
184
}
185
}while(false);
186
return _20;
187
},cm_in_pt:72/2.54,mm_in_pt:7.2/2.54,px_in_pt:function(){
188
return dojox.gfx._base._getCachedFontMeasurements()["12pt"]/12;
189
},pt2px:function(len){
190
return len*dojox.gfx.px_in_pt();
191
},px2pt:function(len){
192
return len/dojox.gfx.px_in_pt();
193
},normalizedLength:function(len){
194
if(len.length==0){
195
return 0;
196
}
197
if(len.length>2){
198
var _21=dojox.gfx.px_in_pt();
199
var val=parseFloat(len);
200
switch(len.slice(-2)){
201
case "px":
202
return val;
203
case "pt":
204
return val*_21;
205
case "in":
206
return val*72*_21;
207
case "pc":
208
return val*12*_21;
209
case "mm":
210
return val*dojox.gfx.mm_in_pt*_21;
211
case "cm":
212
return val*dojox.gfx.cm_in_pt*_21;
213
}
214
}
215
return parseFloat(len);
216
},pathVmlRegExp:/([A-Za-z]+)|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g,pathSvgRegExp:/([A-Za-z])|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g,equalSources:function(a,b){
217
return a&&b&&a==b;
218
}});
219
}