diff options
author | Pushkar Joshi | 2012-04-24 08:28:39 -0700 |
---|---|---|
committer | Pushkar Joshi | 2012-04-24 08:28:39 -0700 |
commit | f57727d36709bbda03b45788dc12faf31a591b40 (patch) | |
tree | 16e5b0341476517c7bb1db9603d2b6cbc97dc5ee | |
parent | 5da51344c4abf53b4a77bbd4eefbea5ec67f1643 (diff) | |
download | ninja-f57727d36709bbda03b45788dc12faf31a591b40.tar.gz |
re-compute and store the center of the subpath in local coordinates upon file open
-rwxr-xr-x | js/lib/geom/sub-path.js | 8 | ||||
-rwxr-xr-x | js/tools/PenTool.js | 3 |
2 files changed, 10 insertions, 1 deletions
diff --git a/js/lib/geom/sub-path.js b/js/lib/geom/sub-path.js index 43420bc9..56c94df3 100755 --- a/js/lib/geom/sub-path.js +++ b/js/lib/geom/sub-path.js | |||
@@ -1106,6 +1106,14 @@ GLSubpath.prototype.importJSON = function(jo) { | |||
1106 | this._fillColor = jo.fillColor; | 1106 | this._fillColor = jo.fillColor; |
1107 | 1107 | ||
1108 | this._dirty = true; | 1108 | this._dirty = true; |
1109 | this.createSamples(false); | ||
1110 | this.offsetPerBBoxMin(); | ||
1111 | |||
1112 | //compute and store the center of the bbox in local space | ||
1113 | var bboxMin = this.getBBoxMin(); | ||
1114 | var bboxMax = this.getBBoxMax(); | ||
1115 | var bboxMid = [0.5*(bboxMin[0]+bboxMax[0]),0.5*(bboxMin[1]+bboxMax[1]),0.5*(bboxMin[2]+bboxMax[2])]; | ||
1116 | this.setCanvasCenterLocalCoord(bboxMid); | ||
1109 | }; | 1117 | }; |
1110 | 1118 | ||
1111 | GLSubpath.prototype.import = function( importStr ) { | 1119 | GLSubpath.prototype.import = function( importStr ) { |
diff --git a/js/tools/PenTool.js b/js/tools/PenTool.js index 4ff77371..8ecc9f79 100755 --- a/js/tools/PenTool.js +++ b/js/tools/PenTool.js | |||
@@ -786,7 +786,8 @@ exports.PenTool = Montage.create(ShapeTool, { | |||
786 | glmat4.multiply( newMat, tMat, newMat); | 786 | glmat4.multiply( newMat, tMat, newMat); |
787 | this._selectedSubpathPlaneMat = newMat; | 787 | this._selectedSubpathPlaneMat = newMat; |
788 | ViewUtils.setMatrixForElement(this._selectedSubpathCanvas, newMat, true); | 788 | ViewUtils.setMatrixForElement(this._selectedSubpathCanvas, newMat, true); |
789 | 789 | ||
790 | //now set the center of the canvas as the center of the bounding box expressed in stage world coordinates | ||
790 | var localToStageWorldMat = ViewUtils.getLocalToStageWorldMatrix(this._selectedSubpathCanvas, false, false); | 791 | var localToStageWorldMat = ViewUtils.getLocalToStageWorldMatrix(this._selectedSubpathCanvas, false, false); |
791 | this._selectedSubpathCanvasCenter = MathUtils.transformAndDivideHomogeneousPoint(bboxMid, localToStageWorldMat); | 792 | this._selectedSubpathCanvasCenter = MathUtils.transformAndDivideHomogeneousPoint(bboxMid, localToStageWorldMat); |
792 | this._selectedSubpathCanvasCenter[0]+= xAdjustment; | 793 | this._selectedSubpathCanvasCenter[0]+= xAdjustment; |