diff options
Diffstat (limited to 'js/tools/PenTool.js')
-rwxr-xr-x | js/tools/PenTool.js | 25 |
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; | |||
15 | var ElementController = require("js/controllers/elements/element-controller").ElementController; | 15 | var ElementController = require("js/controllers/elements/element-controller").ElementController; |
16 | var snapManager = require("js/helper-classes/3D/snap-manager").SnapManager; | 16 | var snapManager = require("js/helper-classes/3D/snap-manager").SnapManager; |
17 | 17 | ||
18 | var AnchorPoint = require("js/lib/geom/anchor-point").AnchorPoint; | ||
19 | var SubPath = require("js/lib/geom/sub-path").SubPath; | ||
20 | |||
18 | //todo remove this global var | 21 | //todo remove this global var |
19 | var g_DoPenToolMouseMove = true; | 22 | var 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 |