aboutsummaryrefslogtreecommitdiff
path: root/js/tools/BrushTool.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/tools/BrushTool.js')
-rw-r--r--js/tools/BrushTool.js41
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: {