| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojox.gfx._base"]){ |
| dojo._hasResource["dojox.gfx._base"]=true; |
| dojo.provide("dojox.gfx._base"); |
| (function(){ |
| var g=dojox.gfx,b=g._base; |
| g._hasClass=function(_1,_2){ |
| var _3=_1.getAttribute("className"); |
| return _3&&(" "+_3+" ").indexOf(" "+_2+" ")>=0; |
| }; |
| g._addClass=function(_4,_5){ |
| var _6=_4.getAttribute("className")||""; |
| if(!_6||(" "+_6+" ").indexOf(" "+_5+" ")<0){ |
| _4.setAttribute("className",_6+(_6?" ":"")+_5); |
| } |
| }; |
| g._removeClass=function(_7,_8){ |
| var _9=_7.getAttribute("className"); |
| if(_9){ |
| _7.setAttribute("className",_9.replace(new RegExp("(^|\\s+)"+_8+"(\\s+|$)"),"$1$2")); |
| } |
| }; |
| b._getFontMeasurements=function(){ |
| 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}; |
| if(dojo.isIE){ |
| dojo.doc.documentElement.style.fontSize="100%"; |
| } |
| var _b=dojo.doc.createElement("div"); |
| var s=_b.style; |
| s.position="absolute"; |
| s.left="-100px"; |
| s.top="0px"; |
| s.width="30px"; |
| s.height="1000em"; |
| s.border="0px"; |
| s.margin="0px"; |
| s.padding="0px"; |
| s.outline="none"; |
| s.lineHeight="1"; |
| s.overflow="hidden"; |
| dojo.body().appendChild(_b); |
| for(var p in _a){ |
| _b.style.fontSize=p; |
| _a[p]=Math.round(_b.offsetHeight*12/16)*16/12/1000; |
| } |
| dojo.body().removeChild(_b); |
| _b=null; |
| return _a; |
| }; |
| var _c=null; |
| b._getCachedFontMeasurements=function(_d){ |
| if(_d||!_c){ |
| _c=b._getFontMeasurements(); |
| } |
| return _c; |
| }; |
| var _e=null,_f={}; |
| b._getTextBox=function(_10,_11,_12){ |
| var m,s,al=arguments.length; |
| if(!_e){ |
| m=_e=dojo.doc.createElement("div"); |
| s=m.style; |
| s.position="absolute"; |
| s.left="-10000px"; |
| s.top="0"; |
| dojo.body().appendChild(m); |
| }else{ |
| m=_e; |
| s=m.style; |
| } |
| m.className=""; |
| s.border="0"; |
| s.margin="0"; |
| s.padding="0"; |
| s.outline="0"; |
| if(al>1&&_11){ |
| for(var i in _11){ |
| if(i in _f){ |
| continue; |
| } |
| s[i]=_11[i]; |
| } |
| } |
| if(al>2&&_12){ |
| m.className=_12; |
| } |
| m.innerHTML=_10; |
| if(m["getBoundingClientRect"]){ |
| var bcr=m.getBoundingClientRect(); |
| return {l:bcr.left,t:bcr.top,w:bcr.width||(bcr.right-bcr.left),h:bcr.height||(bcr.bottom-bcr.top)}; |
| }else{ |
| return dojo.marginBox(m); |
| } |
| }; |
| var _13=0; |
| b._getUniqueId=function(){ |
| var id; |
| do{ |
| id=dojo._scopeName+"Unique"+(++_13); |
| }while(dojo.byId(id)); |
| return id; |
| }; |
| })(); |
| 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(){ |
| var _14={}; |
| return function(_15){ |
| var t=_14[_15]; |
| if(t){ |
| return new t(); |
| } |
| t=_14[_15]=new Function; |
| t.prototype=dojox.gfx["default"+_15]; |
| return new t(); |
| }; |
| })(),normalizeColor:function(_16){ |
| return (_16 instanceof dojo.Color)?_16:new dojo.Color(_16); |
| },normalizeParameters:function(_17,_18){ |
| if(_18){ |
| var _19={}; |
| for(var x in _17){ |
| if(x in _18&&!(x in _19)){ |
| _17[x]=_18[x]; |
| } |
| } |
| } |
| return _17; |
| },makeParameters:function(_1a,_1b){ |
| if(!_1b){ |
| return dojo.delegate(_1a); |
| } |
| var _1c={}; |
| for(var i in _1a){ |
| if(!(i in _1c)){ |
| _1c[i]=dojo.clone((i in _1b)?_1b[i]:_1a[i]); |
| } |
| } |
| return _1c; |
| },formatNumber:function(x,_1d){ |
| var val=x.toString(); |
| if(val.indexOf("e")>=0){ |
| val=x.toFixed(4); |
| }else{ |
| var _1e=val.indexOf("."); |
| if(_1e>=0&&val.length-_1e>5){ |
| val=x.toFixed(4); |
| } |
| } |
| if(x<0){ |
| return val; |
| } |
| return _1d?" "+val:val; |
| },makeFontString:function(_1f){ |
| return _1f.style+" "+_1f.variant+" "+_1f.weight+" "+_1f.size+" "+_1f.family; |
| },splitFontString:function(str){ |
| var _20=dojox.gfx.getDefault("Font"); |
| var t=str.split(/\s+/); |
| do{ |
| if(t.length<5){ |
| break; |
| } |
| _20.style=t[0]; |
| _20.variant=t[1]; |
| _20.weight=t[2]; |
| var i=t[3].indexOf("/"); |
| _20.size=i<0?t[3]:t[3].substring(0,i); |
| var j=4; |
| if(i<0){ |
| if(t[4]=="/"){ |
| j=6; |
| }else{ |
| if(t[4].charAt(0)=="/"){ |
| j=5; |
| } |
| } |
| } |
| if(j<t.length){ |
| _20.family=t.slice(j).join(" "); |
| } |
| }while(false); |
| return _20; |
| },cm_in_pt:72/2.54,mm_in_pt:7.2/2.54,px_in_pt:function(){ |
| return dojox.gfx._base._getCachedFontMeasurements()["12pt"]/12; |
| },pt2px:function(len){ |
| return len*dojox.gfx.px_in_pt(); |
| },px2pt:function(len){ |
| return len/dojox.gfx.px_in_pt(); |
| },normalizedLength:function(len){ |
| if(len.length==0){ |
| return 0; |
| } |
| if(len.length>2){ |
| var _21=dojox.gfx.px_in_pt(); |
| var val=parseFloat(len); |
| switch(len.slice(-2)){ |
| case "px": |
| return val; |
| case "pt": |
| return val*_21; |
| case "in": |
| return val*72*_21; |
| case "pc": |
| return val*12*_21; |
| case "mm": |
| return val*dojox.gfx.mm_in_pt*_21; |
| case "cm": |
| return val*dojox.gfx.cm_in_pt*_21; |
| } |
| } |
| return parseFloat(len); |
| },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){ |
| return a&&b&&a==b; |
| }}); |
| } |