blob: 6b6698d5a1c14d13b9aa09b4a555296b9ad4dc0b [file] [log] [blame]
/*
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.vml"]){
dojo._hasResource["dojox.gfx.vml"]=true;
dojo.provide("dojox.gfx.vml");
dojo.require("dojox.gfx._base");
dojo.require("dojox.gfx.shape");
dojo.require("dojox.gfx.path");
dojo.require("dojox.gfx.arc");
(function(){
var d=dojo,g=dojox.gfx,m=g.matrix,gs=g.shape,_1=g.vml;
_1.xmlns="urn:schemas-microsoft-com:vml";
_1.text_alignment={start:"left",middle:"center",end:"right"};
_1._parseFloat=function(_2){
return _2.match(/^\d+f$/i)?parseInt(_2)/65536:parseFloat(_2);
};
_1._bool={"t":1,"true":1};
d.extend(g.Shape,{setFill:function(_3){
if(!_3){
this.fillStyle=null;
this.rawNode.filled="f";
return this;
}
var i,f,fo,a,s;
if(typeof _3=="object"&&"type" in _3){
switch(_3.type){
case "linear":
var _4=this._getRealMatrix();
s=[];
f=g.makeParameters(g.defaultLinearGradient,_3);
a=f.colors;
this.fillStyle=f;
d.forEach(a,function(v,i,a){
a[i].color=g.normalizeColor(v.color);
});
if(a[0].offset>0){
s.push("0 "+a[0].color.toHex());
}
for(i=0;i<a.length;++i){
s.push(a[i].offset.toFixed(8)+" "+a[i].color.toHex());
}
i=a.length-1;
if(a[i].offset<1){
s.push("1 "+a[i].color.toHex());
}
fo=this.rawNode.fill;
fo.colors.value=s.join(";");
fo.method="sigma";
fo.type="gradient";
var _5=_4?m.multiplyPoint(_4,f.x1,f.y1):{x:f.x1,y:f.y1},_6=_4?m.multiplyPoint(_4,f.x2,f.y2):{x:f.x2,y:f.y2};
fo.angle=(m._radToDeg(Math.atan2(_6.x-_5.x,_6.y-_5.y))+180)%360;
fo.on=true;
break;
case "radial":
f=g.makeParameters(g.defaultRadialGradient,_3);
this.fillStyle=f;
var l=parseFloat(this.rawNode.style.left),t=parseFloat(this.rawNode.style.top),w=parseFloat(this.rawNode.style.width),h=parseFloat(this.rawNode.style.height),c=isNaN(w)?1:2*f.r/w;
a=[];
if(f.colors[0].offset>0){
a.push({offset:1,color:g.normalizeColor(f.colors[0].color)});
}
d.forEach(f.colors,function(v,i){
a.push({offset:1-v.offset*c,color:g.normalizeColor(v.color)});
});
i=a.length-1;
while(i>=0&&a[i].offset<0){
--i;
}
if(i<a.length-1){
var q=a[i],p=a[i+1];
p.color=d.blendColors(q.color,p.color,q.offset/(q.offset-p.offset));
p.offset=0;
while(a.length-i>2){
a.pop();
}
}
i=a.length-1,s=[];
if(a[i].offset>0){
s.push("0 "+a[i].color.toHex());
}
for(;i>=0;--i){
s.push(a[i].offset.toFixed(8)+" "+a[i].color.toHex());
}
fo=this.rawNode.fill;
fo.colors.value=s.join(";");
fo.method="sigma";
fo.type="gradientradial";
if(isNaN(w)||isNaN(h)||isNaN(l)||isNaN(t)){
fo.focusposition="0.5 0.5";
}else{
fo.focusposition=((f.cx-l)/w).toFixed(8)+" "+((f.cy-t)/h).toFixed(8);
}
fo.focussize="0 0";
fo.on=true;
break;
case "pattern":
f=g.makeParameters(g.defaultPattern,_3);
this.fillStyle=f;
fo=this.rawNode.fill;
fo.type="tile";
fo.src=f.src;
if(f.width&&f.height){
fo.size.x=g.px2pt(f.width);
fo.size.y=g.px2pt(f.height);
}
fo.alignShape="f";
fo.position.x=0;
fo.position.y=0;
fo.origin.x=f.width?f.x/f.width:0;
fo.origin.y=f.height?f.y/f.height:0;
fo.on=true;
break;
}
this.rawNode.fill.opacity=1;
return this;
}
this.fillStyle=g.normalizeColor(_3);
fo=this.rawNode.fill;
if(!fo){
fo=this.rawNode.ownerDocument.createElement("v:fill");
}
fo.method="any";
fo.type="solid";
fo.opacity=this.fillStyle.a;
this.rawNode.fillcolor=this.fillStyle.toHex();
this.rawNode.filled=true;
return this;
},setStroke:function(_7){
if(!_7){
this.strokeStyle=null;
this.rawNode.stroked="f";
return this;
}
if(typeof _7=="string"||d.isArray(_7)||_7 instanceof d.Color){
_7={color:_7};
}
var s=this.strokeStyle=g.makeParameters(g.defaultStroke,_7);
s.color=g.normalizeColor(s.color);
var rn=this.rawNode;
rn.stroked=true;
rn.strokecolor=s.color.toCss();
rn.strokeweight=s.width+"px";
if(rn.stroke){
rn.stroke.opacity=s.color.a;
rn.stroke.endcap=this._translate(this._capMap,s.cap);
if(typeof s.join=="number"){
rn.stroke.joinstyle="miter";
rn.stroke.miterlimit=s.join;
}else{
rn.stroke.joinstyle=s.join;
}
rn.stroke.dashstyle=s.style=="none"?"Solid":s.style;
}
return this;
},_capMap:{butt:"flat"},_capMapReversed:{flat:"butt"},_translate:function(_8,_9){
return (_9 in _8)?_8[_9]:_9;
},_applyTransform:function(){
if(this.fillStyle&&this.fillStyle.type=="linear"){
this.setFill(this.fillStyle);
}
var _a=this._getRealMatrix();
if(!_a){
return this;
}
var _b=this.rawNode.skew;
if(typeof _b=="undefined"){
for(var i=0;i<this.rawNode.childNodes.length;++i){
if(this.rawNode.childNodes[i].tagName=="skew"){
_b=this.rawNode.childNodes[i];
break;
}
}
}
if(_b){
_b.on="f";
var mt=_a.xx.toFixed(8)+" "+_a.xy.toFixed(8)+" "+_a.yx.toFixed(8)+" "+_a.yy.toFixed(8)+" 0 0",_c=Math.floor(_a.dx).toFixed()+"px "+Math.floor(_a.dy).toFixed()+"px",s=this.rawNode.style,l=parseFloat(s.left),t=parseFloat(s.top),w=parseFloat(s.width),h=parseFloat(s.height);
if(isNaN(l)){
l=0;
}
if(isNaN(t)){
t=0;
}
if(isNaN(w)||!w){
w=1;
}
if(isNaN(h)||!h){
h=1;
}
var _d=(-l/w-0.5).toFixed(8)+" "+(-t/h-0.5).toFixed(8);
_b.matrix=mt;
_b.origin=_d;
_b.offset=_c;
_b.on=true;
}
return this;
},_setDimensions:function(_e,_f){
return this;
},setRawNode:function(_10){
_10.stroked="f";
_10.filled="f";
this.rawNode=_10;
},_moveToFront:function(){
this.rawNode.parentNode.appendChild(this.rawNode);
return this;
},_moveToBack:function(){
var r=this.rawNode,p=r.parentNode,n=p.firstChild;
p.insertBefore(r,n);
if(n.tagName=="rect"){
n.swapNode(r);
}
return this;
},_getRealMatrix:function(){
return this.parentMatrix?new g.Matrix2D([this.parentMatrix,this.matrix]):this.matrix;
}});
dojo.declare("dojox.gfx.Group",g.Shape,{constructor:function(){
_1.Container._init.call(this);
},_applyTransform:function(){
var _11=this._getRealMatrix();
for(var i=0;i<this.children.length;++i){
this.children[i]._updateParentMatrix(_11);
}
return this;
},_setDimensions:function(_12,_13){
var r=this.rawNode,rs=r.style,bs=this.bgNode.style;
rs.width=_12;
rs.height=_13;
r.coordsize=_12+" "+_13;
bs.width=_12;
bs.height=_13;
for(var i=0;i<this.children.length;++i){
this.children[i]._setDimensions(_12,_13);
}
return this;
}});
g.Group.nodeType="group";
dojo.declare("dojox.gfx.Rect",gs.Rect,{setShape:function(_14){
var _15=this.shape=g.makeParameters(this.shape,_14);
this.bbox=null;
var r=Math.min(1,(_15.r/Math.min(parseFloat(_15.width),parseFloat(_15.height)))).toFixed(8);
var _16=this.rawNode.parentNode,_17=null;
if(_16){
if(_16.lastChild!==this.rawNode){
for(var i=0;i<_16.childNodes.length;++i){
if(_16.childNodes[i]===this.rawNode){
_17=_16.childNodes[i+1];
break;
}
}
}
_16.removeChild(this.rawNode);
}
if(d.isIE>7){
var _18=this.rawNode.ownerDocument.createElement("v:roundrect");
_18.arcsize=r;
_18.style.display="inline-block";
this.rawNode=_18;
}else{
this.rawNode.arcsize=r;
}
if(_16){
if(_17){
_16.insertBefore(this.rawNode,_17);
}else{
_16.appendChild(this.rawNode);
}
}
var _19=this.rawNode.style;
_19.left=_15.x.toFixed();
_19.top=_15.y.toFixed();
_19.width=(typeof _15.width=="string"&&_15.width.indexOf("%")>=0)?_15.width:_15.width.toFixed();
_19.height=(typeof _15.width=="string"&&_15.height.indexOf("%")>=0)?_15.height:_15.height.toFixed();
return this.setTransform(this.matrix).setFill(this.fillStyle).setStroke(this.strokeStyle);
}});
g.Rect.nodeType="roundrect";
dojo.declare("dojox.gfx.Ellipse",gs.Ellipse,{setShape:function(_1a){
var _1b=this.shape=g.makeParameters(this.shape,_1a);
this.bbox=null;
var _1c=this.rawNode.style;
_1c.left=(_1b.cx-_1b.rx).toFixed();
_1c.top=(_1b.cy-_1b.ry).toFixed();
_1c.width=(_1b.rx*2).toFixed();
_1c.height=(_1b.ry*2).toFixed();
return this.setTransform(this.matrix);
}});
g.Ellipse.nodeType="oval";
dojo.declare("dojox.gfx.Circle",gs.Circle,{setShape:function(_1d){
var _1e=this.shape=g.makeParameters(this.shape,_1d);
this.bbox=null;
var _1f=this.rawNode.style;
_1f.left=(_1e.cx-_1e.r).toFixed();
_1f.top=(_1e.cy-_1e.r).toFixed();
_1f.width=(_1e.r*2).toFixed();
_1f.height=(_1e.r*2).toFixed();
return this;
}});
g.Circle.nodeType="oval";
dojo.declare("dojox.gfx.Line",gs.Line,{constructor:function(_20){
if(_20){
_20.setAttribute("dojoGfxType","line");
}
},setShape:function(_21){
var _22=this.shape=g.makeParameters(this.shape,_21);
this.bbox=null;
this.rawNode.path.v="m"+_22.x1.toFixed()+" "+_22.y1.toFixed()+"l"+_22.x2.toFixed()+" "+_22.y2.toFixed()+"e";
return this.setTransform(this.matrix);
}});
g.Line.nodeType="shape";
dojo.declare("dojox.gfx.Polyline",gs.Polyline,{constructor:function(_23){
if(_23){
_23.setAttribute("dojoGfxType","polyline");
}
},setShape:function(_24,_25){
if(_24&&_24 instanceof Array){
this.shape=g.makeParameters(this.shape,{points:_24});
if(_25&&this.shape.points.length){
this.shape.points.push(this.shape.points[0]);
}
}else{
this.shape=g.makeParameters(this.shape,_24);
}
this.bbox=null;
this._normalizePoints();
var _26=[],p=this.shape.points;
if(p.length>0){
_26.push("m");
_26.push(p[0].x.toFixed(),p[0].y.toFixed());
if(p.length>1){
_26.push("l");
for(var i=1;i<p.length;++i){
_26.push(p[i].x.toFixed(),p[i].y.toFixed());
}
}
}
_26.push("e");
this.rawNode.path.v=_26.join(" ");
return this.setTransform(this.matrix);
}});
g.Polyline.nodeType="shape";
dojo.declare("dojox.gfx.Image",gs.Image,{setShape:function(_27){
var _28=this.shape=g.makeParameters(this.shape,_27);
this.bbox=null;
this.rawNode.firstChild.src=_28.src;
return this.setTransform(this.matrix);
},_applyTransform:function(){
var _29=this._getRealMatrix(),_2a=this.rawNode,s=_2a.style,_2b=this.shape;
if(_29){
_29=m.multiply(_29,{dx:_2b.x,dy:_2b.y});
}else{
_29=m.normalize({dx:_2b.x,dy:_2b.y});
}
if(_29.xy==0&&_29.yx==0&&_29.xx>0&&_29.yy>0){
s.filter="";
s.width=Math.floor(_29.xx*_2b.width);
s.height=Math.floor(_29.yy*_2b.height);
s.left=Math.floor(_29.dx);
s.top=Math.floor(_29.dy);
}else{
var ps=_2a.parentNode.style;
s.left="0px";
s.top="0px";
s.width=ps.width;
s.height=ps.height;
_29=m.multiply(_29,{xx:_2b.width/parseInt(s.width),yy:_2b.height/parseInt(s.height)});
var f=_2a.filters["DXImageTransform.Microsoft.Matrix"];
if(f){
f.M11=_29.xx;
f.M12=_29.xy;
f.M21=_29.yx;
f.M22=_29.yy;
f.Dx=_29.dx;
f.Dy=_29.dy;
}else{
s.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+_29.xx+", M12="+_29.xy+", M21="+_29.yx+", M22="+_29.yy+", Dx="+_29.dx+", Dy="+_29.dy+")";
}
}
return this;
},_setDimensions:function(_2c,_2d){
var r=this.rawNode,f=r.filters["DXImageTransform.Microsoft.Matrix"];
if(f){
var s=r.style;
s.width=_2c;
s.height=_2d;
return this._applyTransform();
}
return this;
}});
g.Image.nodeType="rect";
dojo.declare("dojox.gfx.Text",gs.Text,{constructor:function(_2e){
if(_2e){
_2e.setAttribute("dojoGfxType","text");
}
this.fontStyle=null;
},_alignment:{start:"left",middle:"center",end:"right"},setShape:function(_2f){
this.shape=g.makeParameters(this.shape,_2f);
this.bbox=null;
var r=this.rawNode,s=this.shape,x=s.x,y=s.y.toFixed(),_30;
switch(s.align){
case "middle":
x-=5;
break;
case "end":
x-=10;
break;
}
_30="m"+x.toFixed()+","+y+"l"+(x+10).toFixed()+","+y+"e";
var p=null,t=null,c=r.childNodes;
for(var i=0;i<c.length;++i){
var tag=c[i].tagName;
if(tag=="path"){
p=c[i];
if(t){
break;
}
}else{
if(tag=="textpath"){
t=c[i];
if(p){
break;
}
}
}
}
if(!p){
p=r.ownerDocument.createElement("v:path");
r.appendChild(p);
}
if(!t){
t=r.ownerDocument.createElement("v:textpath");
r.appendChild(t);
}
p.v=_30;
p.textPathOk=true;
t.on=true;
var a=_1.text_alignment[s.align];
t.style["v-text-align"]=a?a:"left";
t.style["text-decoration"]=s.decoration;
t.style["v-rotate-letters"]=s.rotated;
t.style["v-text-kern"]=s.kerning;
t.string=s.text;
return this.setTransform(this.matrix);
},_setFont:function(){
var f=this.fontStyle,c=this.rawNode.childNodes;
for(var i=0;i<c.length;++i){
if(c[i].tagName=="textpath"){
c[i].style.font=g.makeFontString(f);
break;
}
}
this.setTransform(this.matrix);
},_getRealMatrix:function(){
var _31=g.Shape.prototype._getRealMatrix.call(this);
if(_31){
_31=m.multiply(_31,{dy:-g.normalizedLength(this.fontStyle?this.fontStyle.size:"10pt")*0.35});
}
return _31;
},getTextWidth:function(){
var _32=this.rawNode,_33=_32.style.display;
_32.style.display="inline";
var _34=g.pt2px(parseFloat(_32.currentStyle.width));
_32.style.display=_33;
return _34;
}});
g.Text.nodeType="shape";
g.path._calcArc=function(_35){
var _36=Math.cos(_35),_37=Math.sin(_35),p2={x:_36+(4/3)*(1-_36),y:_37-(4/3)*_36*(1-_36)/_37};
return {s:{x:_36,y:-_37},c1:{x:p2.x,y:-p2.y},c2:p2,e:{x:_36,y:_37}};
};
dojo.declare("dojox.gfx.Path",g.path.Path,{constructor:function(_38){
if(_38&&!_38.getAttribute("dojoGfxType")){
_38.setAttribute("dojoGfxType","path");
}
this.vmlPath="";
this.lastControl={};
},_updateWithSegment:function(_39){
var _3a=d.clone(this.last);
g.Path.superclass._updateWithSegment.apply(this,arguments);
var _3b=this[this.renderers[_39.action]](_39,_3a);
if(typeof this.vmlPath=="string"){
this.vmlPath+=_3b.join("");
this.rawNode.path.v=this.vmlPath+" r0,0 e";
}else{
Array.prototype.push.apply(this.vmlPath,_3b);
}
},setShape:function(_3c){
this.vmlPath=[];
this.lastControl.type="";
g.Path.superclass.setShape.apply(this,arguments);
this.vmlPath=this.vmlPath.join("");
this.rawNode.path.v=this.vmlPath+" r0,0 e";
return this;
},_pathVmlToSvgMap:{m:"M",l:"L",t:"m",r:"l",c:"C",v:"c",qb:"Q",x:"z",e:""},renderers:{M:"_moveToA",m:"_moveToR",L:"_lineToA",l:"_lineToR",H:"_hLineToA",h:"_hLineToR",V:"_vLineToA",v:"_vLineToR",C:"_curveToA",c:"_curveToR",S:"_smoothCurveToA",s:"_smoothCurveToR",Q:"_qCurveToA",q:"_qCurveToR",T:"_qSmoothCurveToA",t:"_qSmoothCurveToR",A:"_arcTo",a:"_arcTo",Z:"_closePath",z:"_closePath"},_addArgs:function(_3d,_3e,_3f,_40){
var n=_3e instanceof Array?_3e:_3e.args;
for(var i=_3f;i<_40;++i){
_3d.push(" ",n[i].toFixed());
}
},_adjustRelCrd:function(_41,_42,_43){
var n=_42 instanceof Array?_42:_42.args,l=n.length,_44=new Array(l),i=0,x=_41.x,y=_41.y;
if(typeof x!="number"){
_44[0]=x=n[0];
_44[1]=y=n[1];
i=2;
}
if(typeof _43=="number"&&_43!=2){
var j=_43;
while(j<=l){
for(;i<j;i+=2){
_44[i]=x+n[i];
_44[i+1]=y+n[i+1];
}
x=_44[j-2];
y=_44[j-1];
j+=_43;
}
}else{
for(;i<l;i+=2){
_44[i]=(x+=n[i]);
_44[i+1]=(y+=n[i+1]);
}
}
return _44;
},_adjustRelPos:function(_45,_46){
var n=_46 instanceof Array?_46:_46.args,l=n.length,_47=new Array(l);
for(var i=0;i<l;++i){
_47[i]=(_45+=n[i]);
}
return _47;
},_moveToA:function(_48){
var p=[" m"],n=_48 instanceof Array?_48:_48.args,l=n.length;
this._addArgs(p,n,0,2);
if(l>2){
p.push(" l");
this._addArgs(p,n,2,l);
}
this.lastControl.type="";
return p;
},_moveToR:function(_49,_4a){
return this._moveToA(this._adjustRelCrd(_4a,_49));
},_lineToA:function(_4b){
var p=[" l"],n=_4b instanceof Array?_4b:_4b.args;
this._addArgs(p,n,0,n.length);
this.lastControl.type="";
return p;
},_lineToR:function(_4c,_4d){
return this._lineToA(this._adjustRelCrd(_4d,_4c));
},_hLineToA:function(_4e,_4f){
var p=[" l"],y=" "+_4f.y.toFixed(),n=_4e instanceof Array?_4e:_4e.args,l=n.length;
for(var i=0;i<l;++i){
p.push(" ",n[i].toFixed(),y);
}
this.lastControl.type="";
return p;
},_hLineToR:function(_50,_51){
return this._hLineToA(this._adjustRelPos(_51.x,_50),_51);
},_vLineToA:function(_52,_53){
var p=[" l"],x=" "+_53.x.toFixed(),n=_52 instanceof Array?_52:_52.args,l=n.length;
for(var i=0;i<l;++i){
p.push(x," ",n[i].toFixed());
}
this.lastControl.type="";
return p;
},_vLineToR:function(_54,_55){
return this._vLineToA(this._adjustRelPos(_55.y,_54),_55);
},_curveToA:function(_56){
var p=[],n=_56 instanceof Array?_56:_56.args,l=n.length,lc=this.lastControl;
for(var i=0;i<l;i+=6){
p.push(" c");
this._addArgs(p,n,i,i+6);
}
lc.x=n[l-4];
lc.y=n[l-3];
lc.type="C";
return p;
},_curveToR:function(_57,_58){
return this._curveToA(this._adjustRelCrd(_58,_57,6));
},_smoothCurveToA:function(_59,_5a){
var p=[],n=_59 instanceof Array?_59:_59.args,l=n.length,lc=this.lastControl,i=0;
if(lc.type!="C"){
p.push(" c");
this._addArgs(p,[_5a.x,_5a.y],0,2);
this._addArgs(p,n,0,4);
lc.x=n[0];
lc.y=n[1];
lc.type="C";
i=4;
}
for(;i<l;i+=4){
p.push(" c");
this._addArgs(p,[2*_5a.x-lc.x,2*_5a.y-lc.y],0,2);
this._addArgs(p,n,i,i+4);
lc.x=n[i];
lc.y=n[i+1];
}
return p;
},_smoothCurveToR:function(_5b,_5c){
return this._smoothCurveToA(this._adjustRelCrd(_5c,_5b,4),_5c);
},_qCurveToA:function(_5d){
var p=[],n=_5d instanceof Array?_5d:_5d.args,l=n.length,lc=this.lastControl;
for(var i=0;i<l;i+=4){
p.push(" qb");
this._addArgs(p,n,i,i+4);
}
lc.x=n[l-4];
lc.y=n[l-3];
lc.type="Q";
return p;
},_qCurveToR:function(_5e,_5f){
return this._qCurveToA(this._adjustRelCrd(_5f,_5e,4));
},_qSmoothCurveToA:function(_60,_61){
var p=[],n=_60 instanceof Array?_60:_60.args,l=n.length,lc=this.lastControl,i=0;
if(lc.type!="Q"){
p.push(" qb");
this._addArgs(p,[lc.x=_61.x,lc.y=_61.y],0,2);
lc.type="Q";
this._addArgs(p,n,0,2);
i=2;
}
for(;i<l;i+=2){
p.push(" qb");
this._addArgs(p,[lc.x=2*_61.x-lc.x,lc.y=2*_61.y-lc.y],0,2);
this._addArgs(p,n,i,i+2);
}
return p;
},_qSmoothCurveToR:function(_62,_63){
return this._qSmoothCurveToA(this._adjustRelCrd(_63,_62,2),_63);
},_arcTo:function(_64,_65){
var p=[],n=_64.args,l=n.length,_66=_64.action=="a";
for(var i=0;i<l;i+=7){
var x1=n[i+5],y1=n[i+6];
if(_66){
x1+=_65.x;
y1+=_65.y;
}
var _67=g.arc.arcAsBezier(_65,n[i],n[i+1],n[i+2],n[i+3]?1:0,n[i+4]?1:0,x1,y1);
for(var j=0;j<_67.length;++j){
p.push(" c");
var t=_67[j];
this._addArgs(p,t,0,t.length);
}
_65.x=x1;
_65.y=y1;
}
this.lastControl.type="";
return p;
},_closePath:function(){
this.lastControl.type="";
return ["x"];
}});
g.Path.nodeType="shape";
dojo.declare("dojox.gfx.TextPath",g.Path,{constructor:function(_68){
if(_68){
_68.setAttribute("dojoGfxType","textpath");
}
this.fontStyle=null;
if(!("text" in this)){
this.text=d.clone(g.defaultTextPath);
}
if(!("fontStyle" in this)){
this.fontStyle=d.clone(g.defaultFont);
}
},setText:function(_69){
this.text=g.makeParameters(this.text,typeof _69=="string"?{text:_69}:_69);
this._setText();
return this;
},setFont:function(_6a){
this.fontStyle=typeof _6a=="string"?g.splitFontString(_6a):g.makeParameters(g.defaultFont,_6a);
this._setFont();
return this;
},_setText:function(){
this.bbox=null;
var r=this.rawNode,s=this.text,p=null,t=null,c=r.childNodes;
for(var i=0;i<c.length;++i){
var tag=c[i].tagName;
if(tag=="path"){
p=c[i];
if(t){
break;
}
}else{
if(tag=="textpath"){
t=c[i];
if(p){
break;
}
}
}
}
if(!p){
p=this.rawNode.ownerDocument.createElement("v:path");
r.appendChild(p);
}
if(!t){
t=this.rawNode.ownerDocument.createElement("v:textpath");
r.appendChild(t);
}
p.textPathOk=true;
t.on=true;
var a=_1.text_alignment[s.align];
t.style["v-text-align"]=a?a:"left";
t.style["text-decoration"]=s.decoration;
t.style["v-rotate-letters"]=s.rotated;
t.style["v-text-kern"]=s.kerning;
t.string=s.text;
},_setFont:function(){
var f=this.fontStyle,c=this.rawNode.childNodes;
for(var i=0;i<c.length;++i){
if(c[i].tagName=="textpath"){
c[i].style.font=g.makeFontString(f);
break;
}
}
}});
g.TextPath.nodeType="shape";
dojo.declare("dojox.gfx.Surface",gs.Surface,{constructor:function(){
_1.Container._init.call(this);
},setDimensions:function(_6b,_6c){
this.width=g.normalizedLength(_6b);
this.height=g.normalizedLength(_6c);
if(!this.rawNode){
return this;
}
var cs=this.clipNode.style,r=this.rawNode,rs=r.style,bs=this.bgNode.style,ps=this._parent.style,i;
ps.width=_6b;
ps.height=_6c;
cs.width=_6b;
cs.height=_6c;
cs.clip="rect(0px "+_6b+"px "+_6c+"px 0px)";
rs.width=_6b;
rs.height=_6c;
r.coordsize=_6b+" "+_6c;
bs.width=_6b;
bs.height=_6c;
for(i=0;i<this.children.length;++i){
this.children[i]._setDimensions(_6b,_6c);
}
return this;
},getDimensions:function(){
var t=this.rawNode?{width:g.normalizedLength(this.rawNode.style.width),height:g.normalizedLength(this.rawNode.style.height)}:null;
if(t.width<=0){
t.width=this.width;
}
if(t.height<=0){
t.height=this.height;
}
return t;
}});
g.createSurface=function(_6d,_6e,_6f){
if(!_6e&&!_6f){
var pos=d.position(_6d);
_6e=_6e||pos.w;
_6f=_6f||pos.h;
}
if(typeof _6e=="number"){
_6e=_6e+"px";
}
if(typeof _6f=="number"){
_6f=_6f+"px";
}
var s=new g.Surface(),p=d.byId(_6d),c=s.clipNode=p.ownerDocument.createElement("div"),r=s.rawNode=p.ownerDocument.createElement("v:group"),cs=c.style,rs=r.style;
if(d.isIE>7){
rs.display="inline-block";
}
s._parent=p;
s._nodes.push(c);
p.style.width=_6e;
p.style.height=_6f;
cs.position="absolute";
cs.width=_6e;
cs.height=_6f;
cs.clip="rect(0px "+_6e+" "+_6f+" 0px)";
rs.position="absolute";
rs.width=_6e;
rs.height=_6f;
r.coordsize=(_6e==="100%"?_6e:parseFloat(_6e))+" "+(_6f==="100%"?_6f:parseFloat(_6f));
r.coordorigin="0 0";
var b=s.bgNode=r.ownerDocument.createElement("v:rect"),bs=b.style;
bs.left=bs.top=0;
bs.width=rs.width;
bs.height=rs.height;
b.filled=b.stroked="f";
r.appendChild(b);
c.appendChild(r);
p.appendChild(c);
s.width=g.normalizedLength(_6e);
s.height=g.normalizedLength(_6f);
return s;
};
_1.Container={_init:function(){
gs.Container._init.call(this);
},add:function(_70){
if(this!=_70.getParent()){
this.rawNode.appendChild(_70.rawNode);
if(!_70.getParent()){
_70.setFill(_70.getFill());
_70.setStroke(_70.getStroke());
}
gs.Container.add.apply(this,arguments);
}
return this;
},remove:function(_71,_72){
if(this==_71.getParent()){
if(this.rawNode==_71.rawNode.parentNode){
this.rawNode.removeChild(_71.rawNode);
}
gs.Container.remove.apply(this,arguments);
}
return this;
},clear:function(){
var r=this.rawNode;
while(r.firstChild!=r.lastChild){
if(r.firstChild!=this.bgNode){
r.removeChild(r.firstChild);
}
if(r.lastChild!=this.bgNode){
r.removeChild(r.lastChild);
}
}
return gs.Container.clear.apply(this,arguments);
},_moveChildToFront:gs.Container._moveChildToFront,_moveChildToBack:gs.Container._moveChildToBack};
dojo.mixin(gs.Creator,{createGroup:function(){
var _73=this.createObject(g.Group,null);
var r=_73.rawNode.ownerDocument.createElement("v:rect");
r.style.left=r.style.top=0;
r.style.width=_73.rawNode.style.width;
r.style.height=_73.rawNode.style.height;
r.filled=r.stroked="f";
_73.rawNode.appendChild(r);
_73.bgNode=r;
return _73;
},createImage:function(_74){
if(!this.rawNode){
return null;
}
var _75=new g.Image(),doc=this.rawNode.ownerDocument,_76=doc.createElement("v:rect");
_76.stroked="f";
_76.style.width=this.rawNode.style.width;
_76.style.height=this.rawNode.style.height;
var img=doc.createElement("v:imagedata");
_76.appendChild(img);
_75.setRawNode(_76);
this.rawNode.appendChild(_76);
_75.setShape(_74);
this.add(_75);
return _75;
},createRect:function(_77){
if(!this.rawNode){
return null;
}
var _78=new g.Rect,_79=this.rawNode.ownerDocument.createElement("v:roundrect");
if(d.isIE>7){
_79.style.display="inline-block";
}
_78.setRawNode(_79);
this.rawNode.appendChild(_79);
_78.setShape(_77);
this.add(_78);
return _78;
},createObject:function(_7a,_7b){
if(!this.rawNode){
return null;
}
var _7c=new _7a(),_7d=this.rawNode.ownerDocument.createElement("v:"+_7a.nodeType);
_7c.setRawNode(_7d);
this.rawNode.appendChild(_7d);
switch(_7a){
case g.Group:
case g.Line:
case g.Polyline:
case g.Image:
case g.Text:
case g.Path:
case g.TextPath:
this._overrideSize(_7d);
}
_7c.setShape(_7b);
this.add(_7c);
return _7c;
},_overrideSize:function(_7e){
var s=this.rawNode.style,w=s.width,h=s.height;
_7e.style.width=w;
_7e.style.height=h;
_7e.coordsize=parseInt(w)+" "+parseInt(h);
}});
d.extend(g.Group,_1.Container);
d.extend(g.Group,gs.Creator);
d.extend(g.Surface,_1.Container);
d.extend(g.Surface,gs.Creator);
})();
}