| /* |
| 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.drawing.stencil.Image"]){ |
| dojo._hasResource["dojox.drawing.stencil.Image"]=true; |
| dojo.provide("dojox.drawing.stencil.Image"); |
| dojox.drawing.stencil.Image=dojox.drawing.util.oo.declare(dojox.drawing.stencil._Base,function(_1){ |
| },{type:"dojox.drawing.stencil.Image",anchorType:"group",baseRender:true,dataToPoints:function(o){ |
| o=o||this.data; |
| this.points=[{x:o.x,y:o.y},{x:o.x+o.width,y:o.y},{x:o.x+o.width,y:o.y+o.height},{x:o.x,y:o.y+o.height}]; |
| return this.points; |
| },pointsToData:function(p){ |
| p=p||this.points; |
| var s=p[0]; |
| var e=p[2]; |
| this.data={x:s.x,y:s.y,width:e.x-s.x,height:e.y-s.y,src:this.src||this.data.src}; |
| return this.data; |
| },_createHilite:function(){ |
| this.remove(this.hit); |
| this.hit=this.container.createRect(this.data).setStroke(this.style.current).setFill(this.style.current.fill); |
| this._setNodeAtts(this.hit); |
| },_create:function(_2,d,_3){ |
| this.remove(this[_2]); |
| var s=this.container.getParent(); |
| this[_2]=s.createImage(d); |
| this.container.add(this[_2]); |
| this._setNodeAtts(this[_2]); |
| },render:function(_4){ |
| if(this.data.width=="auto"||isNaN(this.data.width)){ |
| this.getImageSize(true); |
| console.warn("Image size not provided. Acquiring..."); |
| return; |
| } |
| this.onBeforeRender(this); |
| this.renderHit&&this._createHilite(); |
| this._create("shape",this.data,this.style.current); |
| },getImageSize:function(_5){ |
| if(this._gettingSize){ |
| return; |
| } |
| this._gettingSize=true; |
| var _6=dojo.create("img",{src:this.data.src},dojo.body()); |
| var _7=dojo.connect(_6,"error",this,function(){ |
| dojo.disconnect(c); |
| dojo.disconnect(_7); |
| console.error("Error loading image:",this.data.src); |
| console.warn("Error image:",this.data); |
| }); |
| var c=dojo.connect(_6,"load",this,function(){ |
| var _8=dojo.marginBox(_6); |
| this.setData({x:this.data.x,y:this.data.y,src:this.data.src,width:_8.w,height:_8.h}); |
| dojo.disconnect(c); |
| dojo.destroy(_6); |
| _5&&this.render(true); |
| }); |
| }}); |
| dojox.drawing.register({name:"dojox.drawing.stencil.Image"},"stencil"); |
| } |