aboutsummaryrefslogtreecommitdiff
path: root/js/tools/SelectionTool.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/tools/SelectionTool.js')
-rwxr-xr-xjs/tools/SelectionTool.js61
1 files changed, 34 insertions, 27 deletions
diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js
index 74784485..94cc6b83 100755
--- a/js/tools/SelectionTool.js
+++ b/js/tools/SelectionTool.js
@@ -317,16 +317,27 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
317 317
318 this._targets.push({elt:elt, mat:curMat, matInv:curMatInv}); 318 this._targets.push({elt:elt, mat:curMat, matInv:curMatInv});
319 if(addToUndoStack) { 319 if(addToUndoStack) {
320 var prevX,
321 prevY,
322 prevW,
323 prevH,
324 _x,
325 _y,
326 _w,
327 _h,
328 previousMat,
329 previousStyleStr,
330 newStyleStr;
331
320 if(!this._use3DMode) { 332 if(!this._use3DMode) {
321 var previousMat = this._undoArray[i].mat.slice(0); 333 prevX = this._undoArray[i]._x;
322 var prevX = this._undoArray[i]._x; 334 prevY = this._undoArray[i]._y;
323 var prevY = this._undoArray[i]._y; 335 prevW = this._undoArray[i]._w;
324 var prevW = this._undoArray[i]._w; 336 prevH = this._undoArray[i]._h;
325 var prevH = this._undoArray[i]._h; 337 _x = parseInt(ElementsMediator.getProperty(elt, "left"));
326 var _x = parseInt(ElementsMediator.getProperty(elt, "left")) + curMat[12] - previousMat[12]; 338 _y = parseInt(ElementsMediator.getProperty(elt, "top"));
327 var _y = parseInt(ElementsMediator.getProperty(elt, "top")) + curMat[13] - previousMat[13]; 339 _w = parseInt(ElementsMediator.getProperty(elt, "width"));
328 var _w = parseInt(ElementsMediator.getProperty(elt, "width")); 340 _h = parseInt(ElementsMediator.getProperty(elt, "height"));
329 var _h = parseInt(ElementsMediator.getProperty(elt, "height"));
330 341
331 previousLeft.push(prevX + "px"); 342 previousLeft.push(prevX + "px");
332 previousTop.push(prevY + "px"); 343 previousTop.push(prevY + "px");
@@ -336,25 +347,22 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
336 newTop.push(_y + "px"); 347 newTop.push(_y + "px");
337 newWidth.push(_w + "px"); 348 newWidth.push(_w + "px");
338 newHeight.push(_h + "px"); 349 newHeight.push(_h + "px");
339 350 }
340 viewUtils.setMatrixForElement(elt, previousMat); 351 else
341 352 {
342 this._targets[i].mat = previousMat; 353 previousMat = this._undoArray[i].mat.slice(0);
343 this._targets[i].matInv = glmat4.inverse(previousMat, []); 354 prevW = this._undoArray[i]._w;
344 } else { 355 prevH = this._undoArray[i]._h;
345 var previousMat = this._undoArray[i].mat.slice(0); 356 _w = parseInt(ElementsMediator.getProperty(elt, "width"));
346 var prevW = this._undoArray[i]._w; 357 _h = parseInt(ElementsMediator.getProperty(elt, "height"));
347 var prevH = this._undoArray[i]._h;
348 var _w = parseInt(ElementsMediator.getProperty(elt, "width"));
349 var _h = parseInt(ElementsMediator.getProperty(elt, "height"));
350 previousWidth.push(prevW + "px"); 358 previousWidth.push(prevW + "px");
351 previousHeight.push(prevH + "px"); 359 previousHeight.push(prevH + "px");
352 newWidth.push(_w + "px"); 360 newWidth.push(_w + "px");
353 newHeight.push(_h + "px"); 361 newHeight.push(_h + "px");
354 362
355 var previousStyleStr = {dist:this._undoArray[i].dist, 363 previousStyleStr = {dist:this._undoArray[i].dist,
356 mat:MathUtils.scientificToDecimal(previousMat, 5)}; 364 mat:MathUtils.scientificToDecimal(previousMat, 5)};
357 var newStyleStr = {dist:viewUtils.getPerspectiveDistFromElement(elt), 365 newStyleStr = {dist:viewUtils.getPerspectiveDistFromElement(elt),
358 mat:MathUtils.scientificToDecimal(curMat, 5)}; 366 mat:MathUtils.scientificToDecimal(curMat, 5)};
359 previousStyles.push(previousStyleStr); 367 previousStyles.push(previousStyleStr);
360 newStyles.push(newStyleStr); 368 newStyles.push(newStyleStr);
@@ -455,11 +463,8 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
455 } 463 }
456 else 464 else
457 { 465 {
458 curMat = item.mat.slice(0); 466 var _x = parseInt(ElementsMediator.getProperty(elt, "left")) + transMat[12];
459 glmat4.multiply(curMat, qMat, curMat); 467 var _y = parseInt(ElementsMediator.getProperty(elt, "top")) + transMat[13];
460 var previousMat = this._undoArray[i].mat.slice(0);
461 var _x = parseInt(ElementsMediator.getProperty(elt, "left")) + curMat[12] - previousMat[12];
462 var _y = parseInt(ElementsMediator.getProperty(elt, "top")) + curMat[13] - previousMat[13];
463 468
464 newLeft.push(_x + "px"); 469 newLeft.push(_x + "px");
465 newTop.push(_y + "px"); 470 newTop.push(_y + "px");
@@ -572,6 +577,8 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
572 { 577 {
573 // form the translation vector and post translate the matrix by it. 578 // form the translation vector and post translate the matrix by it.
574 delta = vecUtils.vecSubtract( 3, data.pt1, data.pt0 ); 579 delta = vecUtils.vecSubtract( 3, data.pt1, data.pt0 );
580 delta[0] = ~~delta[0];
581 delta[1] = ~~delta[1];
575 delta[2] = 0; 582 delta[2] = 0;
576 var transMat = Matrix.Translation( delta ); 583 var transMat = Matrix.Translation( delta );
577 this._moveElements(transMat); 584 this._moveElements(transMat);