summaryrefslogtreecommitdiff
path: root/js/dojo-1.7.2/dojox/drawing/stencil/Image.js
diff options
context:
space:
mode:
authorTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
committerTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
commitb62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch)
tree86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo-1.7.2/dojox/drawing/stencil/Image.js
Initial commit of intern.ccwn.org contentsHEADmaster
Diffstat (limited to 'js/dojo-1.7.2/dojox/drawing/stencil/Image.js')
-rw-r--r--js/dojo-1.7.2/dojox/drawing/stencil/Image.js159
1 files changed, 159 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/drawing/stencil/Image.js b/js/dojo-1.7.2/dojox/drawing/stencil/Image.js
new file mode 100644
index 0000000..6b23db7
--- /dev/null
+++ b/js/dojo-1.7.2/dojox/drawing/stencil/Image.js
@@ -0,0 +1,159 @@
+//>>built
+// wrapped by build app
+define("dojox/drawing/stencil/Image", ["dijit","dojo","dojox"], function(dijit,dojo,dojox){
+dojo.provide("dojox.drawing.stencil.Image");
+
+
+dojox.drawing.stencil.Image = dojox.drawing.util.oo.declare(
+ // summary:
+ // Creates an dojox.gfx Image based on the data
+ // provided.
+ //
+ dojox.drawing.stencil._Base,
+ function(options){
+ // summary:
+ // constructor
+ },
+ {
+ type:"dojox.drawing.stencil.Image",
+ anchorType: "group",
+ baseRender:true,
+
+/*=====
+StencilData: {
+ // summary:
+ // The data used to create the dojox.gfx Shape
+ // x: Number
+ // Left point x
+ // y: Number
+ // Top point y
+ // width: ? Number
+ // Optional width of Image. If not provided, it is obtained
+ // height: ? Number
+ // Optional height of Image. If not provided, it is obtained
+ // src: String
+ // The location of the source image
+},
+
+StencilPoints: [
+ // summary:
+ // An Array of dojox.__StencilPoint objects that describe the Stencil
+ // 0: Object
+ // Top left point
+ // 1: Object
+ // Top right point
+ // 2: Object
+ // Bottom right point
+ // 3: Object
+ // Bottom left point
+],
+=====*/
+
+ dataToPoints: function(/*Object*/o){
+ //summary:
+ // Converts data to points.
+ o = o || this.data;
+ this.points = [
+ {x:o.x, y:o.y}, // TL
+ {x:o.x + o.width, y:o.y}, // TR
+ {x:o.x + o.width, y:o.y + o.height}, // BR
+ {x:o.x, y:o.y + o.height} // BL
+ ];
+ return this.points;
+ },
+
+ pointsToData: function(/*Array*/p){
+ // summary:
+ // Converts points to data
+ 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(){
+ // summary:
+ // Create the hit and highlight area
+ // for the Image.
+ 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(/*String*/shp, /*StencilData*/d, /*Object*/sty){
+ // summary:
+ // Creates a dojox.gfx.shape based on passed arguments.
+ // Can be called many times by implementation to create
+ // multiple shapes in one stencil.
+ //
+ this.remove(this[shp]);
+ var s = this.container.getParent();
+ this[shp] = s.createImage(d)
+ this.container.add(this[shp]);
+ this._setNodeAtts(this[shp]);
+ },
+
+ render: function(dbg){
+ // summary:
+ // Renders the 'hit' object (the shape used for an expanded
+ // hit area and for highlighting) and the'shape' (the actual
+ // display object). Image is slightly different than other
+ // implementations. Instead of calling render twice, it calls
+ // _createHilite for the 'hit'
+ //
+ 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(render){
+ // summary:
+ // Internal. If no image size is passed in with the data
+ // create a dom node, insert and image, gets its dimensions
+ // record them - then destroy everything.
+ //
+ if(this._gettingSize){ return; } // IE gets it twice (will need to mod if src changes)
+ this._gettingSize = true;
+ var img = dojo.create("img", {src:this.data.src}, dojo.body());
+ var err = dojo.connect(img, "error", this, function(){
+ dojo.disconnect(c);
+ dojo.disconnect(err);
+ console.error("Error loading image:", this.data.src)
+ console.warn("Error image:", this.data)
+
+ });
+ var c = dojo.connect(img, "load", this, function(){
+ var dim = dojo.marginBox(img);
+ this.setData({
+ x:this.data.x,
+ y:this.data.y,
+ src:this.data.src,
+ width:dim.w,
+ height:dim.h
+ });
+ dojo.disconnect(c);
+ dojo.destroy(img);
+ render && this.render(true);
+ });
+ }
+ }
+);
+
+
+dojox.drawing.register({
+ name:"dojox.drawing.stencil.Image"
+}, "stencil");
+});