diff options
Diffstat (limited to 'js/helper-classes/3D/draw-utils.js')
-rwxr-xr-x | js/helper-classes/3D/draw-utils.js | 2093 |
1 files changed, 1047 insertions, 1046 deletions
diff --git a/js/helper-classes/3D/draw-utils.js b/js/helper-classes/3D/draw-utils.js index 235b381e..5d3a1e2f 100755 --- a/js/helper-classes/3D/draw-utils.js +++ b/js/helper-classes/3D/draw-utils.js | |||
@@ -42,104 +42,104 @@ var StageLine = require("js/helper-classes/3D/StageLine").StageLine; | |||
42 | 42 | ||
43 | var DrawUtils = exports.DrawUtils = Montage.create(Component, { | 43 | var DrawUtils = exports.DrawUtils = Montage.create(Component, { |
44 | 44 | ||
45 | /////////////////////////////////////////////////////////////////////// | 45 | /////////////////////////////////////////////////////////////////////// |
46 | // Instance variables | 46 | // Instance variables |
47 | /////////////////////////////////////////////////////////////////////// | 47 | /////////////////////////////////////////////////////////////////////// |
48 | viewUtils: { value: null, writable: true }, | 48 | viewUtils: { value: null, writable: true }, |
49 | snapManager: { value: null }, | 49 | snapManager: { value: null }, |
50 | ElementPlanes : { value: null, writable: true }, | 50 | ElementPlanes : { value: null, writable: true }, |
51 | 51 | ||
52 | // the drawing surface (a canvas) | 52 | // the drawing surface (a canvas) |
53 | _drawingSurfaceElt : { value: null, writable: true }, | 53 | _drawingSurfaceElt : { value: null, writable: true }, |
54 | _drawingContext : { value: null, writable: true }, | 54 | _drawingContext : { value: null, writable: true }, |
55 | 55 | ||
56 | // color to draw the lines | 56 | // color to draw the lines |
57 | _lineColor : { value: "black", writable: true}, | 57 | _lineColor : { value: "black", writable: true}, |
58 | 58 | ||
59 | // define a stack for quickly setting graphics states and restoring them | 59 | // define a stack for quickly setting graphics states and restoring them |
60 | _stateArray : { value: [], writable: true }, | 60 | _stateArray : { value: [], writable: true }, |
61 | 61 | ||
62 | // save references to the grid lines for quick redraw | 62 | // save references to the grid lines for quick redraw |
63 | _gridLineArray : {value: [], writable: true }, | 63 | _gridLineArray : {value: [], writable: true }, |
64 | 64 | ||
65 | // state for moveTo, lineTo | 65 | // state for moveTo, lineTo |
66 | _curPt : { value: null, writable: true }, | 66 | _curPt : { value: null, writable: true }, |
67 | _curVis : { value: null, writable: true }, | 67 | _curVis : { value: null, writable: true }, |
68 | 68 | ||
69 | // the element that defines the coordinate system for the displayed lines | 69 | // the element that defines the coordinate system for the displayed lines |
70 | _sourceSpaceElt : { value: null, writable: true }, | 70 | _sourceSpaceElt : { value: null, writable: true }, |
71 | 71 | ||
72 | // maintain a list of objects to hide against | 72 | // maintain a list of objects to hide against |
73 | _eltArray : {value: [], writable: true }, | 73 | _eltArray : {value: [], writable: true }, |
74 | 74 | ||
75 | // maintain a list of the planes to test against | 75 | // maintain a list of the planes to test against |
76 | _planesArray : {value: [], writable: true }, | 76 | _planesArray : {value: [], writable: true }, |
77 | 77 | ||
78 | // the working plane. | 78 | // the working plane. |
79 | // a grid may be drawn aligned with this working plane | 79 | // a grid may be drawn aligned with this working plane |
80 | _workingPlane : { value: null, writable: true }, | 80 | _workingPlane : { value: null, writable: true }, |
81 | 81 | ||
82 | // save some parameters about the grid. | 82 | // save some parameters about the grid. |
83 | // these parameters are set when the grid is drawn | 83 | // these parameters are set when the grid is drawn |
84 | _gridHorizontalSpacing : {value: 50, writable: true }, | 84 | _gridHorizontalSpacing : {value: 50, writable: true }, |
85 | _gridVerticalSpacing : {value: 50, writable: true }, | 85 | _gridVerticalSpacing : {value: 50, writable: true }, |
86 | _gridHorizontalLineCount : {value:10, writable: true }, | 86 | _gridHorizontalLineCount : {value:10, writable: true }, |
87 | _gridVerticalLineCount : {value:0, writable: true }, | 87 | _gridVerticalLineCount : {value:0, writable: true }, |
88 | _gridOrigin : {value: null, writable: true }, | 88 | _gridOrigin : {value: null, writable: true }, |
89 | 89 | ||
90 | drawXY : {value: false, writable: true }, | 90 | drawXY : {value: false, writable: true }, |
91 | drawXZ : {value: false, writable: true }, | 91 | drawXZ : {value: false, writable: true }, |
92 | drawYZ : {value: false, writable: true }, | 92 | drawYZ : {value: false, writable: true }, |
93 | 93 | ||
94 | drawElementN : {value: false, writable: true }, | 94 | drawElementN : {value: false, writable: true }, |
95 | 95 | ||
96 | _selectionCtr : {value: null, writable: true }, | 96 | _selectionCtr : {value: null, writable: true }, |
97 | 97 | ||
98 | // Properties that require element planes to be updated | 98 | // Properties that require element planes to be updated |
99 | _updatePlaneProps : {value: ["matrix", "left", "top", "width", "height"], writable: false }, | 99 | _updatePlaneProps : {value: ["matrix", "left", "top", "width", "height"], writable: false }, |
100 | _recalculateScrollOffsets : { value: false }, | 100 | _recalculateScrollOffsets : { value: false }, |
101 | 101 | ||
102 | /////////////////////////////////////////////////////////////////////// | 102 | /////////////////////////////////////////////////////////////////////// |
103 | // Property accessors | 103 | // Property accessors |
104 | /////////////////////////////////////////////////////////////////////// | 104 | /////////////////////////////////////////////////////////////////////// |
105 | setDrawingSurfaceElement : { value: function( s ) { this._drawingSurfaceElt = s; if (s) this._drawingContext = s.getContext("2d"); }}, | 105 | setDrawingSurfaceElement : { value: function( s ) { this._drawingSurfaceElt = s; if (s) this._drawingContext = s.getContext("2d"); }}, |
106 | getDrawingSurfaceElement : { value: function() { return this._drawingSurfaceElt; }}, | 106 | getDrawingSurfaceElement : { value: function() { return this._drawingSurfaceElt; }}, |
107 | 107 | ||
108 | getDrawingContext : { value: function() { return this._drawingContext; }}, | 108 | getDrawingContext : { value: function() { return this._drawingContext; }}, |
109 | 109 | ||
110 | setSourceSpaceElement : { value: function(ss) { this._sourceSpaceElt = ss; }}, | 110 | setSourceSpaceElement : { value: function(ss) { this._sourceSpaceElt = ss; }}, |
111 | getSourceSpaceElement : { value: function() { return this._sourceSpaceElt; }}, | 111 | getSourceSpaceElement : { value: function() { return this._sourceSpaceElt; }}, |
112 | 112 | ||
113 | getWorkingPlane : { value: function() { return this._workingPlane; }}, | 113 | getWorkingPlane : { value: function() { return this._workingPlane; }}, |
114 | setWorkingPlane : { value: function (wp) { this._workingPlane = wp; }}, | 114 | setWorkingPlane : { value: function (wp) { this._workingPlane = wp; }}, |
115 | 115 | ||
116 | getGridHorizontalSpacing : { value: function() { return this._gridHorizontalSpacing; }}, | 116 | getGridHorizontalSpacing : { value: function() { return this._gridHorizontalSpacing; }}, |
117 | getGridVerticalSpacing : { value: function() { return this._gridVerticalSpacing; }}, | 117 | getGridVerticalSpacing : { value: function() { return this._gridVerticalSpacing; }}, |
118 | getGridHorizontalLineCount : { value: function() { return this._gridHorizontalLineCount; }}, | 118 | getGridHorizontalLineCount : { value: function() { return this._gridHorizontalLineCount; }}, |
119 | getGridVerticalLineCount : { value: function() { return this._gridVerticalLineCount; }}, | 119 | getGridVerticalLineCount : { value: function() { return this._gridVerticalLineCount; }}, |
120 | getGridOrigin : { value: function() { return this._gridOrigin.slice(0); }}, | 120 | getGridOrigin : { value: function() { return this._gridOrigin.slice(0); }}, |
121 | 121 | ||
122 | isDrawingGrid : { value: function() { return this.drawXY || this.drawYZ || this.drawXZ; }}, | 122 | isDrawingGrid : { value: function() { return this.drawXY || this.drawYZ || this.drawXZ; }}, |
123 | isDrawingElementNormal : { value: function() { return this.drawElementN }}, | 123 | isDrawingElementNormal : { value: function() { return this.drawElementN }}, |
124 | 124 | ||
125 | getLineColor : { value: function() { return this._lineColor; }}, | 125 | getLineColor : { value: function() { return this._lineColor; }}, |
126 | setLineColor : { value: function( color ) { this._lineColor = color; }}, | 126 | setLineColor : { value: function( color ) { this._lineColor = color; }}, |
127 | 127 | ||
128 | getLineWidth : { value: function() { return this._drawingContext.lineWidth; }}, | 128 | getLineWidth : { value: function() { return this._drawingContext.lineWidth; }}, |
129 | setLineWidth : { value: function( w ) { this._drawingContext.lineWidth = w; }}, | 129 | setLineWidth : { value: function( w ) { this._drawingContext.lineWidth = w; }}, |
130 | 130 | ||
131 | 131 | ||
132 | initialize: { | 132 | initialize: { |
133 | value: function() { | 133 | value: function() { |
134 | this._gridOrigin = [0,0]; // 2D plane space point | 134 | this._gridOrigin = [0,0]; // 2D plane space point |
135 | 135 | ||
136 | this.eventManager.addEventListener("elementAdded", this, false); | 136 | this.eventManager.addEventListener("elementAdded", this, false); |
137 | this.eventManager.addEventListener("elementsRemoved", this, false); | 137 | this.eventManager.addEventListener("elementsRemoved", this, false); |
138 | this.eventManager.addEventListener("elementChange", this, false); | 138 | this.eventManager.addEventListener("elementChange", this, false); |
139 | this.eventManager.addEventListener("elementChanging", this, false); | 139 | this.eventManager.addEventListener("elementChanging", this, false); |
140 | this.eventManager.addEventListener("elementReplaced", this, false); | 140 | this.eventManager.addEventListener("elementReplaced", this, false); |
141 | } | 141 | } |
142 | }, | 142 | }, |
143 | 143 | ||
144 | initializeFromDocument:{ | 144 | initializeFromDocument:{ |
145 | value:function(adjustScrollOffsets, useStageValues){ | 145 | value:function(adjustScrollOffsets, useStageValues){ |
@@ -364,502 +364,503 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, { | |||
364 | } | 364 | } |
365 | }, | 365 | }, |
366 | 366 | ||
367 | /////////////////////////////////////////////////////////////////////// | 367 | /////////////////////////////////////////////////////////////////////// |
368 | // Methods | 368 | // Methods |
369 | /////////////////////////////////////////////////////////////////////// | 369 | /////////////////////////////////////////////////////////////////////// |
370 | 370 | ||
371 | addElement: { | 371 | addElement: { |
372 | value: function( elt ) { | 372 | value: function( elt ) { |
373 | // check if we already know about this object | 373 | // check if we already know about this object |
374 | var n = this._eltArray.length; | 374 | var n = this._eltArray.length; |
375 | for (var i=0; i<n; i++) { | 375 | for (var i=0; i<n; i++) { |
376 | if (elt == this._eltArray[i]) { | 376 | if (elt == this._eltArray[i]) { |
377 | return; | 377 | return; |
378 | } | 378 | } |
379 | } | 379 | } |
380 | 380 | ||
381 | this._eltArray.push( elt ); | 381 | this._eltArray.push( elt ); |
382 | 382 | ||
383 | // create the planes for this element | 383 | // create the planes for this element |
384 | var plane = Object.create(this.ElementPlanes, {}); | 384 | var plane = Object.create(this.ElementPlanes, {}); |
385 | plane.setElement( elt ); | 385 | plane.setElement( elt ); |
386 | plane.init(); | 386 | plane.init(); |
387 | this._planesArray.push( plane ); | 387 | this._planesArray.push( plane ); |
388 | elt.elementModel.props3D.elementPlane = plane; | 388 | elt.elementModel.props3D.elementPlane = plane; |
389 | return plane; | 389 | return plane; |
390 | } | 390 | } |
391 | }, | 391 | }, |
392 | 392 | ||
393 | removeElement: { | 393 | removeElement: { |
394 | value: function(element) { | 394 | value: function(element) { |
395 | // check if object exists | 395 | // check if object exists |