graphics-canvas-min.js revision 44eaa331ba010d74773764d60f79d2c87c700698
YUI.add("graphics-canvas",function(b){var h="canvasShape",l=b.config.doc,d=b.Lang,f=b.AttributeLite,n,m,k,e,g,j,i=b.Color.toRGB;function a(){}a.prototype={_reHex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,_2RGBA:function(p,o){o=(o!==undefined)?o:1;if(this._reHex.exec(p)){p="rgba("+[parseInt(RegExp.$1,16),parseInt(RegExp.$2,16),parseInt(RegExp.$3,16)].join(",")+","+o+")";}return p;},_2RGB:function(o){return i(o);},setSize:function(o,p){if(this.get("autoSize")){if(o>this.node.getAttribute("width")){this.node.style.width=o+"px";this.node.setAttribute("width",o);}if(p>this.node.getAttribute("height")){this.node.style.height=p+"px";this.node.setAttribute("height",p);}}},_updateCoords:function(o,p){this._xcoords.push(o);this._ycoords.push(p);},_clearAndUpdateCoords:function(){var o=this._xcoords.pop()||0,p=this._ycoords.pop()||0;this._updateCoords(o,p);},_updateNodePosition:function(){var p=this.get("node"),o=this.get("x"),q=this.get("y");p.style.position="absolute";p.style.left=(o+this._left)+"px";p.style.top=(q+this._top)+"px";},_properties:null,_updateDrawingQueue:function(o){this._methods.push(o);},lineTo:function(v,t,o){var s=arguments,p=0,r,w,u,q=this._stroke&&this._strokeWeight?this._strokeWeight:0;if(!this._lineToMethods){this._lineToMethods=[];}if(typeof v==="string"||typeof v==="number"){s=[[v,t]];}r=s.length;for(;p<r;++p){if(s[p]){w=s[p][0];u=s[p][1];this._updateDrawingQueue(["lineTo",w,u]);this._lineToMethods[this._lineToMethods.length]=this._methods[this._methods.length-1];this._trackSize(w-q,u-q);this._trackSize(w+q,u+q);this._updateCoords(w,u);}}this._drawingComplete=false;return this;},moveTo:function(p,q){var o=this._stroke&&this._strokeWeight?this._strokeWeight:0;this._updateDrawingQueue(["moveTo",p,q]);this._trackSize(p-o,q-o);this._trackSize(p+o,q+o);this._updateCoords(p,q);this._drawingComplete=false;return this;},curveTo:function(r,p,w,v,u,t){var s,q,o,z;this._updateDrawingQueue(["bezierCurveTo",r,p,w,v,u,t]);this._drawingComplete=false;s=Math.max(u,Math.max(r,w));q=Math.max(t,Math.max(p,v));o=Math.min(u,Math.min(r,w));z=Math.min(t,Math.min(p,v));this._trackSize(s,q);this._trackSize(o,z);this._updateCoords(s,q);return this;},quadraticCurveTo:function(s,r,v,u){var q,p,o,w,t=this._stroke&&this._strokeWeight?this._strokeWeight:0;this._updateDrawingQueue(["quadraticCurveTo",s,r,v,u]);this._drawingComplete=false;q=Math.max(v,s);p=Math.max(u,r);o=Math.min(v,s);w=Math.min(u,r);this._trackSize(q+t,p+t);this._trackSize(o-t,w-t);this._updateCoords(q,p);return this;},drawCircle:function(q,u,p){var s=0,r=2*Math.PI,o=this._stroke&this._strokeWeight?this._strokeWeight:0,t=p*2;t+=o;this._drawingComplete=false;this._trackSize(q+t,u+t);this._trackSize(q-o,u-o);this._updateCoords(q,u);this._updateDrawingQueue(["arc",q+p,u+p,p,s,r,false]);return this;},drawEllipse:function(C,A,D,I){var F=8,u=-(45/180)*Math.PI,K=0,t,r=D/2,s=I/2,G=0,z=C+r,v=A+s,E,B,J,H,q,p,o=this._stroke&&this._strokeWeight?this._strokeWeight:0;E=z+Math.cos(0)*r;B=v+Math.sin(0)*s;this.moveTo(E,B);for(;G<F;G++){K+=u;t=K-(u/2);J=z+Math.cos(K)*r;H=v+Math.sin(K)*s;q=z+Math.cos(t)*(r/Math.cos(u/2));p=v+Math.sin(t)*(s/Math.cos(u/2));this._updateDrawingQueue(["quadraticCurveTo",q,p,J,H]);}this._trackSize(C+D+o,A+I+o);this._trackSize(C-o,A-o);this._updateCoords(C,A);return this;},drawRect:function(p,s,q,r){var o=this._stroke&&this._strokeWeight?this._strokeWeight:0;this._drawingComplete=false;this._updateDrawingQueue(["moveTo",p,s]);this._updateDrawingQueue(["lineTo",p+q,s]);this._updateDrawingQueue(["lineTo",p+q,s+r]);this._updateDrawingQueue(["lineTo",p,s+r]);this._updateDrawingQueue(["lineTo",p,s]);this._trackSize(p-o,s-o);this._trackSize(p+q+o,s+r+o);return this;},drawRoundRect:function(p,u,q,s,r,t){var o=this._stroke&&this._strokeWeight?this._strokeWeight:0;this._drawingComplete=false;this._updateDrawingQueue(["moveTo",p,u+t]);this._updateDrawingQueue(["lineTo",p,u+s-t]);this._updateDrawingQueue(["quadraticCurveTo",p,u+s,p+r,u+s]);this._updateDrawingQueue(["lineTo",p+q-r,u+s]);this._updateDrawingQueue(["quadraticCurveTo",p+q,u+s,p+q,u+s-t]);this._updateDrawingQueue(["lineTo",p+q,u+t]);this._updateDrawingQueue(["quadraticCurveTo",p+q,u,p+q-r,u]);this._updateDrawingQueue(["lineTo",p+r,u]);this._updateDrawingQueue(["quadraticCurveTo",p,u,p,u+t]);this._trackSize(p-o,u-o);this._trackSize(p+q+o,u+s+o);this._updateCoords(q,s);return this;},drawWedge:function(z,v,D,u,q,r){var C,B,t,H,s,A,w,G,F,p,o,E=0;r=r||q;this._drawingComplete=false;this._updateDrawingQueue(["moveTo",z,v]);r=r||q;if(Math.abs(u)>360){u=360;}C=Math.ceil(Math.abs(u)/45);B=u/C;t=-(B/180)*Math.PI;H=(D/180)*Math.PI;if(C>0){A=z+Math.cos(D/180*Math.PI)*q;w=v+Math.sin(D/180*Math.PI)*r;this.lineTo(A,w);for(;E<C;++E){H+=t;s=H-(t/2);G=z+Math.cos(H)*q;F=v+Math.sin(H)*r;p=z+Math.cos(s)*(q/Math.cos(t/2));o=v+Math.sin(s)*(r/Math.cos(t/2));this._updateDrawingQueue(["quadraticCurveTo",p,o,G,F]);}this._updateDrawingQueue(["lineTo",z,v]);}this._trackSize(0,0);this._trackSize(q*2,q*2);return this;},end:function(){this._paint();return this;},_getLinearGradient:function(){var E=b.Lang.isNumber,J=this.get("fill"),A=J.stops,u,I,H,K=0,L=A.length,o,C=0,B=0,D=this.get("width"),M=this.get("height"),G=J.rotation,O,N,t,q,s=C+D/2,p=B+M/2,z,v=Math.PI/180,F=parseFloat(parseFloat(Math.tan(G*v)).toFixed(8));if(Math.abs(F)*D/2>=M/2){if(G<180){t=B;q=B+M;}else{t=B+M;q=B;}O=s-((p-t)/F);N=s-((p-q)/F);}else{if(G>90&&G<270){O=C+D;N=C;}else{O=C;N=C+D;}t=((F*(s-O))-p)*-1;q=((F*(s-N))-p)*-1;}o=this._context.createLinearGradient(O,t,N,q);for(;K<L;++K){H=A[K];u=H.opacity;I=H.color;z=H.offset;if(E(u)){u=Math.max(0,Math.min(1,u));I=this._2RGBA(I,u);}else{I=this._2RGB(I);}z=H.offset||K/(L-1);o.addColorStop(z,I);}return o;},_getRadialGradient:function(){var H=b.Lang.isNumber,N=this.get("fill"),I=N.r,z=N.fx,u=N.fy,B=N.stops,v,K,J,O=0,Q=B.length,p,E=0,D=0,F=this.get("width"),R=this.get("height"),S,P,t,s,M,L,o,G,T,U,A,C,q;L=E+F/2;o=D+R/2;S=F*z;t=R*u;P=E+F/2;s=D+R/2;M=F*I;U=Math.sqrt(Math.pow(Math.abs(L-S),2)+Math.pow(Math.abs(o-t),2));
if(U>=M){C=U/M;if(C===1){C=1.01;}G=(S-L)/C;T=(t-o)/C;G=G>0?Math.floor(G):Math.ceil(G);T=T>0?Math.floor(T):Math.ceil(T);S=L+G;t=o+T;}if(I>=0.5){p=this._context.createRadialGradient(S,t,I,P,s,I*F);q=1;}else{p=this._context.createRadialGradient(S,t,I,P,s,F/2);q=I*2;}for(;O<Q;++O){J=B[O];v=J.opacity;K=J.color;A=J.offset;if(H(v)){v=Math.max(0,Math.min(1,v));K=this._2RGBA(K,v);}else{K=this._2RGB(K);}A=J.offset||O/(Q-1);A*=q;if(A<=1){p.addColorStop(A,K);}}return p;},_initProps:function(){this._methods=[];this._lineToMethods=[];this._xcoords=[0];this._ycoords=[0];this._width=0;this._height=0;this._left=0;this._top=0;this._right=0;this._bottom=0;},_drawingComplete:false,_createGraphic:function(o){var p=b.config.doc.createElement("canvas");return p;},_trackSize:function(o,p){if(o>this._right){this._right=o;}if(o<this._left){this._left=o;}if(p<this._top){this._top=p;}if(p>this._bottom){this._bottom=p;}this._width=this._right-this._left;this._height=this._bottom-this._top;}};b.CanvasDrawing=a;n=function(o){n.superclass.constructor.apply(this,arguments);};n.NAME="canvasShape";b.extend(n,b.BaseGraphic,b.mix(b.CanvasDrawing.prototype,{init:function(){this.initializer.apply(this,arguments);},initializer:function(o){var p=this;p._initProps();p.createNode();p._graphic=o.graphic;p._xcoords=[0];p._ycoords=[0];p._updateHandler();},addClass:function(o){var p=b.one(this.get("node"));p.addClass(o);},removeClass:function(o){var p=b.one(this.get("node"));p.removeClass(o);},getXY:function(){var r=this.get("graphic"),p=r.getXY(),o=this.get("x"),q=this.get("y");return[p[0]+o,p[1]+q];},setXY:function(q){var s=this.get("graphic"),p=s.getXY(),o=q[0]-p[0],r=q[1]-p[1];this._set("x",o);this._set("y",r);this._updateNodePosition(o,r);},contains:function(o){return o===b.one(this.node);},test:function(o){return b.one(this.get("node")).test(o);},compareTo:function(o){var p=this.node;return p===o;},_getDefaultFill:function(){return{type:"solid",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};},_left:0,_right:0,_top:0,_bottom:0,createNode:function(){var o=b.config.doc.createElement("canvas"),p=this.get("id");this._context=o.getContext("2d");o.setAttribute("overflow","visible");o.style.overflow="visible";o.setAttribute("class","yui3-"+h);o.setAttribute("class","yui3-"+this.name);o.setAttribute("id",p);p="#"+p;this.node=o;},isMouseEvent:function(o){if(o.indexOf("mouse")>-1||o.indexOf("click")>-1){return true;}return false;},before:function(p,o){if(this.isMouseEvent(p)){return b.before(p,o,"#"+this.get("id"));}return b.on.apply(this,arguments);},on:function(p,o){if(this.isMouseEvent(p)){return b.on(p,o,"#"+this.get("id"));}return b.on.apply(this,arguments);},after:function(p,o){if(this.isMouseEvent(p)){return b.after(p,o,"#"+this.get("id"));}return b.on.apply(this,arguments);},_setStrokeProps:function(u){var p=u.color,t=u.weight,s=u.opacity,r=u.linejoin||"round",q=u.linecap||"butt",o=u.dashstyle;this._miterlimit=null;this._dashstyle=(o&&b.Lang.isArray(o)&&o.length>1)?o:null;this._strokeWeight=t;if(t){this._stroke=1;}else{this._stroke=0;}if(s){this._strokeStyle=this._2RGBA(p,s);}else{this._strokeStyle=p;}this._linecap=q;if(r=="round"||r=="square"){this._linejoin=r;}else{r=parseInt(r,10);if(b.Lang.isNumber(r)){this._miterlimit=Math.max(r,1);this._linejoin="miter";}}},set:function(){var o=this,p=arguments[0];f.prototype.set.apply(o,arguments);if(o.initialized&&p!="x"&&p!="y"){o._updateHandler();}},_setFillProps:function(s){var q=b.Lang.isNumber,o=s.color,p,r=s.type;if(r=="linear"||r=="radial"){this._fillType=r;}else{if(o){p=s.opacity;if(q(p)){p=Math.max(0,Math.min(1,p));o=this._2RGBA(o,p);}else{o=this._2RGB(o);}this._fillColor=o;this._fillType="solid";}else{this._fillColor=null;}}},translate:function(o,q){var p="translate("+o+"px, "+q+"px)";this._updateTransform("translate",/translate\(.*\)/,p);},skewX:function(o){},skewY:function(o){},_rotation:0,rotate:function(p){var o="rotate("+p+"deg)";this._rotation=p;this._updateTransform("rotate",/rotate\(.*\)/,o);},_transformOrigin:function(o,q){var p=this.get("node");p.style.MozTransformOrigin=(100*o)+"% "+(100*q)+"%";},scale:function(o){},matrix:function(p,o,t,s,r,q){},_updateTransform:function(q,t,s){var r=this.get("node"),p=r.style.MozTransform||r.style.webkitTransform||r.style.msTransform||r.style.OTransform,o=this.get("transformOrigin");if(p&&p.length>0){if(p.indexOf(q)>-1){p=p.replace(t,s);}else{p+=" "+s;}}else{p=s;}o=(100*o[0])+"% "+(100*o[1])+"%";r.style.MozTransformOrigin=o;r.style.webkitTransformOrigin=o;r.style.msTransformOrigin=o;r.style.OTransformOrigin=o;r.style.MozTransform=p;r.style.webkitTransform=p;r.style.msTransform=p;r.style.OTransform=p;this._graphic.addToRedrawQueue(this);},_updateHandler:function(){this._draw();this._graphic.addToRedrawQueue(this);},_draw:function(){this.clear();this._paint();},_paint:function(){if(!this._methods){return;}var s=this.get("node"),A=this._right-this._left,x=this._bottom-this._top,p=this._context,t=[],q=this._methods.concat(),v=0,u,o,z,r,y=0;this._context.clearRect(0,0,s.width,s.height);if(this._methods){y=q.length;if(!y||y<1){return;}for(;v<y;++v){t[v]=q[v].concat();z=t[v];r=z[0]=="quadraticCurveTo"?z.length:3;for(u=1;u<r;++u){if(u%2===0){z[u]=z[u]-this._top;}else{z[u]=z[u]-this._left;}}}s.setAttribute("width",A);s.setAttribute("height",x);p.beginPath();for(v=0;v<y;++v){z=t[v].concat();if(z&&z.length>0){o=z.shift();if(o){if(o&&o=="lineTo"&&this._dashstyle){z.unshift(this._xcoords[v]-this._left,this._ycoords[v]-this._top);this._drawDashedLine.apply(this,z);}else{p[o].apply(p,z);}}}}if(this._fillType){if(this._fillType=="linear"){p.fillStyle=this._getLinearGradient();}else{if(this._fillType=="radial"){p.fillStyle=this._getRadialGradient();}else{p.fillStyle=this._fillColor;}}p.closePath();p.fill();}if(this._stroke){if(this._strokeWeight){p.lineWidth=this._strokeWeight;}p.lineCap=this._linecap;p.lineJoin=this._linejoin;if(this._miterlimit){p.miterLimit=this._miterlimit;
}p.strokeStyle=this._strokeStyle;p.stroke();}this._drawingComplete=true;this._clearAndUpdateCoords();this._updateNodePosition();this._methods=q;}},_drawDashedLine:function(x,D,o,A){var p=this._context,B=this._dashstyle[0],z=this._dashstyle[1],r=B+z,u=o-x,y=A-D,C=Math.sqrt(Math.pow(u,2)+Math.pow(y,2)),s=Math.floor(Math.abs(C/r)),q=Math.atan2(y,u),w=x,v=D,t;u=Math.cos(q)*r;y=Math.sin(q)*r;for(t=0;t<s;++t){p.moveTo(w,v);p.lineTo(w+Math.cos(q)*B,v+Math.sin(q)*B);w+=u;v+=y;}p.moveTo(w,v);C=Math.sqrt((o-w)*(o-w)+(A-v)*(A-v));if(C>B){p.lineTo(w+Math.cos(q)*B,v+Math.sin(q)*B);}else{if(C>0){p.lineTo(w+Math.cos(q)*C,v+Math.sin(q)*C);}}p.moveTo(o,A);},clear:function(){this._initProps();if(this.node){this._context.clearRect(0,0,this.node.width,this.node.height);}return this;},getBounds:function(){var M=this.get("rotation"),q=Math.PI/180,L=parseFloat(parseFloat(Math.sin(M*q)).toFixed(8)),s=parseFloat(parseFloat(Math.cos(M*q)).toFixed(8)),I=this.get("width"),N=this.get("height"),t=this.get("stroke"),G=this.get("x"),E=this.get("y"),O=G+I,v=E+N,A,u,F,C,J,H,D,p,o=0,Q=this.get("translateX"),P=this.get("translateY"),r={},K=this.get("transformOrigin"),B=K[0],z=K[1];if(t&&t.weight){o=t.weight;}if(M!==0){B=G+(B*I);z=E+(z*N);A=this._getRotatedCornerX(G,E,B,z,s,L);u=this._getRotatedCornerY(G,E,B,z,s,L);F=this._getRotatedCornerX(G,v,B,z,s,L);C=this._getRotatedCornerY(G,v,B,z,s,L);J=this._getRotatedCornerX(O,v,B,z,s,L);H=this._getRotatedCornerY(O,v,B,z,s,L);D=this._getRotatedCornerX(O,E,B,z,s,L);p=this._getRotatedCornerY(O,E,B,z,s,L);r.left=Math.min(A,Math.min(F,Math.min(J,D)));r.right=Math.max(A,Math.max(F,Math.max(J,D)));r.top=Math.min(u,Math.min(C,Math.min(H,p)));r.bottom=Math.max(u,Math.max(C,Math.max(H,p)));}else{r.left=G-o+Q;r.top=E-o+P;r.right=G+I+o+Q;r.bottom=E+N+o+P;}return r;},_getRotatedCornerX:function(p,t,o,s,q,r){return(o+(p-o)*q+(t-s)*r);},_getRotatedCornerY:function(p,t,o,s,q,r){return(s-(p-o)*r+(t-s)*q);},destroy:function(){var p=this.node,o=this._context;if(p){if(o){o.clearRect(0,0,p.width,p.height);}if(this._graphic&&this._graphic._node){this._graphic._node.removeChild(this.node);}}}}));n.ATTRS={transformOrigin:{valueFn:function(){return[0.5,0.5];}},rotation:{setter:function(o){this.rotate(o);},getter:function(){return this._rotation;}},node:{readOnly:true,getter:function(){return this.node;}},id:{valueFn:function(){return b.guid();},setter:function(p){var o=this.node;if(o){o.setAttribute("id",p);}return p;}},width:{value:0},height:{value:0},x:{value:0},y:{value:0},visible:{value:true,setter:function(p){var o=p?"visible":"hidden";this.get("node").style.visibility=o;return p;}},fill:{valueFn:"_getDefaultFill",setter:function(q){var p,o=this.get("fill")||this._getDefaultFill();p=(q)?b.merge(o,q):null;if(p&&p.color){if(p.color===undefined||p.color=="none"){p.color=null;}}this._setFillProps(p);return p;}},stroke:{valueFn:"_getDefaultStroke",setter:function(p){var o=this.get("stroke")||this._getDefaultStroke();p=(p)?b.merge(o,p):null;this._setStrokeProps(p);return p;}},autoSize:{value:false},pointerEvents:{value:"visiblePainted"},graphic:{readOnly:true,getter:function(){return this._graphic;}}};b.CanvasShape=n;m=function(o){m.superclass.constructor.apply(this,arguments);};m.NAME="canvasPath";b.extend(m,b.CanvasShape,{_type:"path",_draw:function(){this._paint();},createNode:function(){var o=b.config.doc.createElement("canvas"),p=this.get("id");this._context=o.getContext("2d");o.setAttribute("overflow","visible");o.setAttribute("pointer-events","none");o.style.pointerEvents="none";o.style.overflow="visible";o.setAttribute("class","yui3-"+h);o.setAttribute("class","yui3-"+this.name);o.setAttribute("id",p);p="#"+p;this.node=o;},end:function(){this._draw();}});m.ATTRS=b.merge(b.CanvasShape.ATTRS,{width:{getter:function(){var o=this._stroke&&this._strokeWeight?(this._strokeWeight*2):0;return this._width-o;},setter:function(o){this._width=o;return o;}},height:{getter:function(){var o=this._stroke&&this._strokeWeight?(this._strokeWeight*2):0;return this._height-o;},setter:function(o){this._height=o;return o;}},path:{readOnly:true,getter:function(){return this._path;}}});b.CanvasPath=m;k=function(){k.superclass.constructor.apply(this,arguments);};k.NAME="canvasRect";b.extend(k,b.CanvasShape,{_type:"rect",_draw:function(){var o=this.get("width"),p=this.get("height");this.clear();this.drawRect(0,0,o,p);this._paint();}});k.ATTRS=b.CanvasShape.ATTRS;b.CanvasRect=k;e=function(o){e.superclass.constructor.apply(this,arguments);};e.NAME="canvasEllipse";b.extend(e,n,{_type:"ellipse",_draw:function(){var o=this.get("width"),p=this.get("height");this.clear();this.drawEllipse(0,0,o,p);this._paint();}});e.ATTRS=n.ATTRS;b.CanvasEllipse=e;g=function(o){g.superclass.constructor.apply(this,arguments);};g.NAME="canvasCircle";b.extend(g,b.CanvasShape,{_type:"circle",_draw:function(){var o=this.get("radius");if(o){this.clear();this.drawCircle(0,0,o);this._paint();}}});g.ATTRS=b.merge(b.CanvasShape.ATTRS,{width:{setter:function(o){this.set("radius",o/2);return o;},getter:function(){return this.get("radius")*2;}},height:{setter:function(o){this.set("radius",o/2);return o;},getter:function(){return this.get("radius")*2;}},radius:{lazyAdd:false}});b.CanvasCircle=g;j=function(){j.superclass.constructor.apply(this,arguments);};j.NAME="canvasPieSlice";b.extend(j,b.CanvasPath,{_type:"path",_updateHandler:function(s){var p=this.get("cx"),t=this.get("cy"),r=this.get("startAngle"),q=this.get("arc"),o=this.get("radius");this.clear();this._left=p;this._right=o;this._top=t;this._bottom=o;this.drawWedge(p,t,r,q,o);this._draw();}});j.ATTRS=b.mix(b.CanvasPath.ATTRS,{cx:{value:0},cy:{value:0},startAngle:{value:0},arc:{value:0},radius:{value:0}});b.CanvasPieSlice=j;function c(o){c.superclass.constructor.apply(this,arguments);}c.NAME="canvasGraphic";c.ATTRS={render:{},id:{valueFn:function(){return b.guid();},setter:function(p){var o=this._node;if(o){o.setAttribute("id",p);}return p;}},shapes:{readOnly:true,getter:function(){return this._shapes;}},contentBounds:{readOnly:true,getter:function(){return this._contentBounds;
}},node:{readOnly:true,getter:function(){return this._node;}},width:{setter:function(o){if(this._node){this._node.style.width=o+"px";}return o;}},height:{setter:function(o){if(this._node){this._node.style.height=o+"px";}return o;}},autoSize:{value:false},resizeDown:{getter:function(){return this._resizeDown;},setter:function(o){this._resizeDown=o;this._redraw();return o;}},x:{getter:function(){return this._x;},setter:function(o){this._x=o;if(this._node){this._node.style.left=o+"px";}return o;}},y:{getter:function(){return this._y;},setter:function(o){this._y=o;if(this._node){this._node.style.top=o+"px";}return o;}},autoDraw:{value:true},visible:{value:true,setter:function(o){this._toggleVisible(o);return o;}}};b.extend(c,b.BaseGraphic,{_x:0,_y:0,getXY:function(){var o=b.one(this._node),p;if(o){p=o.getXY();}return p;},_resizeDown:false,initializer:function(p){var r=this.get("render"),o=this.get("width")||0,q=this.get("height")||0;this._shapes={};this._redrawQueue={};this._contentBounds={left:0,top:0,right:0,bottom:0};this._node=l.createElement("div");this._node.style.position="absolute";this.set("width",o);this.set("height",q);if(r){this.render(r);}},render:function(r){var o=b.one(r),s=this._node,p=this.get("width")||parseInt(o.getComputedStyle("width"),10),q=this.get("height")||parseInt(o.getComputedStyle("height"),10);o=o||l.body;o.appendChild(s);s.style.display="block";s.style.position="absolute";s.style.left="0px";s.style.top="0px";this.set("width",p);this.set("height",q);this.parentNode=o;return this;},destroy:function(){this._removeAllShapes();this._removeChildren(this._node);if(this._node&&this._node.parentNode){this._node.parentNode.removeChild(this._node);}},getShape:function(o){o.graphic=this;var p=new this._shapeClass[o.type](o);this.addShape(p);return p;},addShape:function(p){var q=p.node,o=this._frag||this._node;if(this.get("autoDraw")){o.appendChild(q);}else{this._getDocFrag().appendChild(q);}},removeShape:function(o){if(!(o instanceof n)){if(d.isString(o)){o=this._shapes[o];}}if(o&&o instanceof n){o.destroy();delete this._shapes[o.get("id")];}if(this.get("autoDraw")){this._redraw();}return o;},removeAllShapes:function(){var o=this._shapes,p;for(p in o){if(o.hasOwnProperty(p)){o[p].destroy();}}this._shapes={};},_removeChildren:function(o){if(o.hasChildNodes()){var p;while(o.firstChild){p=o.firstChild;this._removeChildren(p);o.removeChild(p);}}},_toggleVisible:function(r){var q,p=this._shapes,o=r?"visible":"hidden";if(p){for(q in p){if(p.hasOwnProperty(q)){p[q].set("visible",r);}}}this._node.style.visibility=o;},_shapeClass:{circle:b.CanvasCircle,rect:b.CanvasRect,path:b.CanvasPath,ellipse:b.CanvasEllipse,pieslice:b.CanvasPieSlice},getShapeById:function(p){var o=this._shapes[p];return o;},batch:function(p){var o=this.get("autoDraw");this.set("autoDraw",false);p();this._redraw();this.set("autoDraw",o);},_getDocFrag:function(){if(!this._frag){this._frag=l.createDocumentFragment();}return this._frag;},_redraw:function(){var o=this.get("resizeDown")?this._getUpdatedContentBounds():this._contentBounds;if(this.get("autoSize")){this.set("width",o.right);this.set("height",o.bottom);}if(this._frag){this._node.appendChild(this._frag);this._frag=null;}},addToRedrawQueue:function(o){var q,p;this._shapes[o.get("id")]=o;if(!this.get("resizeDown")){q=o.getBounds();p=this._contentBounds;p.left=p.left<q.left?p.left:q.left;p.top=p.top<q.top?p.top:q.top;p.right=p.right>q.right?p.right:q.right;p.bottom=p.bottom>q.bottom?p.bottom:q.bottom;p.width=p.right-p.left;p.height=p.bottom-p.top;this._contentBounds=p;}if(this.get("autoDraw")){this._redraw();}},_getUpdatedContentBounds:function(){var s,q,p,o=this._shapes,r={left:0,top:0,right:0,bottom:0};for(q in o){if(o.hasOwnProperty(q)){p=o[q];s=p.getBounds();r.left=Math.min(r.left,s.left);r.top=Math.min(r.top,s.top);r.right=Math.max(r.right,s.right);r.bottom=Math.max(r.bottom,s.bottom);}}r.width=r.right-r.left;r.height=r.bottom-r.top;this._contentBounds=r;return r;}});b.CanvasGraphic=c;},"@VERSION@",{requires:["graphics"],skinnable:false});