diff options
Diffstat (limited to 'js/dojo-1.7.2/dojox/drawing/annotations/Angle.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/drawing/annotations/Angle.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/drawing/annotations/Angle.js b/js/dojo-1.7.2/dojox/drawing/annotations/Angle.js new file mode 100644 index 0000000..6f09f2a --- /dev/null +++ b/js/dojo-1.7.2/dojox/drawing/annotations/Angle.js @@ -0,0 +1,108 @@ +//>>built +// wrapped by build app +define("dojox/drawing/annotations/Angle", ["dijit","dojo","dojox"], function(dijit,dojo,dojox){ +dojo.provide("dojox.drawing.annotations.Angle"); + +dojox.drawing.annotations.Angle = dojox.drawing.util.oo.declare( + // summary: + // When initiated, an HTML box will hover near the Stencil, + // displaying it's angle while drawn or modified. Currently + // only works with Vector, Line, Arrow, and Axes. + // description: + // Annotation is positioned with dojox.drawing.util.positioning.angle + // That method should be overwritten for custom placement. + // Called internally. To initiaize: + // TODO: currently always on + // + function(/*Object*/options){ + // arguments: + // options: Object + // One key value: the stencil that called this. + // + this.stencil = options.stencil; + this.util = options.stencil.util; + this.mouse = options.stencil.mouse; + + this.stencil.connectMult([ + ["onDrag", this, "showAngle"], + ["onUp", this, "hideAngle"], + ["onTransformBegin", this, "showAngle"], + ["onTransform", this, "showAngle"], + ["onTransformEnd", this, "hideAngle"] + ]); + }, + { + type:"dojox.drawing.tools.custom", + angle:0, + + showAngle: function(){ + // summary: + // Called to display angle + // + if(!this.stencil.selected && this.stencil.created){ return; } + if(this.stencil.getRadius() < this.stencil.minimumSize){ + this.hideAngle(); + return; + } + var node = this.getAngleNode(); + var d = this.stencil.pointsToData(); + var pt = dojox.drawing.util.positioning.angle({x:d.x1,y:d.y1},{x:d.x2,y:d.y2}); + var sc = this.mouse.scrollOffset(); + var mx = this.stencil.getTransform(); + var dx = mx.dx / this.mouse.zoom; + var dy = mx.dy / this.mouse.zoom; + pt.x /= this.mouse.zoom; + pt.y /= this.mouse.zoom; + + // adding _offX & _offY since this is HTML + // and we are from the page corner, not + // the canvas corner + var x = this.stencil._offX + pt.x - sc.left + dx; + var y = this.stencil._offY + pt.y - sc.top + dy; + dojo.style(node, { + left: x + "px", + top: y + "px", + align:pt.align + }); + + var angle=this.stencil.getAngle(); + if(this.stencil.style.zAxis && this.stencil.shortType=="vector"){ + node.innerHTML = this.stencil.data.cosphi > 0 ? "out of" : "into"; + }else if(this.stencil.shortType=="line"){ + node.innerHTML = this.stencil.style.zAxis?"out of":Math.ceil(angle%180); + }else{ + node.innerHTML = Math.ceil(angle); + } + }, + + getAngleNode: function(){ + // summary: + // Gets or creates HTMLNode used for display + if(!this._angleNode){ + this._angleNode = dojo.create("span", null, dojo.body()); + dojo.addClass(this._angleNode, "textAnnotation"); + dojo.style(this._angleNode, "opacity", 1); + } + return this._angleNode; //HTMLNode + }, + + hideAngle: function(){ + // summary: + // Turns display off. + // + if(this._angleNode && dojo.style(this._angleNode, "opacity")>0.9){ + + dojo.fadeOut({node:this._angleNode, + duration:500, + onEnd: function(node){ + dojo.destroy(node); + } + }).play(); + this._angleNode = null; + } + + } + } + +); +}); |
