/* Copyright (c) 2004-2010, 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.canvas"]){dojo._hasResource["dojox.gfx.canvas"]=true;dojo.provide("dojox.gfx.canvas");dojo.require("dojox.gfx._base");dojo.require("dojox.gfx.shape");dojo.require("dojox.gfx.path");dojo.require("dojox.gfx.arc");dojo.require("dojox.gfx.decompose");dojo.experimental("dojox.gfx.canvas");(function(){var d=dojo,g=dojox.gfx,gs=g.shape,ga=g.arc,m=g.matrix,mp=m.multiplyPoint,pi=Math.PI,_1=2*pi,_2=pi/2;d.extend(g.Shape,{_render:function(_3){_3.save();this._renderTransform(_3);this._renderShape(_3);this._renderFill(_3,true);this._renderStroke(_3,true);_3.restore();},_renderTransform:function(_4){if("canvasTransform" in this){var t=this.canvasTransform;_4.translate(t.dx,t.dy);_4.rotate(t.angle2);_4.scale(t.sx,t.sy);_4.rotate(t.angle1);}},_renderShape:function(_5){},_renderFill:function(_6,_7){if("canvasFill" in this){if("canvasFillImage" in this){this.canvasFill=_6.createPattern(this.canvasFillImage,"repeat");delete this.canvasFillImage;}_6.fillStyle=this.canvasFill;if(_7){_6.fill();}}else{_6.fillStyle="rgba(0,0,0,0.0)";}},_renderStroke:function(_8,_9){var s=this.strokeStyle;if(s){_8.strokeStyle=s.color.toString();_8.lineWidth=s.width;_8.lineCap=s.cap;if(typeof s.join=="number"){_8.lineJoin="miter";_8.miterLimit=s.join;}else{_8.lineJoin=s.join;}if(_9){_8.stroke();}}else{if(!_9){_8.strokeStyle="rgba(0,0,0,0.0)";}}},getEventSource:function(){return null;},connect:function(){},disconnect:function(){}});var _a=function(_b,_c,_d){var _e=_b.prototype[_c];_b.prototype[_c]=_d?function(){this.surface.makeDirty();_e.apply(this,arguments);_d.call(this);return this;}:function(){this.surface.makeDirty();return _e.apply(this,arguments);};};_a(g.Shape,"setTransform",function(){if(this.matrix){this.canvasTransform=g.decompose(this.matrix);}else{delete this.canvasTransform;}});_a(g.Shape,"setFill",function(){var fs=this.fillStyle,f;if(fs){if(typeof (fs)=="object"&&"type" in fs){var _f=this.surface.rawNode.getContext("2d");switch(fs.type){case "linear":case "radial":f=fs.type=="linear"?_f.createLinearGradient(fs.x1,fs.y1,fs.x2,fs.y2):_f.createRadialGradient(fs.cx,fs.cy,0,fs.cx,fs.cy,fs.r);d.forEach(fs.colors,function(_10){f.addColorStop(_10.offset,g.normalizeColor(_10.color).toString());});break;case "pattern":var img=new Image(fs.width,fs.height);this.surface.downloadImage(img,fs.src);this.canvasFillImage=img;}}else{f=fs.toString();}this.canvasFill=f;}else{delete this.canvasFill;}});_a(g.Shape,"setStroke");_a(g.Shape,"setShape");dojo.declare("dojox.gfx.Group",g.Shape,{constructor:function(){gs.Container._init.call(this);},_render:function(ctx){ctx.save();this._renderTransform(ctx);this._renderFill(ctx);this._renderStroke(ctx);for(var i=0;i