diff options
Diffstat (limited to 'js/tools/BrushTool.js')
-rw-r--r-- | js/tools/BrushTool.js | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/js/tools/BrushTool.js b/js/tools/BrushTool.js index 4ce9976a..90010cdf 100644 --- a/js/tools/BrushTool.js +++ b/js/tools/BrushTool.js | |||
@@ -85,7 +85,7 @@ exports.BrushTool = Montage.create(ShapeTool, { | |||
85 | 85 | ||
86 | var strokeHardness = 100; | 86 | var strokeHardness = 100; |
87 | if (this.options.strokeHardness){ | 87 | if (this.options.strokeHardness){ |
88 | strokeHardness = ShapesController.GetValueInPixels(this.options.strokeHardness.value, this.options.strokeHardness.units); | 88 | strokeHardness = this.options.strokeHardness.value; |
89 | } | 89 | } |
90 | this._selectedBrushStroke.setStrokeHardness(strokeHardness); | 90 | this._selectedBrushStroke.setStrokeHardness(strokeHardness); |
91 | 91 | ||
@@ -94,7 +94,10 @@ exports.BrushTool = Montage.create(ShapeTool, { | |||
94 | doSmoothing = this.options.doSmoothing; | 94 | doSmoothing = this.options.doSmoothing; |
95 | } | 95 | } |
96 | this._selectedBrushStroke.setDoSmoothing(doSmoothing); | 96 | this._selectedBrushStroke.setDoSmoothing(doSmoothing); |
97 | 97 | if (doSmoothing){ | |
98 | this._selectedBrushStroke.setSmoothingAmount(this.options.smoothingAmount.value); | ||
99 | } | ||
100 | |||
98 | var useCalligraphic = false; | 101 | var useCalligraphic = false; |
99 | if (this.options.useCalligraphic){ | 102 | if (this.options.useCalligraphic){ |
100 | useCalligraphic = this.options.useCalligraphic; | 103 | useCalligraphic = this.options.useCalligraphic; |
@@ -103,7 +106,7 @@ exports.BrushTool = Montage.create(ShapeTool, { | |||
103 | this._selectedBrushStroke.setStrokeUseCalligraphic(true); | 106 | this._selectedBrushStroke.setStrokeUseCalligraphic(true); |
104 | var strokeAngle = 0; | 107 | var strokeAngle = 0; |
105 | if (this.options.strokeAngle){ | 108 | if (this.options.strokeAngle){ |
106 | strokeAngle= ShapesController.GetValueInPixels(this.options.strokeAngle.value, this.options.strokeAngle.units); | 109 | strokeAngle= this.options.strokeAngle.value; |
107 | } | 110 | } |
108 | this._selectedBrushStroke.setStrokeAngle(Math.PI * -strokeAngle/180); | 111 | this._selectedBrushStroke.setStrokeAngle(Math.PI * -strokeAngle/180); |
109 | } else { | 112 | } else { |
@@ -251,7 +254,7 @@ exports.BrushTool = Montage.create(ShapeTool, { | |||
251 | var top = Math.round(midPt[1] - 0.5 * h); | 254 | var top = Math.round(midPt[1] - 0.5 * h); |
252 | 255 | ||
253 | if (!canvas) { | 256 | if (!canvas) { |
254 | var newCanvas = NJUtils.makeNJElement("canvas", "Brushstroke", "shape", {"data-RDGE-id": NJUtils.generateRandom()}, true); | 257 | var newCanvas = NJUtils.makeNJElement("canvas", "Brushstroke", "shape", {"data-RDGE-id": NJUtils.generateRandom()}, true); |
255 | var elementModel = TagTool.makeElement(w, h, planeMat, midPt, newCanvas); | 258 | var elementModel = TagTool.makeElement(w, h, planeMat, midPt, newCanvas); |
256 | ElementMediator.addElement(newCanvas, elementModel.data, true); | 259 | ElementMediator.addElement(newCanvas, elementModel.data, true); |
257 | 260 | ||
@@ -263,6 +266,7 @@ exports.BrushTool = Montage.create(ShapeTool, { | |||
263 | var brushStroke = this._selectedBrushStroke; | 266 | var brushStroke = this._selectedBrushStroke; |
264 | if (brushStroke){ | 267 | if (brushStroke){ |
265 | brushStroke.setWorld(world); | 268 | brushStroke.setWorld(world); |
269 | brushStroke.setCanvas(newCanvas); | ||
266 | 270 | ||
267 | brushStroke.setPlaneMatrix(planeMat); | 271 | brushStroke.setPlaneMatrix(planeMat); |
268 | var planeMatInv = glmat4.inverse( planeMat, [] ); | 272 | var planeMatInv = glmat4.inverse( planeMat, [] ); |
@@ -273,10 +277,37 @@ exports.BrushTool = Montage.create(ShapeTool, { | |||
273 | world.render(); | 277 | world.render(); |
274 | //TODO this will not work if there are multiple shapes in the same canvas | 278 | //TODO this will not work if there are multiple shapes in the same canvas |
275 | newCanvas.elementModel.shapeModel.GLGeomObj = brushStroke; | 279 | newCanvas.elementModel.shapeModel.GLGeomObj = brushStroke; |
280 | |||
281 | newCanvas.elementModel.shapeModel.shapeCount++; | ||
282 | if(newCanvas.elementModel.shapeModel.shapeCount === 1) | ||
283 | { | ||
284 | newCanvas.elementModel.selection = "BrushStroke"; | ||
285 | newCanvas.elementModel.pi = "BrushStrokePi"; | ||
286 | newCanvas.elementModel.shapeModel.strokeSize = this.options.strokeSize.value + " " + this.options.strokeSize.units; | ||
287 | var strokeColor = this._selectedBrushStroke.getStrokeColor(); | ||
288 | newCanvas.elementModel.shapeModel.stroke = strokeColor; | ||
289 | if(strokeColor) { | ||
290 | newCanvas.elementModel.shapeModel.border = this.application.ninja.colorController.colorToolbar.stroke; | ||
291 | } | ||
292 | newCanvas.elementModel.shapeModel.strokeMaterial = this._selectedBrushStroke.getStrokeMaterial(); | ||
293 | |||
294 | newCanvas.elementModel.shapeModel.GLGeomObj = brushStroke; | ||
295 | newCanvas.elementModel.shapeModel.useWebGl = this.options.use3D; | ||
296 | } | ||
297 | else | ||
298 | { | ||
299 | // TODO - update the shape's info only. shapeModel will likely need an array of shapes. | ||
300 | } | ||
301 | |||
302 | if(newCanvas.elementModel.isShape) | ||
303 | { | ||
304 | this.application.ninja.selectionController.selectElement(canvas); | ||
305 | } | ||
276 | } | 306 | } |
277 | } //if (!canvas) { | 307 | } //if (!canvas) { |
278 | else { | 308 | else { |
279 | 309 | ||
310 | /* | ||
280 | var world = null; | 311 | var world = null; |
281 | if (canvas.elementModel.shapeModel && canvas.elementModel.shapeModel.GLWorld) { | 312 | if (canvas.elementModel.shapeModel && canvas.elementModel.shapeModel.GLWorld) { |
282 | world = canvas.elementModel.shapeModel.GLWorld; | 313 | world = canvas.elementModel.shapeModel.GLWorld; |
@@ -317,6 +348,8 @@ exports.BrushTool = Montage.create(ShapeTool, { | |||
317 | //TODO this will not work if there are multiple shapes in the same canvas | 348 | //TODO this will not work if there are multiple shapes in the same canvas |
318 | canvas.elementModel.shapeModel.GLGeomObj = brushStroke; | 349 | canvas.elementModel.shapeModel.GLGeomObj = brushStroke; |
319 | } | 350 | } |
351 | */ | ||
352 | alert("BrushStroke cannot edit existing canvas"); | ||
320 | } //else of if (!canvas) { | 353 | } //else of if (!canvas) { |
321 | } //value: function (w, h, planeMat, midPt, canvas) { | 354 | } //value: function (w, h, planeMat, midPt, canvas) { |
322 | }, //RenderShape: { | 355 | }, //RenderShape: { |