198 lines
5.0 KiB
JavaScript
198 lines
5.0 KiB
JavaScript
//>>built
|
|
define("dojox/gfx/utils",["dojo/_base/kernel","dojo/_base/lang","./_base","dojo/_base/html","dojo/_base/array","dojo/_base/window","dojo/_base/json","dojo/_base/Deferred","dojo/_base/sniff","require","dojo/_base/config"],function(_1,_2,g,_3,_4,_5,_6,_7,_8,_9,_a){
|
|
var gu=g.utils={};
|
|
_2.mixin(gu,{forEach:function(_b,f,o){
|
|
o=o||_5.global;
|
|
f.call(o,_b);
|
|
if(_b instanceof g.Surface||_b instanceof g.Group){
|
|
_4.forEach(_b.children,function(_c){
|
|
gu.forEach(_c,f,o);
|
|
});
|
|
}
|
|
},serialize:function(_d){
|
|
var t={},v,_e=_d instanceof g.Surface;
|
|
if(_e||_d instanceof g.Group){
|
|
t.children=_4.map(_d.children,gu.serialize);
|
|
if(_e){
|
|
return t.children;
|
|
}
|
|
}else{
|
|
t.shape=_d.getShape();
|
|
}
|
|
if(_d.getTransform){
|
|
v=_d.getTransform();
|
|
if(v){
|
|
t.transform=v;
|
|
}
|
|
}
|
|
if(_d.getStroke){
|
|
v=_d.getStroke();
|
|
if(v){
|
|
t.stroke=v;
|
|
}
|
|
}
|
|
if(_d.getFill){
|
|
v=_d.getFill();
|
|
if(v){
|
|
t.fill=v;
|
|
}
|
|
}
|
|
if(_d.getFont){
|
|
v=_d.getFont();
|
|
if(v){
|
|
t.font=v;
|
|
}
|
|
}
|
|
return t;
|
|
},toJson:function(_f,_10){
|
|
return _6.toJson(gu.serialize(_f),_10);
|
|
},deserialize:function(_11,_12){
|
|
if(_12 instanceof Array){
|
|
return _4.map(_12,_2.hitch(null,gu.deserialize,_11));
|
|
}
|
|
var _13=("shape" in _12)?_11.createShape(_12.shape):_11.createGroup();
|
|
if("transform" in _12){
|
|
_13.setTransform(_12.transform);
|
|
}
|
|
if("stroke" in _12){
|
|
_13.setStroke(_12.stroke);
|
|
}
|
|
if("fill" in _12){
|
|
_13.setFill(_12.fill);
|
|
}
|
|
if("font" in _12){
|
|
_13.setFont(_12.font);
|
|
}
|
|
if("children" in _12){
|
|
_4.forEach(_12.children,_2.hitch(null,gu.deserialize,_13));
|
|
}
|
|
return _13;
|
|
},fromJson:function(_14,_15){
|
|
return gu.deserialize(_14,_6.fromJson(_15));
|
|
},toSvg:function(_16){
|
|
var _17=new _7();
|
|
if(g.renderer==="svg"){
|
|
try{
|
|
var svg=gu._cleanSvg(gu._innerXML(_16.rawNode));
|
|
_17.callback(svg);
|
|
}
|
|
catch(e){
|
|
_17.errback(e);
|
|
}
|
|
}else{
|
|
if(!gu._initSvgSerializerDeferred){
|
|
gu._initSvgSerializer();
|
|
}
|
|
var _18=gu.toJson(_16);
|
|
var _19=function(){
|
|
try{
|
|
var _1a=_16.getDimensions();
|
|
var _1b=_1a.width;
|
|
var _1c=_1a.height;
|
|
var _1d=gu._gfxSvgProxy.document.createElement("div");
|
|
gu._gfxSvgProxy.document.body.appendChild(_1d);
|
|
_5.withDoc(gu._gfxSvgProxy.document,function(){
|
|
_3.style(_1d,"width",_1b);
|
|
_3.style(_1d,"height",_1c);
|
|
},this);
|
|
var ts=gu._gfxSvgProxy[dojox._scopeName].gfx.createSurface(_1d,_1b,_1c);
|
|
var _1e=function(_1f){
|
|
try{
|
|
gu._gfxSvgProxy[dojox._scopeName].gfx.utils.fromJson(_1f,_18);
|
|
var svg=gu._cleanSvg(_1d.innerHTML);
|
|
_1f.clear();
|
|
_1f.destroy();
|
|
gu._gfxSvgProxy.document.body.removeChild(_1d);
|
|
_17.callback(svg);
|
|
}
|
|
catch(e){
|
|
_17.errback(e);
|
|
}
|
|
};
|
|
ts.whenLoaded(null,_1e);
|
|
}
|
|
catch(ex){
|
|
_17.errback(ex);
|
|
}
|
|
};
|
|
if(gu._initSvgSerializerDeferred.fired>0){
|
|
_19();
|
|
}else{
|
|
gu._initSvgSerializerDeferred.addCallback(_19);
|
|
}
|
|
}
|
|
return _17;
|
|
},_gfxSvgProxy:null,_initSvgSerializerDeferred:null,_svgSerializerInitialized:function(){
|
|
gu._initSvgSerializerDeferred.callback(true);
|
|
},_initSvgSerializer:function(){
|
|
if(!gu._initSvgSerializerDeferred){
|
|
gu._initSvgSerializerDeferred=new _7();
|
|
var f=_5.doc.createElement("iframe");
|
|
_3.style(f,{display:"none",position:"absolute",width:"1em",height:"1em",top:"-10000px"});
|
|
var _20;
|
|
if(_8("ie")){
|
|
f.onreadystatechange=function(){
|
|
if(f.contentWindow.document.readyState=="complete"){
|
|
f.onreadystatechange=function(){
|
|
};
|
|
_20=setInterval(function(){
|
|
if(f.contentWindow[_1.scopeMap["dojo"][1]._scopeName]&&f.contentWindow[_1.scopeMap["dojox"][1]._scopeName].gfx&&f.contentWindow[_1.scopeMap["dojox"][1]._scopeName].gfx.utils){
|
|
clearInterval(_20);
|
|
f.contentWindow.parent[_1.scopeMap["dojox"][1]._scopeName].gfx.utils._gfxSvgProxy=f.contentWindow;
|
|
f.contentWindow.parent[_1.scopeMap["dojox"][1]._scopeName].gfx.utils._svgSerializerInitialized();
|
|
}
|
|
},50);
|
|
}
|
|
};
|
|
}else{
|
|
f.onload=function(){
|
|
f.onload=function(){
|
|
};
|
|
_20=setInterval(function(){
|
|
if(f.contentWindow[_1.scopeMap["dojo"][1]._scopeName]&&f.contentWindow[_1.scopeMap["dojox"][1]._scopeName].gfx&&f.contentWindow[_1.scopeMap["dojox"][1]._scopeName].gfx.utils){
|
|
clearInterval(_20);
|
|
f.contentWindow.parent[_1.scopeMap["dojox"][1]._scopeName].gfx.utils._gfxSvgProxy=f.contentWindow;
|
|
f.contentWindow.parent[_1.scopeMap["dojox"][1]._scopeName].gfx.utils._svgSerializerInitialized();
|
|
}
|
|
},50);
|
|
};
|
|
}
|
|
var uri=(_a["dojoxGfxSvgProxyFrameUrl"]||_9.toUrl("dojox/gfx/resources/gfxSvgProxyFrame.html"));
|
|
f.setAttribute("src",uri.toString());
|
|
_5.body().appendChild(f);
|
|
}
|
|
},_innerXML:function(_21){
|
|
if(_21.innerXML){
|
|
return _21.innerXML;
|
|
}else{
|
|
if(_21.xml){
|
|
return _21.xml;
|
|
}else{
|
|
if(typeof XMLSerializer!="undefined"){
|
|
return (new XMLSerializer()).serializeToString(_21);
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
},_cleanSvg:function(svg){
|
|
if(svg){
|
|
if(svg.indexOf("xmlns=\"http://www.w3.org/2000/svg\"")==-1){
|
|
svg=svg.substring(4,svg.length);
|
|
svg="<svg xmlns=\"http://www.w3.org/2000/svg\""+svg;
|
|
}
|
|
if(svg.indexOf("xmlns:xlink=\"http://www.w3.org/1999/xlink\"")==-1){
|
|
svg=svg.substring(4,svg.length);
|
|
svg="<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\""+svg;
|
|
}
|
|
if(svg.indexOf("xlink:href")===-1){
|
|
svg=svg.replace(/href\s*=/g,"xlink:href=");
|
|
}
|
|
svg=svg.replace(/\bdojoGfx\w*\s*=\s*(['"])\w*\1/g,"");
|
|
svg=svg.replace(/\b__gfxObject__\s*=\s*(['"])\w*\1/g,"");
|
|
svg=svg.replace(/[=]([^"']+?)(\s|>)/g,"=\"$1\"$2");
|
|
}
|
|
return svg;
|
|
}});
|
|
return gu;
|
|
});
|