root / trunk / web / dojo / dojox / drawing / stencil / Image.js @ 10
History | View | Annotate | Download (2.09 KB)
1 |
/*
|
---|---|
2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
4 |
see: http://dojotoolkit.org/license for details
|
5 |
*/
|
6 |
|
7 |
|
8 |
if(!dojo._hasResource["dojox.drawing.stencil.Image"]){ |
9 |
dojo._hasResource["dojox.drawing.stencil.Image"]=true; |
10 |
dojo.provide("dojox.drawing.stencil.Image");
|
11 |
dojox.drawing.stencil.Image=dojox.drawing.util.oo.declare(dojox.drawing.stencil._Base,function(_1){
|
12 |
},{type:"dojox.drawing.stencil.Image",anchorType:"group",baseRender:true,dataToPoints:function(o){ |
13 |
o=o||this.data;
|
14 |
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}]; |
15 |
return this.points; |
16 |
},pointsToData:function(p){ |
17 |
p=p||this.points;
|
18 |
var s=p[0]; |
19 |
var e=p[2]; |
20 |
this.data={x:s.x,y:s.y,width:e.x-s.x,height:e.y-s.y,src:this.src||this.data.src}; |
21 |
return this.data; |
22 |
},_createHilite:function(){ |
23 |
this.remove(this.hit); |
24 |
this.hit=this.container.createRect(this.data).setStroke(this.style.current).setFill(this.style.current.fill); |
25 |
this._setNodeAtts(this.hit); |
26 |
},_create:function(_2,d,_3){ |
27 |
this.remove(this[_2]); |
28 |
var s=this.container.getParent(); |
29 |
this[_2]=s.createImage(d);
|
30 |
this.container.add(this[_2]); |
31 |
this._setNodeAtts(this[_2]); |
32 |
},render:function(_4){ |
33 |
if(this.data.width=="auto"||isNaN(this.data.width)){ |
34 |
this.getImageSize(true); |
35 |
console.warn("Image size not provided. Acquiring...");
|
36 |
return;
|
37 |
} |
38 |
this.onBeforeRender(this); |
39 |
this.renderHit&&this._createHilite(); |
40 |
this._create("shape",this.data,this.style.current); |
41 |
},getImageSize:function(_5){ |
42 |
if(this._gettingSize){ |
43 |
return;
|
44 |
} |
45 |
this._gettingSize=true; |
46 |
var _6=dojo.create("img",{src:this.data.src},dojo.body()); |
47 |
var _7=dojo.connect(_6,"error",this,function(){ |
48 |
dojo.disconnect(c); |
49 |
dojo.disconnect(_7); |
50 |
console.error("Error loading image:",this.data.src); |
51 |
console.warn("Error image:",this.data); |
52 |
}); |
53 |
var c=dojo.connect(_6,"load",this,function(){ |
54 |
var _8=dojo.marginBox(_6);
|
55 |
this.setData({x:this.data.x,y:this.data.y,src:this.data.src,width:_8.w,height:_8.h}); |
56 |
dojo.disconnect(c); |
57 |
dojo.destroy(_6); |
58 |
_5&&this.render(true); |
59 |
}); |
60 |
}}); |
61 |
dojox.drawing.register({name:"dojox.drawing.stencil.Image"},"stencil"); |
62 |
} |