aboutsummaryrefslogtreecommitdiff
path: root/js/tools/PenTool.js
diff options
context:
space:
mode:
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