root / trunk / web / dojo / dojox / gfx / _base.js
History | View | Annotate | Download (5.46 KB)
1 | 9 | andrej.cim | /*
|
---|---|---|---|
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 | } |