From 3987b73569e58843f2a91c0c6c4e4132f51ac247 Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Wed, 21 Mar 2012 17:13:56 -0700 Subject: Do not set webkit-transform styles on elements unless 3d is used on them. Signed-off-by: Nivesh Rajbhandari --- js/tools/SelectionTool.js | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) (limited to 'js/tools/SelectionTool.js') diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js index f9411f48..e252e36b 100755 --- a/js/tools/SelectionTool.js +++ b/js/tools/SelectionTool.js @@ -318,18 +318,28 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { this._targets.push({elt:elt, mat:curMat, matInv:curMatInv}); if(addToUndoStack) { + var prevX, + prevY, + prevW, + prevH, + _x, + _y, + _w, + _h, + previousMat, + previousStyleStr, + newStyleStr; if(!this._use3DMode) { - var previousMat = this._undoArray[i].mat.slice(0); - var prevX = this._undoArray[i]._x; - var prevY = this._undoArray[i]._y; - var prevW = this._undoArray[i]._w; - var prevH = this._undoArray[i]._h; - var _x = parseInt(ElementsMediator.getProperty(elt, "left")) + curMat[12] - previousMat[12]; - var _y = parseInt(ElementsMediator.getProperty(elt, "top")) + curMat[13] - previousMat[13]; - var _w = parseInt(ElementsMediator.getProperty(elt, "width")); - var _h = parseInt(ElementsMediator.getProperty(elt, "height")); + prevX = this._undoArray[i]._x; + prevY = this._undoArray[i]._y; + prevW = this._undoArray[i]._w; + prevH = this._undoArray[i]._h; + _x = parseInt(ElementsMediator.getProperty(elt, "left")); + _y = parseInt(ElementsMediator.getProperty(elt, "top")); + _w = parseInt(ElementsMediator.getProperty(elt, "width")); + _h = parseInt(ElementsMediator.getProperty(elt, "height")); previousLeft.push(prevX + "px"); previousTop.push(prevY + "px"); @@ -339,27 +349,22 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { newTop.push(_y + "px"); newWidth.push(_w + "px"); newHeight.push(_h + "px"); - - viewUtils.setMatrixForElement(elt, previousMat); - - this._targets[i].mat = previousMat; - this._targets[i].matInv = glmat4.inverse(previousMat, []); } else { - var previousMat = this._undoArray[i].mat.slice(0); - var prevW = this._undoArray[i]._w; - var prevH = this._undoArray[i]._h; - var _w = parseInt(ElementsMediator.getProperty(elt, "width")); - var _h = parseInt(ElementsMediator.getProperty(elt, "height")); + previousMat = this._undoArray[i].mat.slice(0); + prevW = this._undoArray[i]._w; + prevH = this._undoArray[i]._h; + _w = parseInt(ElementsMediator.getProperty(elt, "width")); + _h = parseInt(ElementsMediator.getProperty(elt, "height")); previousWidth.push(prevW + "px"); previousHeight.push(prevH + "px"); newWidth.push(_w + "px"); newHeight.push(_h + "px"); - var previousStyleStr = {dist:this._undoArray[i].dist, + previousStyleStr = {dist:this._undoArray[i].dist, mat:MathUtils.scientificToDecimal(previousMat, 5)}; - var newStyleStr = {dist:viewUtils.getPerspectiveDistFromElement(elt), + newStyleStr = {dist:viewUtils.getPerspectiveDistFromElement(elt), mat:MathUtils.scientificToDecimal(curMat, 5)}; previousStyles.push(previousStyleStr); newStyles.push(newStyleStr); -- cgit v1.2.3 From 6965b72f1f42f7280bc5e5e52d08b3d64d106831 Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Thu, 22 Mar 2012 13:07:48 -0700 Subject: IKNinja-1368 - Moving multiple selection of 2d elements starts changing the objects' relative positions. Signed-off-by: Nivesh Rajbhandari --- js/tools/SelectionTool.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'js/tools/SelectionTool.js') diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js index e252e36b..aec5b6a3 100755 --- a/js/tools/SelectionTool.js +++ b/js/tools/SelectionTool.js @@ -465,11 +465,14 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { } else { - curMat = item.mat.slice(0); - glmat4.multiply(curMat, qMat, curMat); - var previousMat = this._undoArray[i].mat.slice(0); - var _x = parseInt(ElementsMediator.getProperty(elt, "left")) + curMat[12] - previousMat[12]; - var _y = parseInt(ElementsMediator.getProperty(elt, "top")) + curMat[13] - previousMat[13]; +// curMat = item.mat.slice(0); +// glmat4.multiply(curMat, qMat, curMat); +// var previousMat = this._undoArray[i].mat.slice(0); +// var _x = parseInt(ElementsMediator.getProperty(elt, "left")) + curMat[12] - previousMat[12]; +// var _y = parseInt(ElementsMediator.getProperty(elt, "top")) + curMat[13] - previousMat[13]; + + var _x = parseInt(ElementsMediator.getProperty(elt, "left")) + transMat[12]; + var _y = parseInt(ElementsMediator.getProperty(elt, "top")) + transMat[13]; newLeft.push(_x + "px"); newTop.push(_y + "px"); @@ -582,6 +585,8 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { { // form the translation vector and post translate the matrix by it. delta = vecUtils.vecSubtract( 3, data.pt1, data.pt0 ); + delta[0] = ~~delta[0]; + delta[1] = ~~delta[1]; delta[2] = 0; var transMat = Matrix.Translation( delta ); this._moveElements(transMat); -- cgit v1.2.3 From bf815cbda0f7a4f2b8ca9532745fa525ed60c8d3 Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Mon, 2 Apr 2012 16:58:54 -0700 Subject: IKNinja-1376 - 3D values reverted when using Selection tool to move the object. (Only happen when 3D values set in PI) We need to update the undo array for the tool if values are changed outside the active tool. I think this was the same bug causing IKNinja-1411. Signed-off-by: Nivesh Rajbhandari --- js/tools/SelectionTool.js | 1 + 1 file changed, 1 insertion(+) (limited to 'js/tools/SelectionTool.js') diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js index f9411f48..c00a2929 100755 --- a/js/tools/SelectionTool.js +++ b/js/tools/SelectionTool.js @@ -60,6 +60,7 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { else { this._canSnap = true; + this._updateTargets(); } this.isDrawing = true; -- cgit v1.2.3 From 48d4dd0f0570f4ac3556f228846ed0fd98a674e5 Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Mon, 9 Apr 2012 16:47:56 -0700 Subject: setProperties to the montage undo/redo Signed-off-by: Valerio Virgillito --- js/tools/SelectionTool.js | 57 ++++++++++++----------------------------------- 1 file changed, 14 insertions(+), 43 deletions(-) (limited to 'js/tools/SelectionTool.js') diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js index 94cc6b83..6dec781b 100755 --- a/js/tools/SelectionTool.js +++ b/js/tools/SelectionTool.js @@ -372,46 +372,21 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { } } } - if(addToUndoStack) - { - if(!this._use3DMode) - { + + if(addToUndoStack) { + if(!this._use3DMode) { // if we have a delta, that means the transform handles were used and // we should update the width and height too. Otherwise, just update left and top. - if(this._delta) - { - ElementsMediator.setProperties(this.application.ninja.selectedElements, - { "left": newLeft, "top": newTop, "width": newWidth, "height": newHeight }, - "Change", - "selectionTool", - { "left" : previousLeft, "top" : previousTop, "width": previousWidth, "height": previousHeight} - ); - } - else - { - ElementsMediator.setProperties(this.application.ninja.selectedElements, - { "left": newLeft, "top": newTop }, - "Change", - "selectionTool", - { "left" : previousLeft, "top" : previousTop } - ); + if(this._delta) { + ElementsMediator.setProperties(this.application.ninja.selectedElements, {"left": newLeft, "top": newTop, "width": newWidth, "height": newHeight }, + { "left" : previousLeft, "top" : previousTop, "width": previousWidth, "height": previousHeight}, "Change", "selectionTool"); + } else { + ElementsMediator.setProperties(this.application.ninja.selectedElements, {"left": newLeft, "top": newTop }, {"left": previousLeft, "top": previousTop}, "Change", "selectionTool"); } - } - else - { + } else { // TODO - We don't support transform handles in 3d space for now - ElementsMediator.setProperties(this.application.ninja.selectedElements, - { "width": newWidth, "height": newHeight }, - "Change", - "selectionTool", - { "width": previousWidth, "height": previousHeight} - ); - ElementsMediator.set3DProperties(this.application.ninja.selectedElements, - newStyles, - "Change", - "translateTool", - previousStyles - ); + ElementsMediator.setProperties(this.application.ninja.selectedElements, {"width": newWidth, "height": newHeight }, {"width": previousWidth, "height": previousHeight}, "Change", "selectionTool"); + ElementsMediator.set3DProperties(this.application.ninja.selectedElements, newStyles, "Change", "translateTool", previousStyles); } } // Save previous value for undo/redo @@ -471,13 +446,9 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { } } - if(newLeft.length) - { - ElementsMediator.setProperties(this.application.ninja.selectedElements, - { "left": newLeft, "top": newTop }, "Changing", "SelectionTool" ); - } - else - { + if(newLeft.length) { + ElementsMediator.setProperties(this.application.ninja.selectedElements, {"left": newLeft, "top": newTop }, null, "Changing", "SelectionTool" ); + } else { NJevent("elementChanging", {type : "Changing", redraw: false}); } } -- cgit v1.2.3 From f91e64235eb03c889ff4f5577c3e3480cd0d787f Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Fri, 13 Apr 2012 00:30:19 -0700 Subject: removing _undo array and _targets array and use object instead of matching arrays to set properties Signed-off-by: Valerio Virgillito --- js/tools/SelectionTool.js | 254 ++++++++++++++++++++-------------------------- 1 file changed, 109 insertions(+), 145 deletions(-) (limited to 'js/tools/SelectionTool.js') diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js index 6dec781b..d9327f33 100755 --- a/js/tools/SelectionTool.js +++ b/js/tools/SelectionTool.js @@ -33,19 +33,16 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { _areElementsOnSamePlane : { value: function () { - if(this._targets && this._targets.length) - { - var len = this._targets.length; + if(this.application.ninja.selectedElements.length) { + var len = this.application.ninja.selectedElements.length; var plane = this.application.ninja.stage.stageDeps.snapManager.getDragPlane(); - for(var i = 0; i < len; i++) - { - var elt = this._targets[i].elt; - if(!this.application.ninja.stage.stageDeps.snapManager.elementIsOnPlane(elt, plane)) - { + for(var i = 0; i < len; i++) { + if(!this.application.ninja.stage.stageDeps.snapManager.elementIsOnPlane(this.application.ninja.selectedElements[i], plane)) { return false; } } } + return true; } }, @@ -296,160 +293,126 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { }, _updateTargets: { - value: function(addToUndoStack) { - var newLeft = [], - newTop = [], - newWidth = [], - newHeight = [], - newStyles = [], - previousLeft = [], - previousTop = [], - previousWidth = [], - previousHeight = [], - previousStyles = []; - var len = this.application.ninja.selectedElements.length; - this._targets = []; - for(var i = 0; i < len; i++) { - var elt = this.application.ninja.selectedElements[i]; - - var curMat = viewUtils.getMatrixFromElement(elt); - var curMatInv = glmat4.inverse(curMat, []); - - this._targets.push({elt:elt, mat:curMat, matInv:curMatInv}); - if(addToUndoStack) { - var prevX, - prevY, - prevW, - prevH, - _x, - _y, - _w, - _h, - previousMat, - previousStyleStr, - newStyleStr; - - if(!this._use3DMode) { - prevX = this._undoArray[i]._x; - prevY = this._undoArray[i]._y; - prevW = this._undoArray[i]._w; - prevH = this._undoArray[i]._h; - _x = parseInt(ElementsMediator.getProperty(elt, "left")); - _y = parseInt(ElementsMediator.getProperty(elt, "top")); - _w = parseInt(ElementsMediator.getProperty(elt, "width")); - _h = parseInt(ElementsMediator.getProperty(elt, "height")); - - previousLeft.push(prevX + "px"); - previousTop.push(prevY + "px"); - previousWidth.push(prevW + "px"); - previousHeight.push(prevH + "px"); - newLeft.push(_x + "px"); - newTop.push(_y + "px"); - newWidth.push(_w + "px"); - newHeight.push(_h + "px"); - } - else - { - previousMat = this._undoArray[i].mat.slice(0); - prevW = this._undoArray[i]._w; - prevH = this._undoArray[i]._h; - _w = parseInt(ElementsMediator.getProperty(elt, "width")); - _h = parseInt(ElementsMediator.getProperty(elt, "height")); - previousWidth.push(prevW + "px"); - previousHeight.push(prevH + "px"); - newWidth.push(_w + "px"); - newHeight.push(_h + "px"); - - previousStyleStr = {dist:this._undoArray[i].dist, - mat:MathUtils.scientificToDecimal(previousMat, 5)}; - newStyleStr = {dist:viewUtils.getPerspectiveDistFromElement(elt), - mat:MathUtils.scientificToDecimal(curMat, 5)}; - previousStyles.push(previousStyleStr); - newStyles.push(newStyleStr); - - this._targets[i].mat = curMat; - this._targets[i].matInv = curMatInv; + value: function(addToUndo) { + var modObject = [], mod3dObject = [], self = this; + + this.application.ninja.selectedElements.forEach(function(element) { + + if(addToUndo) { + if(!self._use3DMode) { + var prevX = element.elementModel.getProperty("x"); + var prevY = element.elementModel.getProperty("y"); + var prevW = element.elementModel.getProperty("w"); + var prevH = element.elementModel.getProperty("h"); + var x = ElementsMediator.getProperty(element, "left"); + var y = ElementsMediator.getProperty(element, "top"); + var w = ElementsMediator.getProperty(element, "width"); + var h = ElementsMediator.getProperty(element, "height"); + + // if we have a delta, that means the transform handles were used and + // we should update the width and height too. Otherwise, just update left and top. + if(this.delta) { + modObject.push({element:element, properties:{left: x, top:y, width: w, height: h}, previousProperties: {left: prevX, top:prevY, width: prevW, height: prevH}}); + } else { + modObject.push({element:element, properties:{left: x, top:y}, previousProperties: {left: prevX, top:prevY}}); + } + + } else { + // Not using the 3d mode + var previousMat = element.elementModel.getProperty("mat").slice(0); + var prevW = element.elementModel.getProperty("w"); + var prevH = element.elementModel.getProperty("h"); + var w = ElementsMediator.getProperty(element, "width"); + var h = ElementsMediator.getProperty(element, "height"); + + var previousStyleStr = {dist:element.elementModel.getProperty("dist"), mat:MathUtils.scientificToDecimal(previousMat, 5)}; + var newStyleStr = {dist:viewUtils.getPerspectiveDistFromElement(element), mat:MathUtils.scientificToDecimal(viewUtils.getMatrixFromElement(element), 5)}; + + modObject.push({element:element, properties:{width: w, height:h}, previousProperties: {width: prevW, height:prevH}}); + mod3dObject.push({element:element, properties:newStyleStr, previousProperties: previousStyleStr}); } } - } + }); - if(addToUndoStack) { + // Move them + if(addToUndo) { if(!this._use3DMode) { - // if we have a delta, that means the transform handles were used and - // we should update the width and height too. Otherwise, just update left and top. - if(this._delta) { - ElementsMediator.setProperties(this.application.ninja.selectedElements, {"left": newLeft, "top": newTop, "width": newWidth, "height": newHeight }, - { "left" : previousLeft, "top" : previousTop, "width": previousWidth, "height": previousHeight}, "Change", "selectionTool"); - } else { - ElementsMediator.setProperties(this.application.ninja.selectedElements, {"left": newLeft, "top": newTop }, {"left": previousLeft, "top": previousTop}, "Change", "selectionTool"); - } + ElementsMediator.setProperties(modObject, "Change", "SelectionTool" ); } else { // TODO - We don't support transform handles in 3d space for now - ElementsMediator.setProperties(this.application.ninja.selectedElements, {"width": newWidth, "height": newHeight }, {"width": previousWidth, "height": previousHeight}, "Change", "selectionTool"); - ElementsMediator.set3DProperties(this.application.ninja.selectedElements, newStyles, "Change", "translateTool", previousStyles); + ElementsMediator.setProperties(modObject, "Change", "SelectionTool" ); + ElementsMediator.set3DProperties(mod3dObject, "Change", "translateTool"); + } } - // Save previous value for undo/redo - this._undoArray = []; - for(i = 0, len = this._targets.length; i < len; i++) - { - var item = this._targets[i]; - _x = parseInt(ElementsMediator.getProperty(item.elt, "left")); - _y = parseInt(ElementsMediator.getProperty(item.elt, "top")); - _w = parseInt(ElementsMediator.getProperty(item.elt, "width")); - _h = parseInt(ElementsMediator.getProperty(item.elt, "height")); - var _mat = viewUtils.getMatrixFromElement(item.elt); - var _dist = viewUtils.getPerspectiveDistFromElement(item.elt); - this._undoArray.push({_x:_x, _y:_y, _w:_w, _h:_h, mat:_mat, dist:_dist}); - } + + this.application.ninja.selectedElements.forEach(function(element) { + element.elementModel.setProperty("x", ElementsMediator.getProperty(element, "left")); + element.elementModel.setProperty("y", ElementsMediator.getProperty(element, "top")); + element.elementModel.setProperty("w", ElementsMediator.getProperty(element, "width")); + element.elementModel.setProperty("h", ElementsMediator.getProperty(element, "height")); + element.elementModel.setProperty("mat", viewUtils.getMatrixFromElement(element)); + element.elementModel.setProperty("matInv", glmat4.inverse(element.elementModel.getProperty("mat"), [])); + element.elementModel.setProperty("dist", viewUtils.getPerspectiveDistFromElement(element)); + }); } }, _moveElements: { value: function (transMat) { - var len = this._targets.length, - i, - item, - elt, - curMat, - newLeft = [], - newTop = []; + var elt, curMat, targets = []; - var matInv = glmat4.inverse(this._startMat, []); - var nMat = glmat4.multiply(transMat, this._startMat, [] ); - var qMat = glmat4.multiply(matInv, nMat, []); +// var matInv = glmat4.inverse(this._startMat, []); +// var qMat = glmat4.multiply(matInv, nMat, []); + this._startMat = glmat4.multiply(transMat, this._startMat, [] ); - this._startMat = nMat; + var self = this; - for(i = 0; i < len; i++) - { - item = this._targets[i]; - elt = item.elt; - if(this._use3DMode) - { + this.application.ninja.selectedElements.forEach(function(element) { + if(self._use3DMode) { + curMat = element.elementModel.getProperty("mat"); + + curMat[12] += transMat[12]; + curMat[13] += transMat[13]; + curMat[14] += transMat[14]; + viewUtils.setMatrixForElement( element, curMat, true); + element.elementModel.setProperty("mat", curMat); + } else { + var x = (parseInt(ElementsMediator.getProperty(element, "left")) + transMat[12]) + "px"; + var y = (parseInt(ElementsMediator.getProperty(element, "top")) + transMat[13]) + "px"; + + targets.push({element:element, properties:{left:x , top:y}}); + } + }); + + /* + this._targets.forEach(function(item) { + elt = item.elt; + + if(self._use3DMode) { curMat = item.mat; curMat[12] += transMat[12]; curMat[13] += transMat[13]; curMat[14] += transMat[14]; viewUtils.setMatrixForElement( elt, curMat, true); - this._targets[i].mat = curMat; - } - else - { - var _x = parseInt(ElementsMediator.getProperty(elt, "left")) + transMat[12]; - var _y = parseInt(ElementsMediator.getProperty(elt, "top")) + transMat[13]; + item.mat = curMat; - newLeft.push(_x + "px"); - newTop.push(_y + "px"); + return NJevent("elementChanging", {type : "Changing", redraw: false}); + } else { + var x = (parseInt(ElementsMediator.getProperty(elt, "left")) + transMat[12]) + "px"; + var y = (parseInt(ElementsMediator.getProperty(elt, "top")) + transMat[13]) + "px"; + + targets.push({element:elt, properties:{left:x , top:y}}); } - } + }); + */ - if(newLeft.length) { - ElementsMediator.setProperties(this.application.ninja.selectedElements, {"left": newLeft, "top": newTop }, null, "Changing", "SelectionTool" ); + if(this._use3DMode) { + return NJevent("elementChanging", {type : "Changing", redraw: false}); } else { - NJevent("elementChanging", {type : "Changing", redraw: false}); + ElementsMediator.setProperties(targets, "Changing", "SelectionTool" ); } } }, @@ -457,15 +420,10 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { //------------------------------------------------------------------------- //Routines to modify the selected objects modifyElements : { - value : function(data, event) - { - var delta, - deltaH, - deltaW, - deltaL, - deltaT; - if(this._handleMode !== null) - { + value : function(data, event) { + var delta, deltaH, deltaW, deltaL, deltaT, modObject = []; + + if(this._handleMode !== null) { // 0 7 6 // 1 5 // 2 3 4 @@ -512,6 +470,12 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { deltaW = this._undoArray.map(function(item) { return item._w + delta + "px"}); delta = ~~(data.pt1[1] - data.pt0[1]); deltaH = this._undoArray.map(function(item) { return item._h + delta + "px"}); + /* + this.application.ninja.selectedElements.forEach(function(element) { + var width = parseInt(element.elementModel.getProperty("w")) + delta + "px"; + modObject.push({element:element, properties:{width: width}}); + }); + */ ElementsMediator.setProperties(this.application.ninja.selectedElements, { "width": deltaW, "height": deltaH }, "Changing", "SelectionTool" ); break; case 5: @@ -684,7 +648,7 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { { return; } - if(this._target && this._handles && (this._targets.length === 1)) + if((this.application.ninja.selectedElements.length === 1) && this._handles) { var len = this._handles.length; var i = 0, -- cgit v1.2.3 From 0c17edd7cf21f26c4e25d78d3aa51d841dcf551f Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Fri, 13 Apr 2012 01:05:54 -0700 Subject: fixing the transform handles Signed-off-by: Valerio Virgillito --- js/tools/SelectionTool.js | 126 +++++++++++++++++++++------------------------- 1 file changed, 58 insertions(+), 68 deletions(-) (limited to 'js/tools/SelectionTool.js') diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js index d9327f33..7033ee3d 100755 --- a/js/tools/SelectionTool.js +++ b/js/tools/SelectionTool.js @@ -386,29 +386,6 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { } }); - /* - this._targets.forEach(function(item) { - elt = item.elt; - - if(self._use3DMode) { - curMat = item.mat; - - curMat[12] += transMat[12]; - curMat[13] += transMat[13]; - curMat[14] += transMat[14]; - viewUtils.setMatrixForElement( elt, curMat, true); - item.mat = curMat; - - return NJevent("elementChanging", {type : "Changing", redraw: false}); - } else { - var x = (parseInt(ElementsMediator.getProperty(elt, "left")) + transMat[12]) + "px"; - var y = (parseInt(ElementsMediator.getProperty(elt, "top")) + transMat[13]) + "px"; - - targets.push({element:elt, properties:{left:x , top:y}}); - } - }); - */ - if(this._use3DMode) { return NJevent("elementChanging", {type : "Changing", redraw: false}); } else { @@ -421,7 +398,7 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { //Routines to modify the selected objects modifyElements : { value : function(data, event) { - var delta, deltaH, deltaW, deltaL, deltaT, modObject = []; + var delta, deltaH = [], deltaW = [], modObject = []; if(this._handleMode !== null) { // 0 7 6 @@ -431,76 +408,89 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { { case 0: // Resize North-West - delta = ~~(data.pt1[0] - data.pt0[0]); - deltaW = this._undoArray.map(function(item) { return item._w - delta + "px"}); - deltaL = this._undoArray.map(function(item) { return item._x + delta + "px"}); - delta = ~~(data.pt1[1] - data.pt0[1]); - deltaH = this._undoArray.map(function(item) { return item._h - delta + "px"}); - deltaT = this._undoArray.map(function(item) { return item._y + delta + "px"}); - ElementsMediator.setProperties(this.application.ninja.selectedElements, - { "left": deltaL, "top": deltaT, "width": deltaW, "height": deltaH }, "Changing", "SelectionTool" ); + this.application.ninja.selectedElements.forEach(function(element) { + delta = ~~(data.pt1[0] - data.pt0[0]); + var width = parseInt(element.elementModel.getProperty("w")) - delta + "px"; + var left = parseInt(element.elementModel.getProperty("x")) + delta + "px"; + delta = ~~(data.pt1[1] - data.pt0[1]); + var height = parseInt(element.elementModel.getProperty("h")) - delta + "px"; + var top = parseInt(element.elementModel.getProperty("y")) + delta + "px"; + modObject.push({element:element, properties:{width: width, height: height, left: left, top: top}}); + }); + ElementsMediator.setProperties(modObject, "Changing", "SelectionTool" ); break; case 1: // Resize West - delta = ~~(data.pt1[0] - data.pt0[0]); - deltaW = this._undoArray.map(function(item) { return item._w - delta + "px"}); - deltaL = this._undoArray.map(function(item) { return item._x + delta + "px"}); - ElementsMediator.setProperties(this.application.ninja.selectedElements, - { "left": deltaL, "width": deltaW }, "Changing", "SelectionTool" ); + this.application.ninja.selectedElements.forEach(function(element) { + delta = ~~(data.pt1[0] - data.pt0[0]); + var width = parseInt(element.elementModel.getProperty("w")) - delta + "px"; + var left = parseInt(element.elementModel.getProperty("x")) + delta + "px"; + modObject.push({element:element, properties:{left: left, width: width}}); + }); + ElementsMediator.setProperties(modObject, "Changing", "SelectionTool"); break; case 2: // Resize South-West - delta = ~~(data.pt1[0] - data.pt0[0]); - deltaW = this._undoArray.map(function(item) { return item._w - delta + "px"}); - deltaL = this._undoArray.map(function(item) { return item._x + delta + "px"}); - delta = ~~(data.pt1[1] - data.pt0[1]); - deltaH = this._undoArray.map(function(item) { return item._h + delta + "px"}); - ElementsMediator.setProperties(this.application.ninja.selectedElements, - { "left": deltaL, "width": deltaW, "height": deltaH }, "Changing", "SelectionTool" ); + this.application.ninja.selectedElements.forEach(function(element) { + delta = ~~(data.pt1[0] - data.pt0[0]); + var width = parseInt(element.elementModel.getProperty("w")) - delta + "px"; + var left = parseInt(element.elementModel.getProperty("x")) + delta + "px"; + delta = ~~(data.pt1[1] - data.pt0[1]); + var height = parseInt(element.elementModel.getProperty("h")) + delta + "px"; + modObject.push({element:element, properties:{width: width, height: height, left: left}}); + }); + ElementsMediator.setProperties(modObject, "Changing", "SelectionTool" ); break; case 3: // Resize South - delta = ~~(data.pt1[1] - data.pt0[1]); - deltaH = this._undoArray.map(function(item) { return item._h + delta + "px"}); + this.application.ninja.selectedElements.forEach(function(element) { + delta = ~~(data.pt1[1] - data.pt0[1]); + deltaH.push(parseInt(element.elementModel.getProperty("h")) + delta + "px"); + // modObject.push({element:element, properties:{width: width, height: height}}); + }); ElementsMediator.setProperty(this.application.ninja.selectedElements, "height", deltaH, "Changing", "SelectionTool" ); break; case 4: // Resize South-East - delta = ~~(data.pt1[0] - data.pt0[0]); - deltaW = this._undoArray.map(function(item) { return item._w + delta + "px"}); - delta = ~~(data.pt1[1] - data.pt0[1]); - deltaH = this._undoArray.map(function(item) { return item._h + delta + "px"}); - /* this.application.ninja.selectedElements.forEach(function(element) { + delta = ~~(data.pt1[0] - data.pt0[0]); var width = parseInt(element.elementModel.getProperty("w")) + delta + "px"; - modObject.push({element:element, properties:{width: width}}); + delta = ~~(data.pt1[1] - data.pt0[1]); + var height = parseInt(element.elementModel.getProperty("h")) + delta + "px"; + modObject.push({element:element, properties:{width: width, height: height}}); }); - */ - ElementsMediator.setProperties(this.application.ninja.selectedElements, { "width": deltaW, "height": deltaH }, "Changing", "SelectionTool" ); + ElementsMediator.setProperties(modObject, "Changing", "SelectionTool" ); break; case 5: // Resize East - delta = ~~(data.pt1[0] - data.pt0[0]); - deltaW = this._undoArray.map(function(item) { return item._w + delta + "px"}); + this.application.ninja.selectedElements.forEach(function(element) { + delta = ~~(data.pt1[0] - data.pt0[0]); + deltaW.push(parseInt(element.elementModel.getProperty("w")) + delta + "px"); + // modObject.push({element:element, properties:{width: width, height: height}}); + }); ElementsMediator.setProperty(this.application.ninja.selectedElements, "width", deltaW, "Changing", "SelectionTool" ); break; case 6: // Resize North-East - delta = ~~(data.pt1[0] - data.pt0[0]); - deltaW = this._undoArray.map(function(item) { return item._w + delta + "px"}); - delta = ~~(data.pt1[1] - data.pt0[1]); - deltaH = this._undoArray.map(function(item) { return item._h - delta + "px"}); - deltaT = this._undoArray.map(function(item) { return item._y + delta + "px"}); - ElementsMediator.setProperties(this.application.ninja.selectedElements, - { "top": deltaT, "width": deltaW, "height": deltaH }, "Changing", "SelectionTool" ); + this.application.ninja.selectedElements.forEach(function(element) { + delta = ~~(data.pt1[0] - data.pt0[0]); + var width = parseInt(element.elementModel.getProperty("w")) + delta + "px"; + delta = ~~(data.pt1[1] - data.pt0[1]); + var height = parseInt(element.elementModel.getProperty("h")) - delta + "px"; + var top = parseInt(element.elementModel.getProperty("y")) + delta + "px"; + modObject.push({element:element, properties:{width: width, height: height, top: top}}); + }); + ElementsMediator.setProperties(modObject, "Changing", "SelectionTool" ); break; case 7: // Resize North - delta = ~~(data.pt1[1] - data.pt0[1]); - deltaH = this._undoArray.map(function(item) { return item._h - delta + "px"}); - deltaT = this._undoArray.map(function(item) { return item._y + delta + "px"}); - ElementsMediator.setProperties(this.application.ninja.selectedElements, - { "top": deltaT, "height": deltaH }, "Changing", "SelectionTool" ); + this.application.ninja.selectedElements.forEach(function(element) { + delta = ~~(data.pt1[1] - data.pt0[1]); + var height = parseInt(element.elementModel.getProperty("h")) - delta + "px"; + var top = parseInt(element.elementModel.getProperty("y")) + delta + "px"; + modObject.push({element:element, properties:{height: height, top: top}}); + }); + ElementsMediator.setProperties(modObject, "Changing", "SelectionTool" ); break; default: break; -- cgit v1.2.3