From c534f70e9af920d252d0d94151c9d6f884283b81 Mon Sep 17 00:00:00 2001
From: Nivesh Rajbhandari
Date: Tue, 1 May 2012 07:01:44 -0700
Subject: Get working plane grid to draw for new stage web template workflow.

Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
---
 js/controllers/elements/body-controller.js | 40 ++++++++++++++++++++++++++++++
 js/helper-classes/3D/draw-utils.js         | 26 +++++++++++++------
 js/tools/RotateStage3DTool.js              | 16 ++++++++++--
 3 files changed, 72 insertions(+), 10 deletions(-)

(limited to 'js')

diff --git a/js/controllers/elements/body-controller.js b/js/controllers/elements/body-controller.js
index 839d0787..14aeae24 100755
--- a/js/controllers/elements/body-controller.js
+++ b/js/controllers/elements/body-controller.js
@@ -51,5 +51,45 @@ exports.BodyController = Montage.create(ElementController, {
                 return dist;
             }
         }
+    },
+
+    getMatrix: {
+        value: function(el) {
+            if(el.elementModel && el.elementModel.props3D && el.elementModel.props3D.matrix3d)
+            {
+                return el.elementModel.props3D.matrix3d.slice(0);
+            }
+            else
+            {
+                var mat;
+
+                if (el)
+                {
+                    mat = this.application.ninja.stylesController.getMatrixFromElement(el, true);
+                    if (!mat) {
+                        mat = Matrix.I(4);
+                    }
+
+                    var zoom = this.application.ninja.elementMediator.getProperty(el, "zoom");
+                    if (zoom)
+                    {
+                        zoom = Number(zoom);
+                        if (zoom != 1)
+                        {
+                            var zoomMat = Matrix.create(  [
+                                [ zoom,    0,    0, 0],
+                                [    0, zoom,    0, 0],
+                                [    0,    0, zoom, 0],
+                                [    0,    0,    0, 1]
+                            ] );
+                            glmat4.multiply( zoomMat, mat, mat );
+                        }
+                    }
+                }
+
+                el.elementModel.props3D.matrix3d = mat;
+                return mat;
+            }
+        }
     }
 });
diff --git a/js/helper-classes/3D/draw-utils.js b/js/helper-classes/3D/draw-utils.js
index 7bd77c3a..f7b02485 100755
--- a/js/helper-classes/3D/draw-utils.js
+++ b/js/helper-classes/3D/draw-utils.js
@@ -583,17 +583,24 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
 			// get a point that lies on the plane
 			var ptOnPlane = MathUtils.getPointOnPlane(this._workingPlane);
 
+            // define the grid parameters
+            var width,
+                height,
+                nLines = 10;
+
+            if(this.application.ninja.documentController.webTemplate) {
+                width = this.application.ninja.currentDocument.documentRoot.scrollWidth;
+                height = this.application.ninja.currentDocument.documentRoot.scrollHeight;
+            } else {
+                width = this.snapManager.getStageWidth();
+                height = this.snapManager.getStageHeight();
+            }
 			// get a matrix from working plane space to the world
 			var mat = this.getPlaneToWorldMatrix(zAxis, ptOnPlane);
-			var tMat = Matrix.Translation( [0.5*this.snapManager.getStageWidth(), 0.5*this.snapManager.getStageHeight(),0] );
+			var tMat = Matrix.Translation( [0.5*width, 0.5*height, 0] );
 			//mat = tMat.multiply(mat);
 			glmat4.multiply( tMat, mat, mat);
 
-			// define the grid parameters
-			var width = this.snapManager.getStageWidth(),
-				height = this.snapManager.getStageHeight();
-			var nLines = 10;
-
 			// the positioning of the grid may depend on the view direction.
 			var stage = this.snapManager.getStage();
 			var viewMat = this.viewUtils.getMatrixFromElement(stage);
@@ -662,6 +669,7 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
 				var offset = this.viewUtils.getElementOffset(this._sourceSpaceElt);
 				offset[2] = 0;
 				this.viewUtils.setViewportObj(this._sourceSpaceElt);
+                var sourceSpaceMat = this.viewUtils.getLocalToGlobalMatrix( this._sourceSpaceElt );
 				for (var i = 0; i < nLines; i++) {
 					// transform the points from working plane space to world space
 					//var t0 = mat.multiply(p0),
@@ -671,8 +679,10 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
 
 					// transform from world space to global screen space
 					if (this._sourceSpaceElt) {
-						t0 = this.viewUtils.localToGlobal(t0, this._sourceSpaceElt);
-						t1 = this.viewUtils.localToGlobal(t1, this._sourceSpaceElt);
+//						t0 = this.viewUtils.localToGlobal(t0, this._sourceSpaceElt);
+//						t1 = this.viewUtils.localToGlobal(t1, this._sourceSpaceElt);
+						t0 = this.viewUtils.localToGlobal2(t0, sourceSpaceMat);
+						t1 = this.viewUtils.localToGlobal2(t1, sourceSpaceMat);
 					}
 
 					// create a line from the endpoints
diff --git a/js/tools/RotateStage3DTool.js b/js/tools/RotateStage3DTool.js
index d1701304..0210289f 100755
--- a/js/tools/RotateStage3DTool.js
+++ b/js/tools/RotateStage3DTool.js
@@ -96,6 +96,11 @@ exports.RotateStage3DTool = Montage.create(Rotate3DToolBase, {
             viewUtils.pushViewportObj( stage );
             var eltCtr = viewUtils.getCenterOfProjection();
             viewUtils.popViewportObj();
+            if(this.application.ninja.documentController.webTemplate)
+            {
+                eltCtr[0] = stage.scrollWidth/2;
+                eltCtr[1] = stage.scrollHeight/2;
+            }
 
             var curMat = viewUtils.getMatrixFromElement(stage);
             var curMatInv = glmat4.inverse(curMat, []);
@@ -113,8 +118,15 @@ exports.RotateStage3DTool = Montage.create(Rotate3DToolBase, {
 
             this._origin = viewUtils.localToGlobal(eltCtr, stage);
 
-            this._setTransformOrigin(false);
-
+            if(this.application.ninja.documentController.webTemplate)
+            {
+                this._startOriginArray = [];
+                this._startOriginArray.push(this._origin.slice());
+            }
+            else
+            {
+                this._setTransformOrigin(false);
+            }
             this.DrawHandles();
         }
     },
-- 
cgit v1.2.3


From 84eec0ae4352c9f6e5986529cc70eed726d97a88 Mon Sep 17 00:00:00 2001
From: Nivesh Rajbhandari
Date: Tue, 1 May 2012 09:29:49 -0700
Subject: webTemplate var gets reset to false, so must check for new stage
 template differently.

Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
---
 js/helper-classes/3D/draw-utils.js | 3 ++-
 js/tools/RotateStage3DTool.js      | 6 ++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

(limited to 'js')

diff --git a/js/helper-classes/3D/draw-utils.js b/js/helper-classes/3D/draw-utils.js
index f7b02485..81a740e0 100755
--- a/js/helper-classes/3D/draw-utils.js
+++ b/js/helper-classes/3D/draw-utils.js
@@ -588,7 +588,8 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
                 height,
                 nLines = 10;
 
-            if(this.application.ninja.documentController.webTemplate) {
+//            if(this.application.ninja.documentController.webTemplate) {
+            if(this.application.ninja.currentDocument.documentRoot.id !== "UserContent") {
                 width = this.application.ninja.currentDocument.documentRoot.scrollWidth;
                 height = this.application.ninja.currentDocument.documentRoot.scrollHeight;
             } else {
diff --git a/js/tools/RotateStage3DTool.js b/js/tools/RotateStage3DTool.js
index 0210289f..2a9c63db 100755
--- a/js/tools/RotateStage3DTool.js
+++ b/js/tools/RotateStage3DTool.js
@@ -96,7 +96,8 @@ exports.RotateStage3DTool = Montage.create(Rotate3DToolBase, {
             viewUtils.pushViewportObj( stage );
             var eltCtr = viewUtils.getCenterOfProjection();
             viewUtils.popViewportObj();
-            if(this.application.ninja.documentController.webTemplate)
+//            if(this.application.ninja.documentController.webTemplate)
+            if(this.application.ninja.currentDocument.documentRoot.id !== "UserContent")
             {
                 eltCtr[0] = stage.scrollWidth/2;
                 eltCtr[1] = stage.scrollHeight/2;
@@ -118,7 +119,8 @@ exports.RotateStage3DTool = Montage.create(Rotate3DToolBase, {
 
             this._origin = viewUtils.localToGlobal(eltCtr, stage);
 
-            if(this.application.ninja.documentController.webTemplate)
+//            if(this.application.ninja.documentController.webTemplate)
+            if(this.application.ninja.currentDocument.documentRoot.id !== "UserContent")
             {
                 this._startOriginArray = [];
                 this._startOriginArray.push(this._origin.slice());
-- 
cgit v1.2.3