[483] | 1 | define(["dojo/_base/lang", "../util/oo", "../manager/_registry", "../stencil/Path"], |
---|
| 2 | function(lang, oo, registry, StencilPath){ |
---|
| 3 | |
---|
| 4 | //dojox.drawing.tools.Pencil |
---|
| 5 | var Pencil = oo.declare( |
---|
| 6 | StencilPath, |
---|
| 7 | function(){ |
---|
| 8 | // summary: |
---|
| 9 | // constructor |
---|
| 10 | this._started = false; |
---|
| 11 | }, |
---|
| 12 | { |
---|
| 13 | // summary: |
---|
| 14 | // Class for a drawable, continuous Path |
---|
| 15 | |
---|
| 16 | draws:true, |
---|
| 17 | |
---|
| 18 | // minDist: Number |
---|
| 19 | // The distance the mouse must travel before rendering |
---|
| 20 | // a path segment. Lower number is a higher definition |
---|
| 21 | // path but more points. |
---|
| 22 | minDist: 15, // how to make this more dynamic? Settable? |
---|
| 23 | |
---|
| 24 | onDown: function(obj){ |
---|
| 25 | this._started = true; |
---|
| 26 | var p = { |
---|
| 27 | x:obj.x, |
---|
| 28 | y:obj.y |
---|
| 29 | }; |
---|
| 30 | this.points = [p]; |
---|
| 31 | this.lastPoint = p; |
---|
| 32 | this.revertRenderHit = this.renderHit; |
---|
| 33 | this.renderHit = false; |
---|
| 34 | this.closePath = false; |
---|
| 35 | }, |
---|
| 36 | |
---|
| 37 | onDrag: function(obj){ |
---|
| 38 | if( |
---|
| 39 | !this._started |
---|
| 40 | || this.minDist > this.util.distance(obj.x, obj.y, this.lastPoint.x, this.lastPoint.y) |
---|
| 41 | ){ return; } |
---|
| 42 | |
---|
| 43 | var p = { |
---|
| 44 | x:obj.x, |
---|
| 45 | y:obj.y |
---|
| 46 | }; |
---|
| 47 | this.points.push(p); |
---|
| 48 | this.render(); |
---|
| 49 | this.checkClosePoint(this.points[0], obj); |
---|
| 50 | this.lastPoint = p; |
---|
| 51 | }, |
---|
| 52 | |
---|
| 53 | onUp: function(obj){ |
---|
| 54 | if(!this._started){ return; } |
---|
| 55 | if(!this.points || this.points.length<2){ |
---|
| 56 | this._started = false; |
---|
| 57 | this.points = []; |
---|
| 58 | return; |
---|
| 59 | } |
---|
| 60 | var box = this.getBounds(); |
---|
| 61 | if(box.w<this.minimumSize && box.h<this.minimumSize){ |
---|
| 62 | this.remove(this.hit, this.shape, this.closeGuide); |
---|
| 63 | this._started = false; |
---|
| 64 | this.setPoints([]); |
---|
| 65 | return; |
---|
| 66 | } |
---|
| 67 | if(this.checkClosePoint(this.points[0], obj, true)){ |
---|
| 68 | this.closePath = true; |
---|
| 69 | } |
---|
| 70 | this.renderHit = this.revertRenderHit; |
---|
| 71 | this.renderedOnce = true; |
---|
| 72 | this.render(); |
---|
| 73 | this.onRender(this); |
---|
| 74 | |
---|
| 75 | } |
---|
| 76 | } |
---|
| 77 | ); |
---|
| 78 | |
---|
| 79 | lang.setObject("dojox.drawing.tools.Pencil", Pencil); |
---|
| 80 | Pencil.setup = { |
---|
| 81 | name:"dojox.drawing.tools.Pencil", |
---|
| 82 | tooltip:"Pencil Tool", |
---|
| 83 | iconClass:"iconLine" |
---|
| 84 | }; |
---|
| 85 | |
---|
| 86 | registry.register(Pencil.setup, "tool"); |
---|
| 87 | |
---|
| 88 | return Pencil; |
---|
| 89 | }); |
---|