diff options
Diffstat (limited to 'js/tools')
-rw-r--r-- | js/tools/BrushTool.js | 6 | ||||
-rwxr-xr-x | js/tools/LineTool.js | 14 | ||||
-rwxr-xr-x | js/tools/OvalTool.js | 25 | ||||
-rwxr-xr-x | js/tools/PenTool.js | 25 | ||||
-rwxr-xr-x | js/tools/RectTool.js | 24 | ||||
-rwxr-xr-x | js/tools/SelectionTool.js | 282 | ||||
-rwxr-xr-x | js/tools/ShapeTool.js | 4 | ||||
-rwxr-xr-x | js/tools/TranslateObject3DTool.js | 7 | ||||
-rwxr-xr-x | js/tools/drawing-tool-base.js | 18 | ||||
-rwxr-xr-x | js/tools/modifier-tool-base.js | 7 |
10 files changed, 304 insertions, 108 deletions
diff --git a/js/tools/BrushTool.js b/js/tools/BrushTool.js index fec89eb2..752aa2a3 100644 --- a/js/tools/BrushTool.js +++ b/js/tools/BrushTool.js | |||
@@ -13,6 +13,8 @@ var ElementMediator = require("js/mediators/element-mediator").ElementMediator; | |||
13 | var TagTool = require("js/tools/TagTool").TagTool; | 13 | var TagTool = require("js/tools/TagTool").TagTool; |
14 | var snapManager = require("js/helper-classes/3D/snap-manager").SnapManager; | 14 | var snapManager = require("js/helper-classes/3D/snap-manager").SnapManager; |
15 | 15 | ||
16 | var BrushStroke = require("js/lib/geom/brush-stroke").BrushStroke; | ||
17 | |||
16 | exports.BrushTool = Montage.create(ShapeTool, { | 18 | exports.BrushTool = Montage.create(ShapeTool, { |
17 | hasReel: { value: false }, | 19 | hasReel: { value: false }, |
18 | _toolID: { value: "brushTool" }, | 20 | _toolID: { value: "brushTool" }, |
@@ -63,7 +65,7 @@ exports.BrushTool = Montage.create(ShapeTool, { | |||
63 | } | 65 | } |
64 | //start a new brush stroke | 66 | //start a new brush stroke |
65 | if (this._selectedBrushStroke === null){ | 67 | if (this._selectedBrushStroke === null){ |
66 | this._selectedBrushStroke = new GLBrushStroke(); | 68 | this._selectedBrushStroke = new BrushStroke(); |
67 | if (this.application.ninja.colorController.colorToolbar.stroke.webGlColor){ | 69 | if (this.application.ninja.colorController.colorToolbar.stroke.webGlColor){ |
68 | this._selectedBrushStroke.setStrokeColor(this.application.ninja.colorController.colorToolbar.stroke.webGlColor); | 70 | this._selectedBrushStroke.setStrokeColor(this.application.ninja.colorController.colorToolbar.stroke.webGlColor); |
69 | } | 71 | } |
@@ -192,7 +194,7 @@ exports.BrushTool = Montage.create(ShapeTool, { | |||
192 | var bboxMax = this._selectedBrushStroke.getBBoxMax(); | 194 | var bboxMax = this._selectedBrushStroke.getBBoxMax(); |
193 | var bboxWidth = bboxMax[0] - bboxMin[0]; | 195 | var bboxWidth = bboxMax[0] - bboxMin[0]; |
194 | var bboxHeight = bboxMax[1] - bboxMin[1]; | 196 | var bboxHeight = bboxMax[1] - bboxMin[1]; |
195 | var bboxMid = Vector.create([0.5 * (bboxMax[0] + bboxMin[0]), 0.5 * (bboxMax[1] + bboxMin[1]), 0.5 * (bboxMax[2] + bboxMin[2])]); | 197 | var bboxMid = [0.5 * (bboxMax[0] + bboxMin[0]), 0.5 * (bboxMax[1] + bboxMin[1]), 0.5 * (bboxMax[2] + bboxMin[2])]; |
196 | 198 | ||
197 | this._selectedBrushStroke.setCanvasX(bboxMid[0]); | 199 | this._selectedBrushStroke.setCanvasX(bboxMid[0]); |
198 | this._selectedBrushStroke.setCanvasY(bboxMid[1]); | 200 | this._selectedBrushStroke.setCanvasY(bboxMid[1]); |
diff --git a/js/tools/LineTool.js b/js/tools/LineTool.js index 0a7c0534..a61f8f79 100755 --- a/js/tools/LineTool.js +++ b/js/tools/LineTool.js | |||
@@ -13,6 +13,9 @@ var Montage = require("montage/core/core").Montage, | |||
13 | ShapesController = require("js/controllers/elements/shapes-controller").ShapesController, | 13 | ShapesController = require("js/controllers/elements/shapes-controller").ShapesController, |
14 | ShapeModel = require("js/models/shape-model").ShapeModel; | 14 | ShapeModel = require("js/models/shape-model").ShapeModel; |
15 | 15 | ||
16 | var Line = require("js/lib/geom/line").Line; | ||
17 | var MaterialsModel = require("js/models/materials-model").MaterialsModel; | ||
18 | |||
16 | exports.LineTool = Montage.create(ShapeTool, { | 19 | exports.LineTool = Montage.create(ShapeTool, { |
17 | _toolID: { value: "lineTool" }, | 20 | _toolID: { value: "lineTool" }, |
18 | _imageID: { value: "lineToolImg" }, | 21 | _imageID: { value: "lineToolImg" }, |
@@ -206,10 +209,13 @@ exports.LineTool = Montage.create(ShapeTool, { | |||
206 | // for default stroke and fill/no materials | 209 | // for default stroke and fill/no materials |
207 | var strokeMaterial = null; | 210 | var strokeMaterial = null; |
208 | 211 | ||
209 | var strokeM = this.options.strokeMaterial; | 212 | if(this.options.use3D) |
210 | if(strokeM) | ||
211 | { | 213 | { |
212 | strokeMaterial = Object.create(MaterialsLibrary.getMaterial(strokeM)); | 214 | var strokeM = this.options.strokeMaterial; |
215 | if(strokeM) | ||
216 | { | ||
217 | strokeMaterial = Object.create(MaterialsModel.getMaterial(strokeM)); | ||
218 | } | ||
213 | } | 219 | } |
214 | 220 | ||
215 | var world = this.getGLWorld(canvas, this.options.use3D); | 221 | var world = this.getGLWorld(canvas, this.options.use3D); |
@@ -217,7 +223,7 @@ exports.LineTool = Montage.create(ShapeTool, { | |||
217 | var xOffset = ((left - canvas.offsetLeft + w/2) - canvas.width/2); | 223 | var xOffset = ((left - canvas.offsetLeft + w/2) - canvas.width/2); |
218 | var yOffset = (canvas.height/2 - (top - canvas.offsetTop + h/2)); | 224 | var yOffset = (canvas.height/2 - (top - canvas.offsetTop + h/2)); |
219 | 225 | ||
220 | var line = new GLLine(world, xOffset, yOffset, w, h, slope, strokeSize, strokeColor, strokeMaterial, strokeStyle, xAdj, yAdj); | 226 | var line = new Line(world, xOffset, yOffset, w, h, slope, strokeSize, strokeColor, strokeMaterial, strokeStyle, xAdj, yAdj); |
221 | 227 | ||
222 | world.addObject(line); | 228 | world.addObject(line); |
223 | world.render(); | 229 | world.render(); |
diff --git a/js/tools/OvalTool.js b/js/tools/OvalTool.js index 14655312..a10e0bb5 100755 --- a/js/tools/OvalTool.js +++ b/js/tools/OvalTool.js | |||
@@ -8,6 +8,9 @@ var Montage = require("montage/core/core").Montage, | |||
8 | ShapeTool = require("js/tools/ShapeTool").ShapeTool, | 8 | ShapeTool = require("js/tools/ShapeTool").ShapeTool, |
9 | ShapesController = require("js/controllers/elements/shapes-controller").ShapesController; | 9 | ShapesController = require("js/controllers/elements/shapes-controller").ShapesController; |
10 | 10 | ||
11 | var Circle = require("js/lib/geom/circle").Circle; | ||
12 | var MaterialsModel = require("js/models/materials-model").MaterialsModel; | ||
13 | |||
11 | exports.OvalTool = Montage.create(ShapeTool, { | 14 | exports.OvalTool = Montage.create(ShapeTool, { |
12 | 15 | ||
13 | _toolID: { value: "ovalTool" }, | 16 | _toolID: { value: "ovalTool" }, |
@@ -43,25 +46,27 @@ exports.OvalTool = Montage.create(ShapeTool, { | |||
43 | var strokeMaterial = null; | 46 | var strokeMaterial = null; |
44 | var fillMaterial = null; | 47 | var fillMaterial = null; |
45 | 48 | ||
46 | var strokeM = this.options.strokeMaterial; | 49 | if(this.options.use3D) |
47 | if(strokeM) | ||
48 | { | 50 | { |
49 | strokeMaterial = Object.create(MaterialsLibrary.getMaterial(strokeM)); | 51 | var strokeM = this.options.strokeMaterial; |
50 | } | 52 | if(strokeM) |
53 | { | ||
54 | strokeMaterial = Object.create(MaterialsModel.getMaterial(strokeM)); | ||
55 | } | ||
51 | 56 | ||
52 | var fillM = this.options.fillMaterial; | 57 | var fillM = this.options.fillMaterial; |
53 | if(fillM) | 58 | if(fillM) |
54 | { | 59 | { |
55 | fillMaterial = Object.create(MaterialsLibrary.getMaterial(fillM)); | 60 | fillMaterial = Object.create(MaterialsModel.getMaterial(fillM)); |
61 | } | ||
56 | } | 62 | } |
57 | 63 | ||
58 | |||
59 | var world = this.getGLWorld(canvas, this.options.use3D); | 64 | var world = this.getGLWorld(canvas, this.options.use3D); |
60 | 65 | ||
61 | var xOffset = ((left - canvas.offsetLeft + w/2) - canvas.width/2); | 66 | var xOffset = ((left - canvas.offsetLeft + w/2) - canvas.width/2); |
62 | var yOffset = (canvas.height/2 - (top - canvas.offsetTop + h/2)); | 67 | var yOffset = (canvas.height/2 - (top - canvas.offsetTop + h/2)); |
63 | 68 | ||
64 | var oval = new GLCircle(); | 69 | var oval = new Circle(); //GLCircle(); |
65 | oval.init(world, xOffset, yOffset, w, h, strokeSize, strokeColor, fillColor, innerRadius, strokeMaterial, fillMaterial, strokeStyle); | 70 | oval.init(world, xOffset, yOffset, w, h, strokeSize, strokeColor, fillColor, innerRadius, strokeMaterial, fillMaterial, strokeStyle); |
66 | 71 | ||
67 | world.addObject(oval); | 72 | world.addObject(oval); |
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)); |