aboutsummaryrefslogtreecommitdiff
path: root/js/tools/PenTool.js
diff options
context:
space:
mode:
authorJonathan Duran2012-03-06 11:38:39 -0800
committerJonathan Duran2012-03-06 11:38:39 -0800
commit342fb451bd251358068a0dcb10e9dc218b79a176 (patch)
treeaa0195d581c3934fb6dc09981506b3c070002806 /js/tools/PenTool.js
parent2815adfd7c19b3dff89dc3e1bda9af8d30dca8d6 (diff)
downloadninja-342fb451bd251358068a0dcb10e9dc218b79a176.tar.gz
Squashed commit of the following:
commit 1cd89d4d06e3a8f2c221628b19cf26a2c69f5d3f Author: Jose Antonio Marquez <kgq387@motorola.com> Date: Tue Mar 6 11:24:25 2012 -0800 Fixing WebGL not available bug commit 84332ab81c1b445195f1d9be8bbeae0725c8e758 Author: Valerio Virgillito <valerio@motorola.com> Date: Tue Mar 6 10:58:25 2012 -0800 Squashed commit of preload-fix into Master - Requiring all the previously pre-loaded files - RDGE, Codemirror and gl-matrix are not included via a script tag. Signed-off-by: Valerio Virgillito <valerio@motorola.com> commit 13f52cf0c74f53a919fa864f86669e8155f82961 Merge: dced508 abc04f3 Author: Valerio Virgillito <valerio@motorola.com> Date: Fri Mar 2 15:46:11 2012 -0800 Merge pull request #93 from imix23ways/Timeline Timeline: Critical bug fixes commit dced508bb19a7bcd467ff1b86b5df5bbec4be794 Merge: 0aeb400 cc772ef Author: Valerio Virgillito <valerio@motorola.com> Date: Fri Mar 2 15:45:35 2012 -0800 Merge pull request #92 from mqg734/WebGLFixes Selection Tool Fixes for elements flying off into space when they overlap commit 0aeb400070762cf01d83cf9f9ee25a5595098b7f Merge: ff0a956 aabb48a Author: Valerio Virgillito <valerio@motorola.com> Date: Fri Mar 2 14:05:21 2012 -0800 Merge pull request #94 from ericguzman/PresetsPanel Presets Panel - Fix single-click activation, and transition cut-off bug. commit cc772ef3333ed419d269a2bda7aea5b0150a7bd9 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Fri Mar 2 11:34:58 2012 -0800 Fixing flying off into space bug for translate tool too. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit abc04f3d50311ed1c21067344bc7e448686f8c5c Author: Jonathan Duran <jduran@motorola.com> Date: Fri Mar 2 11:26:25 2012 -0800 Timeline Fix timing function Signed-off-by: Jonathan Duran <jduran@motorola.com> commit aabb48a1c8d34bc968f4c6b0ffee4e31c1d5d286 Author: Eric Guzman <ericg@motorola.com> Date: Fri Mar 2 11:22:44 2012 -0800 Presets Panel - Fix single-click activation, and transition cut-off bug. Use double-click as the activation event for transition presets. Also fixed the bug when applying a style preset before the transition preset, which disabled transitions after the first one. commit f3207f39ea9d8c1c34246217a23d3a689671903d Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Fri Mar 2 11:21:29 2012 -0800 Don't draw transform handles if the stage is the target element. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 5425be91e7125c22955b4459a62412ff574e49a8 Author: Jonathan Duran <jduran@motorola.com> Date: Fri Mar 2 11:11:48 2012 -0800 Timeline: Fix for animation iteration count Add default webkit css properties to allow animations with integer iteration counts. Signed-off-by: Jonathan Duran <jduran@motorola.com> commit 1760bac1da9218315ad1bacdcf3a157495a049e8 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Fri Mar 2 10:48:41 2012 -0800 Fix for jumping issue when moving items that have any 3d on them. We can't translate 3d moves into 2d space due to perspective, so we must update the matrix3d values instead of the top-left values if items have 3d. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 2c04935f0ccb1cb7c98371fc10b43155f2d956c4 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Mar 1 22:20:06 2012 -0800 Fix for elements flying off into space when moving elements that overlap. This was happening because our hit record's element and the browser's element from point did not match. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 50058746779f714ed9b0287f49e56c9f0d35593e Merge: 500426d ff0a956 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Mar 1 21:49:44 2012 -0800 Merge branch 'refs/heads/ninja-internal' into WebGLFixes commit 500426dea0ca95a6b45be8ea8d132cfdb4d2c940 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Mar 1 10:11:39 2012 -0800 Fixed logic error when resizing with the top-left transform handles. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit 7980d9bde2b43aa5a494ddf6f1db5c4959a57b91 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Thu Mar 1 10:04:15 2012 -0800 Re-fixing IKNinja-940 - Can't select objects when in side/top view. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> commit f04cc0146d8f7573628678613a99c270116768e4 Author: Nivesh Rajbhandari <mqg734@motorola.com> Date: Wed Feb 29 16:45:40 2012 -0800 Last-used material (instead of FlatMaterial) is applied to shape when turning on use WebGL checkbox in the PI. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com> Signed-off-by: Jonathan Duran <jduran@motorola.com>
Diffstat (limited to 'js/tools/PenTool.js')
-rwxr-xr-xjs/tools/PenTool.js25
1 files changed, 14 insertions, 11 deletions
diff --git a/js/tools/PenTool.js b/js/tools/PenTool.js
index ddc8bc04..71a91870 100755
--- a/js/tools/PenTool.js
+++ b/js/tools/PenTool.js
@@ -15,6 +15,9 @@ var TagTool = require("js/tools/TagTool").TagTool;
15var ElementController = require("js/controllers/elements/element-controller").ElementController; 15var ElementController = require("js/controllers/elements/element-controller").ElementController;
16var snapManager = require("js/helper-classes/3D/snap-manager").SnapManager; 16var snapManager = require("js/helper-classes/3D/snap-manager").SnapManager;
17 17
18var AnchorPoint = require("js/lib/geom/anchor-point").AnchorPoint;
19var SubPath = require("js/lib/geom/sub-path").SubPath;
20
18//todo remove this global var 21//todo remove this global var
19var g_DoPenToolMouseMove = true; 22var g_DoPenToolMouseMove = true;
20 23
@@ -146,7 +149,7 @@ exports.PenTool = Montage.create(ShapeTool, {
146 if (mouseDownPos) { 149 if (mouseDownPos) {
147 //if we had closed the selected subpath previously, or if we have not yet started anything, create a subpath 150 //if we had closed the selected subpath previously, or if we have not yet started anything, create a subpath
148 if (this._selectedSubpath === null) { 151 if (this._selectedSubpath === null) {
149 this._selectedSubpath = new GLSubpath(); 152 this._selectedSubpath = new SubPath();
150 this._isNewPath = true; 153 this._isNewPath = true;
151 if (this._entryEditMode === this.ENTRY_SELECT_PATH){ 154 if (this._entryEditMode === this.ENTRY_SELECT_PATH){
152 //this should not happen, as ENTRY_SELECT_PATH implies there was a selected subpath 155 //this should not happen, as ENTRY_SELECT_PATH implies there was a selected subpath
@@ -212,13 +215,13 @@ exports.PenTool = Montage.create(ShapeTool, {
212 this._penCanvas = null; 215 this._penCanvas = null;
213 this._penPlaneMat = null; 216 this._penPlaneMat = null;
214 this._snapTarget = null; 217 this._snapTarget = null;
215 this._selectedSubpath = new GLSubpath(); 218 this._selectedSubpath = new SubPath();
216 this._isNewPath = true; 219 this._isNewPath = true;
217 } 220 }
218 221
219 //add an anchor point to end of the subpath, and make it the selected anchor point 222 //add an anchor point to end of the subpath, and make it the selected anchor point
220 if (!this._selectedSubpath.getIsClosed() || this._makeMultipleSubpaths) { 223 if (!this._selectedSubpath.getIsClosed() || this._makeMultipleSubpaths) {
221 this._selectedSubpath.addAnchor(new GLAnchorPoint()); 224 this._selectedSubpath.addAnchor(new AnchorPoint());
222 var newAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex()); 225 var newAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex());
223 newAnchor.setPos(mouseDownPos[0], mouseDownPos[1], mouseDownPos[2]); 226 newAnchor.setPos(mouseDownPos[0], mouseDownPos[1], mouseDownPos[2]);
224 newAnchor.setPrevPos(mouseDownPos[0], mouseDownPos[1], mouseDownPos[2]); 227 newAnchor.setPrevPos(mouseDownPos[0], mouseDownPos[1], mouseDownPos[2]);
@@ -231,7 +234,7 @@ exports.PenTool = Montage.create(ShapeTool, {
231 if (this._isPickedEndPointInSelectPathMode){ 234 if (this._isPickedEndPointInSelectPathMode){
232 //TODO clean up this code...very similar to the code block above 235 //TODO clean up this code...very similar to the code block above
233 if (!this._selectedSubpath.getIsClosed()) { 236 if (!this._selectedSubpath.getIsClosed()) {
234 this._selectedSubpath.addAnchor(new GLAnchorPoint()); 237 this._selectedSubpath.addAnchor(new AnchorPoint());
235 var newAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex()); 238 var newAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex());
236 newAnchor.setPos(mouseDownPos[0], mouseDownPos[1], mouseDownPos[2]); 239 newAnchor.setPos(mouseDownPos[0], mouseDownPos[1], mouseDownPos[2]);
237 newAnchor.setPrevPos(mouseDownPos[0], mouseDownPos[1], mouseDownPos[2]); 240 newAnchor.setPrevPos(mouseDownPos[0], mouseDownPos[1], mouseDownPos[2]);
@@ -389,7 +392,7 @@ exports.PenTool = Montage.create(ShapeTool, {
389 var bboxMax = this._selectedSubpath.getBBoxMax(); 392 var bboxMax = this._selectedSubpath.getBBoxMax();
390 var bboxWidth = bboxMax[0] - bboxMin[0]; 393 var bboxWidth = bboxMax[0] - bboxMin[0];
391 var bboxHeight = bboxMax[1] - bboxMin[1]; 394 var bboxHeight = bboxMax[1] - bboxMin[1];
392 var bboxMid = Vector.create([0.5 * (bboxMax[0] + bboxMin[0]), 0.5 * (bboxMax[1] + bboxMin[1]), 0.5 * (bboxMax[2] + bboxMin[2])]); 395 var bboxMid = [0.5 * (bboxMax[0] + bboxMin[0]), 0.5 * (bboxMax[1] + bboxMin[1]), 0.5 * (bboxMax[2] + bboxMin[2])];
393 396
394 this._selectedSubpath.setCanvasX(bboxMid[0]); 397 this._selectedSubpath.setCanvasX(bboxMid[0]);
395 this._selectedSubpath.setCanvasY(bboxMid[1]); 398 this._selectedSubpath.setCanvasY(bboxMid[1]);
@@ -638,7 +641,7 @@ exports.PenTool = Montage.create(ShapeTool, {
638 var baseline = VecUtils.vecNormalize(3, baselineOrig); 641 var baseline = VecUtils.vecNormalize(3, baselineOrig);
639 var delta = VecUtils.vecSubtract(3, p2, p3); 642 var delta = VecUtils.vecSubtract(3, p2, p3);
640 //component of the delta along baseline 643 //component of the delta along baseline
641 var deltaB = Vector.create(baseline); 644 var deltaB = baseline;
642 VecUtils.vecScale(3, deltaB, VecUtils.vecDot(3, baseline, delta)); 645 VecUtils.vecScale(3, deltaB, VecUtils.vecDot(3, baseline, delta));
643 //component of the delta orthogonal to baseline 646 //component of the delta orthogonal to baseline
644 var deltaO = VecUtils.vecSubtract(3, delta, deltaB); 647 var deltaO = VecUtils.vecSubtract(3, delta, deltaB);
@@ -655,7 +658,7 @@ exports.PenTool = Montage.create(ShapeTool, {
655 //if there is a selected anchor point 658 //if there is a selected anchor point
656 if (this._selectedSubpath && this._selectedSubpath.getSelectedAnchorIndex() !== -1) { 659 if (this._selectedSubpath && this._selectedSubpath.getSelectedAnchorIndex() !== -1) {
657 var selAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex()); 660 var selAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex());
658 var pos = Vector.create([selAnchor.getPosX(), selAnchor.getPosY(), selAnchor.getPosZ()]); 661 var pos = [selAnchor.getPosX(), selAnchor.getPosY(), selAnchor.getPosZ()];
659 var distToPrev = selAnchor.getPrevDistanceSq(pos[0], pos[1], pos[2]); 662 var distToPrev = selAnchor.getPrevDistanceSq(pos[0], pos[1], pos[2]);
660 var distToNext = selAnchor.getNextDistanceSq(pos[0], pos[1], pos[2]); 663 var distToNext = selAnchor.getNextDistanceSq(pos[0], pos[1], pos[2]);
661 var threshSq = 0; // 4 * this._PICK_POINT_RADIUS * this._PICK_POINT_RADIUS; 664 var threshSq = 0; // 4 * this._PICK_POINT_RADIUS * this._PICK_POINT_RADIUS;
@@ -671,8 +674,8 @@ exports.PenTool = Montage.create(ShapeTool, {
671 nextAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex()+1); 674 nextAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex()+1);
672 else 675 else
673 nextAnchor = this._selectedSubpath.getAnchor(0); 676 nextAnchor = this._selectedSubpath.getAnchor(0);
674 var nextAnchorPrev = Vector.create([nextAnchor.getPrevX(), nextAnchor.getPrevY(), nextAnchor.getPrevZ()]); 677 var nextAnchorPrev = [nextAnchor.getPrevX(), nextAnchor.getPrevY(), nextAnchor.getPrevZ()];
675 var nextAnchorPos = Vector.create([nextAnchor.getPosX(), nextAnchor.getPosY(), nextAnchor.getPosZ()]) 678 var nextAnchorPos = [nextAnchor.getPosX(), nextAnchor.getPosY(), nextAnchor.getPosZ()];
676 var newNext = this.BuildSecondCtrlPoint(pos, nextAnchorPrev, nextAnchorPos); 679 var newNext = this.BuildSecondCtrlPoint(pos, nextAnchorPrev, nextAnchorPos);
677 selAnchor.setNextPos(newNext[0], newNext[1], newNext[2]); 680 selAnchor.setNextPos(newNext[0], newNext[1], newNext[2]);
678 //check if the next is still not over the threshSq..if so, add a constant horizontal amount 681 //check if the next is still not over the threshSq..if so, add a constant horizontal amount
@@ -688,8 +691,8 @@ exports.PenTool = Montage.create(ShapeTool, {
688 prevAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex()-1); 691 prevAnchor = this._selectedSubpath.getAnchor(this._selectedSubpath.getSelectedAnchorIndex()-1);
689 else 692 else
690 prevAnchor = this._selectedSubpath.getAnchor(numAnchors-1); 693 prevAnchor = this._selectedSubpath.getAnchor(numAnchors-1);
691 var prevAnchorNext = Vector.create([prevAnchor.getNextX(), prevAnchor.getNextY(), prevAnchor.getNextZ()]); 694 var prevAnchorNext = [prevAnchor.getNextX(), prevAnchor.getNextY(), prevAnchor.getNextZ()];
692 var prevAnchorPos = Vector.create([prevAnchor.getPosX(), prevAnchor.getPosY(), prevAnchor.getPosZ()]) 695 var prevAnchorPos = [prevAnchor.getPosX(), prevAnchor.getPosY(), prevAnchor.getPosZ()];
693 var newPrev = this.BuildSecondCtrlPoint(pos, prevAnchorNext, prevAnchorPos); 696 var newPrev = this.BuildSecondCtrlPoint(pos, prevAnchorNext, prevAnchorPos);
694 selAnchor.setPrevPos(newPrev[0], newPrev[1], newPrev[2]); 697 selAnchor.setPrevPos(newPrev[0], newPrev[1], newPrev[2]);
695 //check if the prev is still not over the threshSq..if so, add a constant horizontal amount 698 //check if the prev is still not over the threshSq..if so, add a constant horizontal amount