graphics-svg-min.js revision 180e0891171a381ce4fa08d3867f7226180b8282
YUI.add("graphics-svg",function(b){var i="svgShape",d=b.Lang,g=b.AttributeLite,j=b.Plugin.Host,l,f,h,k,e;function a(){}a.prototype={curveTo:function(r,p,w,v,u,t){var n,s,q,m,o,z;if(this._pathType!=="C"){this._pathType="C";s=["C"];this._pathArray.push(s);}else{s=this._pathArray[Math.max(0,this._pathArray.length-1)];if(!s){s=[];this._pathArray.push(s);}}n=this._pathArray.length-1;this._pathArray[n]=this._pathArray[n].concat([Math.round(r),Math.round(p),Math.round(w),Math.round(v),u,t]);q=Math.max(u,Math.max(r,w));o=Math.max(t,Math.max(p,v));m=Math.min(u,Math.min(r,w));z=Math.min(t,Math.min(p,v));this._trackSize(q,o);this._trackSize(m,z);},quadraticCurveTo:function(r,q,u,t){var n,s,p,m,o,v;if(this._pathType!=="Q"){this._pathType="Q";s=["Q"];this._pathArray.push(s);}else{s=this._pathArray[Math.max(0,this._pathArray.length-1)];if(!s){s=[];this._pathArray.push(s);}}n=this._pathArray.length-1;this._pathArray[n]=this._pathArray[n].concat([Math.round(r),Math.round(q),Math.round(u),Math.round(t)]);p=Math.max(u,r);o=Math.max(t,q);m=Math.min(u,r);v=Math.min(t,q);this._trackSize(p,o);this._trackSize(m,v);},drawRect:function(m,p,n,o){this.moveTo(m,p);this.lineTo(m+n,p);this.lineTo(m+n,p+o);this.lineTo(m,p+o);this.lineTo(m,p);},drawRoundRect:function(m,r,n,p,o,q){this.moveTo(m,r+q);this.lineTo(m,r+p-q);this.quadraticCurveTo(m,r+p,m+o,r+p);this.lineTo(m+n-o,r+p);this.quadraticCurveTo(m+n,r+p,m+n,r+p-q);this.lineTo(m+n,r+q);this.quadraticCurveTo(m+n,r,m+n-o,r);this.lineTo(m+o,r);this.quadraticCurveTo(m,r,m,r+q);},drawWedge:function(o,r,q,p,n,m){this._drawingComplete=false;this.path=this._getWedgePath({x:o,y:r,startAngle:q,arc:p,radius:n,yRadius:m});},_getWedgePath:function(I){var w=I.x,t=I.y,D=I.startAngle,s=I.arc,o=I.radius,p=I.yRadius||o,C,A,r,H,q,z,v,G,F,n,m,E=0,u=o*2,B=" M"+w+", "+t;if(Math.abs(s)>360){s=360;}C=Math.ceil(Math.abs(s)/45);A=s/C;r=-(A/180)*Math.PI;H=(D/180)*Math.PI;if(C>0){z=w+Math.cos(D/180*Math.PI)*o;v=t+Math.sin(D/180*Math.PI)*p;B+=" L"+Math.round(z)+", "+Math.round(v);B+=" Q";for(;E<C;++E){H+=r;q=H-(r/2);G=w+Math.cos(H)*o;F=t+Math.sin(H)*p;n=w+Math.cos(q)*(o/Math.cos(r/2));m=t+Math.sin(q)*(p/Math.cos(r/2));B+=Math.round(n)+" "+Math.round(m)+" "+Math.round(G)+" "+Math.round(F)+" ";}B+=" L"+w+", "+t;}this._trackSize(u,u);return B;},lineTo:function(r,q,o){var n=arguments,p,m,t,s;this._pathArray=this._pathArray||[];if(typeof r==="string"||typeof r==="number"){n=[[r,q]];}m=n.length;this._shapeType="path";if(this._pathType!=="L"){this._pathType="L";s=["L"];this._pathArray.push(s);}else{s=this._pathArray[Math.max(0,this._pathArray.length-1)];if(!s){s=[];this._pathArray.push(s);}}t=this._pathArray.length-1;for(p=0;p<m;++p){this._pathArray[t]=this._pathArray[t].concat([n[p][0],n[p][1]]);this._trackSize.apply(this,n[p]);}},moveTo:function(m,p){var o,n;this._pathArray=this._pathArray||[];if(this._pathType!="M"){this._pathType="M";n=["M"];this._pathArray.push(n);}else{n=this._pathArray[Math.max(0,this._pathArray.length-1)];if(!n){n=[];this._pathArray.push(n);}}o=this._pathArray.length-1;this._pathArray[o]=this._pathArray[o].concat([m,p]);this._trackSize(m,p);},end:function(){this._draw();},setSize:function(m,n){var o;if(this.get("autoSize")){o=this.get("node");if(m>o.getAttribute("width")){o.setAttribute("width",m);}if(n>o.getAttribute("height")){o.setAttribute("height",n);}}},_trackSize:function(m,n){var o=this.get("node");if(m>this._right){this._right=m;}if(m<this._left){this._left=m;}if(n<this._top){this._top=n;}if(n>this._bottom){this._bottom=n;}this._width=this._right-this._left;this._height=this._bottom-this._top;o.style.left=this._left+"px";o.style.top=this._top+"px";this.setSize(this._width,this._height);}};b.SVGDrawing=a;l=function(m){var o=this,n=b.Plugin&&b.Plugin.Host;if(o._initPlugins&&n){n.call(o);}o.name=o.constructor.NAME;o._eventPrefix=o.constructor.EVENT_PREFIX||o.constructor.NAME;g.call(o);o.addAttrs(m);o.init.apply(this,arguments);if(o._initPlugins){o._initPlugins(m);}o.initialized=true;};l.NAME="svgShape";l.prototype={init:function(){this.initializer.apply(this,arguments);},initializer:function(m){var n=this;n.createNode();n._graphic=m.graphic;n._updateHandler();},addClass:function(m){var n=this.node;n.className.baseVal=d.trim([n.className.baseVal,m].join(" "));},removeClass:function(m){var n=this.node,o=n.className.baseVal;o=o.replace(new RegExp(m+" "),m).replace(new RegExp(m),"");n.className.baseVal=o;},getXY:function(){var p=this._graphic,n=p.getXY(),m=this.get("x"),o=this.get("y");return[n[0]+m,n[1]+o];},setXY:function(n){var o=this._graphic,m=o.getXY();this.set("x",n[0]-m[0]);this.set("y",n[1]-m[1]);},contains:function(m){return m===b.one(this.node);},compareTo:function(m){var n=this.node;return n===m;},test:function(m){return b.Selector.test(this.node,m);},_getDefaultFill:function(){return{type:"solid",opacity:1,cx:0.5,cy:0.5,fx:0.5,fy:0.5,r:0.5};},_getDefaultStroke:function(){return{weight:1,dashstyle:"none",color:"#000",opacity:1};},createNode:function(){var m=document.createElementNS("http://www.w3.org/2000/svg","svg:"+this._type),o=this.get("id"),n=this.get("pointerEvents");this.node=m;this.addClass("yui3-"+i);this.addClass("yui3-"+this.name);if(o){m.setAttribute("id",o);}if(n){m.setAttribute("pointer-events",n);}},isMouseEvent:function(m){if(m.indexOf("mouse")>-1||m.indexOf("click")>-1){return true;}return false;},before:function(n,m){if(this.isMouseEvent(n)){return b.before(n,m,"#"+this.get("id"));}return b.on.apply(this,arguments);},on:function(n,m){if(this.isMouseEvent(n)){return b.on(n,m,"#"+this.get("id"));}return b.on.apply(this,arguments);},after:function(n,m){if(this.isMouseEvent(n)){return b.after(n,m,"#"+this.get("id"));}return b.on.apply(this,arguments);},_strokeChangeHandler:function(r){var p=this.node,q=this.get("stroke"),o,m,s,n;if(q&&q.weight&&q.weight>0){n=q.linejoin||"round";o=q.opacity;m=q.dashstyle||"none";s=d.isArray(m)?m.toString():m;q.color=q.color||"#000000";q.weight=q.weight||1;q.opacity=d.isNumber(o)?o:1;q.linecap=q.linecap||"butt";p.setAttribute("stroke-dasharray",s);
p.setAttribute("stroke",q.color);p.setAttribute("stroke-linecap",q.linecap);p.setAttribute("stroke-width",q.weight);p.setAttribute("stroke-opacity",q.opacity);if(n=="round"||n=="bevel"){p.setAttribute("stroke-linejoin",n);}else{n=parseInt(n,10);if(d.isNumber(n)){p.setAttribute("stroke-miterlimit",Math.max(n,1));p.setAttribute("stroke-linejoin","miter");}}}else{p.setAttribute("stroke","none");}},_fillChangeHandler:function(q){var o=this.node,p=this.get("fill"),m,n;if(p){n=p.type;if(n=="linear"||n=="radial"){this._setGradientFill(p);o.setAttribute("fill","url(#grad"+this.get("id")+")");}else{if(!p.color){o.setAttribute("fill","none");}else{m=p.opacity=d.isNumber(m)?m:1;o.setAttribute("fill",p.color);o.setAttribute("fill-opacity",m);}}}else{o.setAttribute("fill","none");}},_setGradientFill:function(I){var v,t,H,D,B=d.isNumber,A=this._graphic,u=I.type,F=A.getGradientNode("grad"+this.get("id"),u),x=I.stops,y=this.get("width"),M=this.get("height"),E=I.rotation,J,L,z,G,N="0%",K="100%",q="50%",n="50%",p=I.cx,m=I.cy,s=I.fx,o=I.fy,C=I.r;if(u=="linear"){F.setAttribute("gradientTransform","rotate("+E+","+(y/2)+", "+(M/2)+")");F.setAttribute("width",y);F.setAttribute("height",M);F.setAttribute("x1",N);F.setAttribute("y1",q);F.setAttribute("x2",K);F.setAttribute("y2",n);F.setAttribute("gradientUnits","userSpaceOnUse");}else{F.setAttribute("cx",(p*100)+"%");F.setAttribute("cy",(m*100)+"%");F.setAttribute("fx",(s*100)+"%");F.setAttribute("fy",(o*100)+"%");F.setAttribute("r",(C*100)+"%");}L=x.length;z=0;for(J=0;J<L;++J){G=x[J];t=G.opacity;H=G.color;v=G.offset||J/(L-1);v=Math.round(v*100)+"%";t=B(t)?t:1;t=Math.max(0,Math.min(1,t));z=(J+1)/L;D=A._createGraphicNode("stop");D.setAttribute("offset",v);D.setAttribute("stop-color",H);D.setAttribute("stop-opacity",t);F.appendChild(D);}},set:function(){var m=this;g.prototype.set.apply(m,arguments);if(m.initialized){m._updateHandler();}},translate:function(m,n){this._translateX=m;this._translateY=n;this._translate.apply(this,arguments);},_translate:function(m,n){this._addTransform("translate",arguments);},skewX:function(m){this._addTransform("skewX",arguments);},skewY:function(m){this._addTransform("skewY",arguments);},_rotation:0,rotate:function(m){this._rotation=m;this._addTransform("rotate",arguments);},scale:function(m){this._addTransform("scale",arguments);},matrix:function(n,m,r,q,p,o){this._addTransform("matrix",arguments);},_addTransform:function(n,m){if(!this._transformArgs){this._transformArgs={};}this._transformArgs[n]=Array.prototype.slice.call(m,0);this._updateTransform();},_updateTransform:function(){var q=this.node,p,o,r,n=q.getAttribute("transform"),s,m;if(this._transformArgs){if(this._transformArgs.hasOwnProperty("rotate")){m=this.get("transformOrigin");o=this._transformArgs.rotate;o[1]=this.get("x")+(this.get("width")*m[0]);o[2]=this.get("y")+(this.get("height")*m[1]);}}for(p in this._transformArgs){if(p&&this._transformArgs.hasOwnProperty(p)){r=p+"("+this._transformArgs[p].toString()+")";if(n&&n.length>0){s=new RegExp(p+"(.*)");if(n.indexOf(p)>-1){n=n.replace(s,r);}else{n+=" "+r;}}else{n=r;}}}if(n){q.setAttribute("transform",n);}},_draw:function(){var m=this.node;m.setAttribute("width",this.get("width"));m.setAttribute("height",this.get("height"));m.setAttribute("x",this.get("x"));m.setAttribute("y",this.get("y"));m.style.left=this.get("x")+"px";m.style.top=this.get("y")+"px";this._fillChangeHandler();this._strokeChangeHandler();this._updateTransform();},_updateHandler:function(m){this._draw();this._graphic.addToRedrawQueue(this);},_translateX:0,_translateY:0,getBounds:function(){var D=this.get("rotation"),n=Math.abs(D),o=Math.PI/180,A=parseFloat(parseFloat(Math.sin(n*o)).toFixed(8)),q=parseFloat(parseFloat(Math.cos(n*o)).toFixed(8)),z=this.get("width"),E=this.get("height"),r=this.get("stroke"),v=this.get("x"),u=this.get("y"),m=0,H=this.get("translateX"),F=this.get("translateY"),p={},B=this.get("transformOrigin"),G,C,t=B[0],s=B[1];if(D!==0){G=z;C=E;z=(q*E)+(A*z);E=(q*E)+(A*z);v=(v+G*t)-(A*(C*(1-s)))-(q*(G*t));u=(u+C*s)-(A*(G*t))-(q*C*s);}if(r&&r.weight){m=r.weight;}p.left=v-m+H;p.top=u-m+F;p.right=v+z+m+H;p.bottom=u+E+m+F;return p;}};l.ATTRS={transformOrigin:{valueFn:function(){return[0.5,0.5];}},rotation:{setter:function(m){this.rotate(m);},getter:function(){return this._rotation;}},id:{valueFn:function(){return b.guid();},setter:function(n){var m=this.node;if(m){m.setAttribute("id",n);}return n;}},x:{value:0},y:{value:0},width:{},height:{},visible:{value:true,setter:function(n){var m=n?"visible":"hidden";this.node.style.visibility=m;return n;}},fill:{valueFn:"_getDefaultFill",setter:function(o){var n,m=this.get("fill")||this._getDefaultFill();n=(o)?b.merge(m,o):null;if(n&&n.color){if(n.color===undefined||n.color=="none"){n.color=null;}}return n;}},stroke:{valueFn:"_getDefaultStroke",setter:function(n){var m=this.get("stroke")||this._getDefaultStroke();return(n)?b.merge(m,n):null;}},autoSize:{value:false},pointerEvents:{valueFn:function(){var n="visiblePainted",m=this.node;if(m){m.setAttribute("pointer-events",n);}return n;},setter:function(n){var m=this.node;if(m){m.setAttribute("pointer-events",n);}return n;}},translateX:{getter:function(){return this._translateX;},setter:function(m){this._translateX=m;this._transform(m,this._translateY);return m;}},translateY:{getter:function(){return this._translateY;},setter:function(m){this._translateY=m;this._transform(this._translateX,m);return m;}},gradientNode:{setter:function(m){if(d.isString(m)){m=this._graphic.getGradientNode("linear",m);}return m;}},autoDraw:{getter:function(){return this._graphic.autoDraw;}},node:{readOnly:true,getter:function(){return this.node;}},graphic:{readOnly:true,getter:function(){return this._graphic;}}};b.mix(l,b.AttributeLite,false,null,1);b.mix(l,b.EventTarget,false,null,1);b.mix(l,j,false,null,1);l.plug=j.plug;l.unplug=j.unplug;b.SVGShape=l;k=function(m){k.superclass.constructor.apply(this,arguments);};k.NAME="svgPath";b.extend(k,b.SVGShape,{_left:0,_right:0,_top:0,_bottom:0,_type:"path",_draw:function(){var n,t,m,w,o,v,u,z="",q=this.node,s=this.get("translateX"),r=this.get("translateY"),p=this._left,x=this._top,y=this.get("fill");
if(this._pathArray){n=this._pathArray.concat();while(n&&n.length>0){t=n.shift();w=t.length;m=t[0];z+=" "+m+(t[1]-p);switch(m){case"L":case"M":case"Q":for(u=2;u<w;++u){o=(u%2===0)?x:p;o=t[u]-o;z+=", "+o;}break;case"C":for(u=2;u<w;++u){o=(u%2===0)?x:p;v=t[u];v-=o;z+=" "+v;}break;}}if(y&&y.color){z+="z";}if(z){q.setAttribute("d",z);}this._transformArgs=this._transformArgs||{};this._transformArgs.translate=[p+s,x+r];this._path=z;this._fillChangeHandler();this._strokeChangeHandler();this._updateTransform();}},translate:function(m,n){m=parseInt(m,10);n=parseInt(n,10);this._translateX=m;this._translateY=n;this._translate(this._left+m,this._top+n);},_updateHandler:function(){},end:function(){this._draw();this._graphic.addToRedrawQueue(this);},clear:function(){this._left=0;this._right=0;this._top=0;this._bottom=0;this._pathArray=[];this._path="";},getBounds:function(){var n=0,p={},q=this.get("stroke"),o=this.get("translateX"),m=this.get("translateY");if(q&&q.weight){n=q.weight;}p.left=this._left-n+o;p.top=this._top-n+m;p.right=(this._right-this._left)+n+o;p.bottom=(this._bottom-this._top)+n+m;return p;},_path:""});k.ATTRS=b.merge(b.SVGShape.ATTRS,{path:{readOnly:true,getter:function(){return this._path;}},width:{getter:function(){var m=Math.max(this._right-this._left,0);return m;}},height:{getter:function(){return Math.max(this._bottom-this._top,0);}}});k.prototype=b.merge(b.merge(b.SVGDrawing.prototype,b.SVGShape.prototype),k.prototype);b.SVGPath=k;h=function(){h.superclass.constructor.apply(this,arguments);};h.NAME="svgRect";b.extend(h,b.SVGShape,{_type:"rect"});h.ATTRS=b.SVGShape.ATTRS;b.SVGRect=h;e=function(m){e.superclass.constructor.apply(this,arguments);};e.NAME="svgEllipse";b.extend(e,l,{_type:"ellipse",_draw:function(){var m=this.node,u=this.get("width"),p=this.get("height"),t=this.get("x"),r=this.get("y"),s=u*0.5,q=p*0.5,o=t+s,n=r+q;m.setAttribute("rx",s);m.setAttribute("ry",q);m.setAttribute("cx",o);m.setAttribute("cy",n);this._fillChangeHandler();this._strokeChangeHandler();this._updateTransform();}});e.ATTRS=b.merge(l.ATTRS,{xRadius:{setter:function(m){this.set("width",m/2);},getter:function(){var m=this.get("width");if(m){m*=0.5;}return m;}},yRadius:{setter:function(m){this.set("height",m/2);},getter:function(){var m=this.get("height");if(m){m*=0.5;}return m;}}});b.SVGEllipse=e;f=function(m){f.superclass.constructor.apply(this,arguments);};f.NAME="svgCircle";b.extend(f,b.SVGShape,{_type:"circle",_draw:function(){var p=this.node,o=this.get("x"),r=this.get("y"),n=this.get("radius"),m=o+n,q=r+n;p.setAttribute("r",n);p.setAttribute("cx",m);p.setAttribute("cy",q);this._fillChangeHandler();this._strokeChangeHandler();this._updateTransform();}});f.ATTRS=b.merge(b.SVGShape.ATTRS,{width:{readOnly:true,getter:function(){return this.get("radius")*2;}},height:{readOnly:true,getter:function(){return this.get("radius")*2;}},radius:{value:0}});b.SVGCircle=f;function c(m){this.initializer.apply(this,arguments);}c.prototype={getXY:function(){var m=b.one(this.parentNode),n;if(m){n=m.getXY();}return n;},autoSize:true,autoDraw:true,initializer:function(n){this._shapeInstances={ellipse:null,circle:null,path:null,rect:null};this._shapes={};this._redrawQueue={};n=n||{};var m=n.width||0,o=n.height||0;this._gradients={};this.id=b.guid();this.node=b.config.doc.createElement("div");this.node.style.position="absolute";this.group=this._createGraphics();this.group.setAttribute("id",this.id);this.node.appendChild(this.group);this.setSize(m,o);if(n.render){this.render(n.render);}},destroy:function(){this._removeChildren(this.node);if(this.node&&this.node.parentNode){this.node.parentNode.removeChild(this.node);}},_removeChildren:function(m){if(m.hasChildNodes()){var n;while(m.firstChild){n=m.firstChild;this._removeChildren(n);m.removeChild(n);}}},toggleVisible:function(m){this._toggleVisible(this.node,m);},_toggleVisible:function(q,r){var p=b.Selector.query(">/*",q),n=r?"visible":"hidden",o=0,m;if(p){m=p.length;for(;o<m;++o){this._toggleVisible(p[o],r);}}q.style.visibility=n;},clear:function(){if(this._graphicsList){while(this._graphicsList.length>0){this.group.removeChild(this._graphicsList.shift());}}},setSize:function(m,n){if(this.autoSize){if(m>this.node.getAttribute("width")){this.group.setAttribute("width",m);}if(n>this.group.getAttribute("height")){this.group.setAttribute("height",n);}}},_trackSize:function(m,n){if(m>this._right){this._right=m;}if(m<this._left){this._left=m;}if(n<this._top){this._top=n;}if(n>this._bottom){this._bottom=n;}this._width=this._right-this._left;this._height=this._bottom-this._top;this.node.style.left=this._left+"px";this.node.style.top=this._top+"px";this.setSize(this._width,this._height);},render:function(p){var m=b.one(p),n=parseInt(m.getComputedStyle("width"),10),o=parseInt(m.getComputedStyle("height"),10);m=m||b.config.doc.body;m.appendChild(this.node);this.setSize(n,o);this.parentNode=m;return this;},_createGraphics:function(){var m=this._createGraphicNode("svg");this._styleGroup(m);return m;},_styleGroup:function(m){m.style.position="absolute";m.style.top="0px";m.style.left="0px";m.style.overflow="auto";m.setAttribute("overflow","auto");m.setAttribute("pointer-events","none");},_createGraphicNode:function(o,m){var p=document.createElementNS("http://www.w3.org/2000/svg","svg:"+o),n=m||"none";if(o!=="defs"&&o!=="stop"&&o!=="linearGradient"&&o!="radialGradient"){p.setAttribute("pointer-events",n);}return p;},addShape:function(n){var o=n.node,m=this._frag||this.group;m.appendChild(o);if(!this._graphicsList){this._graphicsList=[];}this._graphicsList.push(o);if(this.autoDraw){this.updateCoordSpace();}},getShape:function(m){m.graphic=this;var n=new this._shapeClass[m.type](m);this._shapes[n.get("id")]=n;this.addShape(n);return n;},resizeDown:false,_shapeClass:{circle:b.SVGCircle,rect:b.SVGRect,path:b.SVGPath,ellipse:b.SVGEllipse},_shapeIntances:null,getShapeById:function(n){var m=this._shapes[n];return m;},batch:function(o){var m=this.group,n=document.createDocumentFragment();this._frag=n;
this.autoDraw=false;o();this.updateCoordSpace();m.appendChild(n);this._frag=null;this.autoDraw=true;},updateCoordSpace:function(q){var p,o,n,m=this.resizeDown?this._shapes:this._redrawQueue;for(o in m){if(m.hasOwnProperty(o)){n=m[o];p=n.getBounds();this._left=Math.min(this._left,p.left);this._top=Math.min(this._top,p.top);this._right=Math.max(this._right,p.right);this._bottom=Math.max(this._bottom,p.bottom);}}this._redrawQueue={};this._width=this._right-this._left;this._height=this._bottom-this._top;this.node.style.width=this._width+"px";this.node.style.height=this._height+"px";this.node.style.left=this._left+"px";this.node.style.top=this._top+"px";this.group.setAttribute("width",this._width);this.group.setAttribute("height",this._height);this.group.style.width=this._width+"px";this.group.style.height=this._height+"px";this.group.setAttribute("viewBox",""+this._left+" "+this._top+" "+this._width+" "+this._height+"");},addToRedrawQueue:function(m){var n=m.get("id");this._redrawQueue[n]=m;if(this.autoDraw){this.updateCoordSpace();}},_left:0,_right:0,_top:0,_bottom:0,getGradientNode:function(o,p){var m=this._gradients,q,n=p+"Gradient";if(m.hasOwnProperty(o)&&m[o].tagName.indexOf(p)>-1){q=this._gradients[o];}else{q=this._createGraphicNode(n);if(!this._defs){this._defs=this._createGraphicNode("defs");this.group.appendChild(this._defs);}this._defs.appendChild(q);o=o||"gradient"+Math.round(100000*Math.random());q.setAttribute("id",o);if(m.hasOwnProperty(o)){this._defs.removeChild(m[o]);}m[o]=q;}return q;}};b.SVGGraphic=c;},"@VERSION@",{skinnable:false,requires:["graphics"]});