aboutsummaryrefslogtreecommitdiff
path: root/js/stage
diff options
context:
space:
mode:
authorNivesh Rajbhandari2012-07-19 10:55:22 -0700
committerNivesh Rajbhandari2012-07-19 10:55:22 -0700
commitfc13ef1e806116bb7ece5bb06604fa4f5714a6ed (patch)
tree8e8d87b31fffb7163aff0634ba4128f08be66343 /js/stage
parent16d06bac95ce8334f8c5586750e98360dbc9cbd9 (diff)
downloadninja-fc13ef1e806116bb7ece5bb06604fa4f5714a6ed.tar.gz
Squashed commit of the following:
commit 0285afe3d4bd458a51f11241f13ea6ffdb0283ed Merge: 2f9f5e3 16d06ba Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Jul 19 10:54:25 2012 -0700 Merge branch 'refs/heads/ninja-mqg734-master' into StageToolDrawingOptimizations commit 2f9f5e369eb96f6c81b5e4bcbe09b418825e2864 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Wed Jul 18 17:15:19 2012 -0700 Fixed selection bounds not drawing in nested tags. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit b0a3507f9d27579ad511c69314a09136d7f7c6a0 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Wed Jul 18 11:07:44 2012 -0700 Layout info needs to redraw if stage is updated. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 63c5e0bf52c33706ba597cb69f7794e287bd0f06 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Tue Jul 17 15:40:54 2012 -0700 Per feedback from QE, we are still going to draw tool feedback on each mouse move so the selection bounds are not out of sync with the elements. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 0599a742092b985c4002977e501e3b457173f1d9 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Tue Jul 17 15:28:25 2012 -0700 Fixed grid not drawing correctly when switching documents and when adding/removing elements. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit fd9410606ee6358910d65b2cb5f71812fd44a7c4 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Tue Jul 17 11:36:09 2012 -0700 Updated drawing feedback to handle matrix 2d values entered via CSS Panel. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 559c16c7ac8c9f40b94a011a6f932d4f97df66a7 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Mon Jul 16 17:14:28 2012 -0700 IKNinja-751 - Selection boundary doesn't follow the transform applied in the CSS Panel. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit e2da5340159db5cd6f75bf6c9b7eb9cbf959e5cd Merge: 7cc5de3 5146f22 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Mon Jul 16 15:36:28 2012 -0700 Merge branch 'refs/heads/ninja-mqg734-master' into StageToolDrawingOptimizations commit 7cc5de39e41b4220f53c91b15b0cf0ed53e0b0f6 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Mon Jul 16 14:52:06 2012 -0700 Check if ownerDocument.defaultValue is null. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 5ae97995a28a4b06fb7f8703eb8090ea16d88acd Merge: d17974d 0ede302 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Mon Jul 16 09:27:22 2012 -0700 Merge branch 'refs/heads/ninja-mqg734-master' into StageToolDrawingOptimizations commit d17974d77273bb635311cb6466f4427cf4d9e5d4 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Mon Jul 16 08:45:05 2012 -0700 Pass in selectedElements array directly to drawUtils when drawing selection bounds instead of creating a duplicate array. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 0b1ea3144cb3e2c1d272f60da32423d0604ace3b Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Fri Jul 13 14:03:40 2012 -0700 Fixed line tool not drawing the width and height info. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit b9c70e8d9ae324aa21fa5490edc71d8503bcefbc Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Fri Jul 13 12:42:25 2012 -0700 Used cached offsetWidth and offsetHeight. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 9e17ac7124745ba745014efe149b31dee4fe658f Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Jul 12 16:25:41 2012 -0700 Converting tabs to spaces … again! Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 351726c951bb73c28f0e15ea1ab32e85cc735688 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Jul 12 16:14:31 2012 -0700 Tabs should be 4 spaces. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 250c419aa2dbcb10f012817ee7039aca77cb2518 Merge: 3f8d61a 2880e1d Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Jul 12 16:08:31 2012 -0700 Merge branch 'refs/heads/ninja-mqg734-master' into StageToolDrawingOptimizations commit 3f8d61a676da3992947ed9a2ed0e449780fcfbe0 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Jul 12 15:53:44 2012 -0700 Rotate tool was not working immediately after switching selection and selection bounds were not drawing after resizing canvases. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit e2e1f81e3b6917e1032e1b99b79c266937f3bb25 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Jul 12 12:15:59 2012 -0700 Single draw cycle for stage updates and tool drawings. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 95a90b4c95ee3163c97bea317144366674e49ade Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Mon Jun 18 11:46:38 2012 -0700 Single draw cycle for the stage and layout. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 21966b1515d80d2161a14e5a19bc66f3f49a92ce Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Fri Jun 15 13:33:14 2012 -0700 Cache element offsets, including offsetParent. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 80c563c8ba06149691c6c1e754dd9a5e43bc7d4b Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Mon Jul 9 17:30:00 2012 -0700 Open materials editor popup next to PI button. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
Diffstat (limited to 'js/stage')
-rwxr-xr-xjs/stage/layout.js58
-rwxr-xr-xjs/stage/stage.reel/stage.js288
2 files changed, 153 insertions, 193 deletions
diff --git a/js/stage/layout.js b/js/stage/layout.js
index d133f100..5cc8dbea 100755
--- a/js/stage/layout.js
+++ b/js/stage/layout.js
@@ -67,19 +67,11 @@ exports.Layout = Montage.create(Component, {
67 return this._currentDocument; 67 return this._currentDocument;
68 }, 68 },
69 set : function(value) { 69 set : function(value) {
70 if (value === this._currentDocument) {// || value.getProperty("currentView") !== "design") { 70 if (value !== this._currentDocument) {
71 return; 71 this._currentDocument = value;
72 } 72 if(this._currentDocument && this._currentDocument.currentView === "design") {
73 73 this.elementsToDraw = Array.prototype.slice.call(this._currentDocument.model.documentRoot.childNodes, 0);
74 drawUtils._eltArray.length = 0; 74 }
75 drawUtils._planesArray.length = 0;
76
77 this._currentDocument = value;
78
79 if(!value) {
80
81 } else if(this._currentDocument.currentView === "design") {
82 this.elementsToDraw = this._currentDocument.model.documentRoot.childNodes;
83 } 75 }
84 } 76 }
85 }, 77 },
@@ -113,17 +105,6 @@ exports.Layout = Montage.create(Component, {
113 this.ctx = this.canvas.getContext("2d"); 105 this.ctx = this.canvas.getContext("2d");
114 this.ctx.lineWidth = this.ctxLineWidth; 106 this.ctx.lineWidth = this.ctxLineWidth;
115 this.ctx.fillStyle = this.drawFillColor; 107 this.ctx.fillStyle = this.drawFillColor;
116
117 this.eventManager.addEventListener("selectionChange", this, false);
118 this.eventManager.addEventListener("elementsRemoved", this, false);
119 }
120 },
121
122 // Redraw stage only once after all deletion is completed
123 handleElementsRemoved: {
124 value: function(event) {
125 this.draw();
126 this.draw3DInfo(false);
127 } 108 }
128 }, 109 },
129 110
@@ -131,13 +112,16 @@ exports.Layout = Montage.create(Component, {
131 value: function(event) { 112 value: function(event) {
132 var containerIndex; 113 var containerIndex;
133 114
115 // Clear the elements to draw
116 this.elementsToDraw.length = 0;
117
134 if(this.currentDocument === null){ 118 if(this.currentDocument === null){
135 return; 119 return;
136 } 120 }
137 121
138 if(this.currentDocument.currentView === "design"){ 122 if(this.currentDocument.currentView === "design"){
139 // Make an array copy of the line node list which is not an array like object 123 // Make an array copy of the live node list which is not an array like object
140 this.domTree = this.application.ninja.currentDocument.model.views.design.getLiveNodeList(true); 124 this.domTree = this.currentDocument.model.views.design.getLiveNodeList(true);
141 // Index of the current container 125 // Index of the current container
142 containerIndex = this.domTree.indexOf(this.currentDocument.model.domContainer); 126 containerIndex = this.domTree.indexOf(this.currentDocument.model.domContainer);
143 127
@@ -149,8 +133,6 @@ exports.Layout = Montage.create(Component, {
149 this.domTree = Array.prototype.slice.call(this.domTree[containerIndex].childNodes, 0); 133 this.domTree = Array.prototype.slice.call(this.domTree[containerIndex].childNodes, 0);
150 } 134 }
151 } 135 }
152 // Clear the elements to draw
153 this.elementsToDraw.length = 0;
154 136
155 // Draw the non selected elements 137 // Draw the non selected elements
156 if(!event.detail.isDocument) { 138 if(!event.detail.isDocument) {
@@ -161,9 +143,6 @@ exports.Layout = Montage.create(Component, {
161 this.elementsToDraw = Array.prototype.slice.call(this.domTree, 0); 143 this.elementsToDraw = Array.prototype.slice.call(this.domTree, 0);
162 } 144 }
163 145
164 this.draw(); // Not a reel yet
165 this.draw3DInfo(false);
166
167 // Clear the domTree copy 146 // Clear the domTree copy
168 this.domTree.length = 0; 147 this.domTree.length = 0;
169 } 148 }
@@ -171,8 +150,6 @@ exports.Layout = Montage.create(Component, {
171 150
172 draw: { 151 draw: {
173 value: function() { 152 value: function() {
174 this.clearCanvas();
175
176 // TODO Bind the layoutview mode to the current document 153 // TODO Bind the layoutview mode to the current document
177 // var mode = this.application.ninja.currentDocument.layoutMode; 154 // var mode = this.application.ninja.currentDocument.layoutMode;
178 if(this.layoutView === "layoutOff") return; 155 if(this.layoutView === "layoutOff") return;
@@ -184,21 +161,6 @@ exports.Layout = Montage.create(Component, {
184 } 161 }
185 }, 162 },
186 163
187 draw3DInfo: {
188 value: function(updatePlanes) {
189 if(updatePlanes) {
190 drawUtils.updatePlanes();
191 this.application.ninja.stage.stageDeps.snapManager._isCacheInvalid = true;
192 }
193
194 if(this.stage.appModel.show3dGrid) {
195 this.application.ninja.stage.stageDeps.snapManager.updateWorkingPlaneFromView();
196 }
197 drawUtils.drawWorkingPlane();
198 drawUtils.draw3DCompass();
199 }
200 },
201
202 clearCanvas: { 164 clearCanvas: {
203 value: function() { 165 value: function() {
204 this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); 166 this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
diff --git a/js/stage/stage.reel/stage.js b/js/stage/stage.reel/stage.js
index 7c587989..7ac64976 100755
--- a/js/stage/stage.reel/stage.js
+++ b/js/stage/stage.reel/stage.js
@@ -29,10 +29,10 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29POSSIBILITY OF SUCH DAMAGE. 29POSSIBILITY OF SUCH DAMAGE.
30</copyright> */ 30</copyright> */
31 31
32var Montage = require("montage/core/core").Montage, 32var Montage = require("montage/core/core").Montage,
33 Component = require("montage/ui/component").Component, 33 Component = require("montage/ui/component").Component,
34 drawUtils = require("js/helper-classes/3D/draw-utils").DrawUtils, 34 drawUtils = require("js/helper-classes/3D/draw-utils").DrawUtils,
35 vecUtils = require("js/helper-classes/3D/vec-utils").VecUtils; 35 vecUtils = require("js/helper-classes/3D/vec-utils").VecUtils;
36 36
37exports.Stage = Montage.create(Component, { 37exports.Stage = Montage.create(Component, {
38 38
@@ -46,8 +46,20 @@ exports.Stage = Montage.create(Component, {
46 drawNow: { value : false }, 46 drawNow: { value : false },
47 switchedFromCodeDoc: { value : false }, 47 switchedFromCodeDoc: { value : false },
48 48
49 drawLayout: { value : false },
50 updatePlanes: { value : false },
51 draw3DInfo: { value : false },
52
49 // TO REVIEW 53 // TO REVIEW
50 zoomFactor: {value : 1 }, 54 zoomFactor: {
55 get: function() {
56 if (this._viewport && this._viewport.style && this._viewport.style.zoom) {
57 return Number(this._viewport.style.zoom);
58 } else {
59 return 1;
60 }
61 }
62 },
51 63
52 _canvasSelectionPrefs: { value: { "thickness" : 1.0, "color" : "#46a1ff" } }, 64 _canvasSelectionPrefs: { value: { "thickness" : 1.0, "color" : "#46a1ff" } },
53 _canvasDrawingPrefs: { value: { "thickness" : 1.0, "color" : "#000" } }, 65 _canvasDrawingPrefs: { value: { "thickness" : 1.0, "color" : "#000" } },
@@ -85,7 +97,21 @@ exports.Stage = Montage.create(Component, {
85 set: function(value) { 97 set: function(value) {
86 this._resizeCanvases = value; 98 this._resizeCanvases = value;
87 if(value) { 99 if(value) {
88 this.needsDraw = true; 100 // TODO GET THE SCROLL SIZE FROM THE CSS -- 11 px
101 this._canvas.width = this._layoutCanvas.width = this._drawingCanvas.width = this._gridCanvas.width = this.bindingView.width = this.element.offsetWidth - 11;
102 this._canvas.height = this._layoutCanvas.height = this._drawingCanvas.height = this._gridCanvas.height = this.bindingView.height = this.element.offsetHeight - 11;// - 26 - 26;
103
104 if(this.currentDocument) {
105 if(this.currentDocument.currentView === "design") {
106 this.drawLayout = true;
107 this.updatePlanes = true;
108 this.draw3DInfo = true;
109 this.needsDrawSelection = true;
110 }
111 if(this.currentDocument.model && this.currentDocument.model.documentRoot) {
112 this.currentDocument.model.documentRoot.elementModel.setProperty("offsetCache", false);
113 }
114 }
89 } 115 }
90 } 116 }
91 }, 117 },
@@ -99,6 +125,44 @@ exports.Stage = Montage.create(Component, {
99 set: function(value) { 125 set: function(value) {
100 this._updatedStage = value; 126 this._updatedStage = value;
101 if(value) { 127 if(value) {
128 if(this.currentDocument) {
129 if(this.currentDocument.currentView === "design") {
130 this.drawLayout = true;
131 this.updatePlanes = true;
132 this.draw3DInfo = true;
133 this.needsDrawSelection = true;
134 }
135 if(this.currentDocument.model && this.currentDocument.model.documentRoot) {
136 this.currentDocument.model.documentRoot.elementModel.setProperty("offsetCache", false);
137 }