From 9b7dac9215fbd7c0fe7a80d3e8f1ff378332fec3 Mon Sep 17 00:00:00 2001
From: Pushkar Joshi
Date: Fri, 23 Mar 2012 14:32:46 -0700
Subject: Almost working version of brush tool that uses only local coordinates
 to store the brush stroke points. Current version does not yet update the
 width and height of the brush stroke canvas upon changing the brush stroke
 through the PI. Also, current version does not obtain 3D position of points
 properly from the drawing tool base (see BrushTool _getUnsnappedPosition)

---
 js/helper-classes/3D/vec-utils.js  |  2 +-
 js/helper-classes/3D/view-utils.js | 13 +++++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

(limited to 'js/helper-classes')

diff --git a/js/helper-classes/3D/vec-utils.js b/js/helper-classes/3D/vec-utils.js
index e6db4a8d..4eacd856 100755
--- a/js/helper-classes/3D/vec-utils.js
+++ b/js/helper-classes/3D/vec-utils.js
@@ -259,6 +259,6 @@ var VecUtils = exports.VecUtils = Object.create(Object.prototype,
 			glmat4.rotate(mat, angle, axis);
 			return mat;
 		}
-	},
+	}
 
 });
\ No newline at end of file
diff --git a/js/helper-classes/3D/view-utils.js b/js/helper-classes/3D/view-utils.js
index 5a820fc2..a72b7906 100755
--- a/js/helper-classes/3D/view-utils.js
+++ b/js/helper-classes/3D/view-utils.js
@@ -1200,10 +1200,19 @@ exports.ViewUtils = Montage.create(Component, {
 //	MISCELLANEOUS
 //	event.layerX/Y:					var pt = viewUtils.getMousePoint(event);
 
+    getStageDimension: {
+        value: function()
+        {
+            var width = parseInt(this.application.ninja.stage.documentRoot.elementModel.stageDimension.style.getProperty("width"));
+            var height= parseInt(this.application.ninja.stage.documentRoot.elementModel.stageDimension.style.getProperty("height"));
+            return[width,height];
+        }
+    },
+
     getStage: {
         value: function()
 		{
-			return snapManagerModule.SnapManager.getStage();
+			return this.application.ninja.stage.snapManager.getStage();
 		}
 	},
 
@@ -1303,7 +1312,7 @@ exports.ViewUtils = Montage.create(Component, {
 	{
 		value: function()
 		{
-			return this.application.ninjs.stage.canvas;
+			return this.application.ninja.stage.canvas;
 		}
 	},
 
-- 
cgit v1.2.3


From 903b01b9d0501e6f974034273385a0517107b1e3 Mon Sep 17 00:00:00 2001
From: Pushkar Joshi
Date: Tue, 27 Mar 2012 12:42:42 -0700
Subject: File IO for the brush stroke AND changing the data type of brush
 stroke from GEOM_TYPE_CUBIC_BEZIER to GEOM_TYPE_BRUSH_STROKE

---
 js/helper-classes/3D/snap-manager.js | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'js/helper-classes')

diff --git a/js/helper-classes/3D/snap-manager.js b/js/helper-classes/3D/snap-manager.js
index a755e9e2..5b467b41 100755
--- a/js/helper-classes/3D/snap-manager.js
+++ b/js/helper-classes/3D/snap-manager.js
@@ -1411,6 +1411,8 @@ var SnapManager = exports.SnapManager = Montage.create(Component, {
                 case glObj.GEOM_TYPE_PATH:
                     // Snapping not implemented for these type, but don't throw an error...
 					break;
+                case glObj.GEOM_TYPE_BRUSH_STROKE:
+                    break; //don't throw error because snapping not yet implemented
                 case glObj.GEOM_TYPE_CUBIC_BEZIER:
                     {
                         var nearVrt = glObj.getNearVertex( eyePt, dir );
-- 
cgit v1.2.3


From a11ef2eed7049835c8bdfa50a2b893632c46eaa0 Mon Sep 17 00:00:00 2001
From: Valerio Virgillito
Date: Wed, 4 Apr 2012 11:11:58 -0700
Subject: Squashed commit of Preparing for the montage undo-manager:
 Architecture changes

Reworked the add and remove elements into 1 function which can take 1 or more elements.
Removed the _element from the selection array
Many other changes related to those 2 changes
Undo/Redo shortcuts are now using montage undo/redo manager.

Signed-off-by: Valerio Virgillito <valerio@motorola.com>
---
 js/helper-classes/3D/draw-utils.js   | 79 +++++++++++++++++-------------------
 js/helper-classes/3D/snap-manager.js | 16 ++++++--
 2 files changed, 51 insertions(+), 44 deletions(-)

(limited to 'js/helper-classes')

diff --git a/js/helper-classes/3D/draw-utils.js b/js/helper-classes/3D/draw-utils.js
index d6334e6c..c7c1c08d 100755
--- a/js/helper-classes/3D/draw-utils.js
+++ b/js/helper-classes/3D/draw-utils.js
@@ -109,8 +109,7 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
 			this._gridOrigin = [0,0];	// 2D plane space point
 
             this.eventManager.addEventListener("elementAdded", this, false);
-            this.eventManager.addEventListener("elementDeleted", this, false);
-            this.eventManager.addEventListener("deleteSelection", this, false);
+            this.eventManager.addEventListener("elementsRemoved", this, false);
             this.eventManager.addEventListener("elementChange", this, false);
             this.eventManager.addEventListener("closeDocument", this, false);
 		}
@@ -147,38 +146,47 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
 
     handleElementAdded: {
         value: function(event) {
-            this.addElement(event.detail);
+            var elements = event.detail;
+
+            if(Array.isArray(elements)) {
+                elements.forEach(function(element) {
+                    this.addElement(element);
+                }, this);
+            } else {
+                this.addElement(elements);
+            }
+
             this.drawWorkingPlane();
         }
     },
 
-    handleElementDeleted: {
+    handleElementsRemoved: {
         value: function(event) {
-            this.removeElement(event.detail);
-        }
-    },
+            var elements = event.detail;
+
+            if(Array.isArray(elements)) {
+                elements = Array.prototype.slice.call(elements, 0);
+                elements.forEach(function(element) {
+                    this.removeElement(element);
+                }, this);
+            } else {
+                this.removeElement(elements._element || elements);
+            }
 
-    handleDeleteSelection: {
-        value: function(event) {
             this.drawWorkingPlane();
         }
     },
 
     _shouldUpdatePlanes: {
         value: function(props) {
-            if(!props)
-            {
+            if(!props) {
                 return false;
-            }
-            else if (typeof props === "string")
-            {
+            } else if (typeof props === "string") {
                 return (this._updatePlaneProps.indexOf(props) !== -1);
             }
 
-            for (var p in props)
-            {
-                if(this._updatePlaneProps.indexOf(p) !== -1)
-                {
+            for (var p in props) {
+                if(this._updatePlaneProps.indexOf(p) !== -1) {
                     return true;
                 }
             }
@@ -199,15 +207,12 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
             {
                 var len = els.length,
                     i = 0,
-                    item,
-                    el;
+                    item;
 
                 for(i=0; i < len; i++) {
-                    item = els[i];
-                    el = item._element || item;
-                    if(el.elementModel.props3D.elementPlane)
+                    if(els[i].elementModel.props3D.elementPlane)
                     {
-                        el.elementModel.props3D.elementPlane.init();
+                        els[i].elementModel.props3D.elementPlane.init();
                     }
                 }
 
@@ -222,17 +227,12 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
 	// Methods
 	///////////////////////////////////////////////////////////////////////
 
-	addElement:
-	{
-		value: function( elt )
-		{
+	addElement: {
+		value: function( elt ) {
 			// check if we already know about this object
 			var n = this._eltArray.length;
-			for (var i=0;  i<n;  i++)
-			{
-				if (elt == this._eltArray[i])
-				{
-//					console.log( "element already added to stage display: " + elt.id );
+			for (var i=0;  i<n;  i++) {
+				if (elt == this._eltArray[i]) {
 					return;
 				}
 			}
@@ -248,17 +248,14 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
 		}
 	},
 
-	removeElement : {
-		value: function( elt ) {
+    removeElement: {
+        value: function(element) {
 			// check if object exists
-			var n = this._eltArray.length;
-			for (var i=0;  i<n;  i++)
-			{
-				if (elt == this._eltArray[i])
-				{
+			var _elements = this._eltArray.length;
+			for (var i=0;  i < _elements;  i++) {
+				if (element === this._eltArray[i]) {
 					// First remove the planes for this element
 					this._planesArray.splice(i, 1);
-
 					// Then remove the element
 					this._eltArray.splice(i, 1);
 
diff --git a/js/helper-classes/3D/snap-manager.js b/js/helper-classes/3D/snap-manager.js
index 5b467b41..67dedc49 100755
--- a/js/helper-classes/3D/snap-manager.js
+++ b/js/helper-classes/3D/snap-manager.js
@@ -123,7 +123,7 @@ var SnapManager = exports.SnapManager = Montage.create(Component, {
 	///////////////////////////////////////////////////////////////////////
     initialize: {
         value: function() {
-            this.eventManager.addEventListener("elementDeleted", this, false);
+            this.eventManager.addEventListener("elementsRemoved", this, false);
         }
     },
 
@@ -163,9 +163,19 @@ var SnapManager = exports.SnapManager = Montage.create(Component, {
     },
 
 
-    handleElementDeleted: {
+    handleElementsRemoved: {
         value: function(event) {
-            this.removeElementFrom2DCache(event.detail);
+            var self = this, elements = event.detail;
+
+            if(Array.isArray(elements)) {
+                elements = Array.prototype.slice.call(elements, 0);
+                elements.forEach(function(element) {
+                    element = element._element || element;
+                    self.removeElementFrom2DCache(element);
+                });
+            } else {
+                this.removeElementFrom2DCache(elements._element || elements);
+            }
         }
     },
 
-- 
cgit v1.2.3