diff options
author | Valerio Virgillito | 2012-06-29 14:57:00 -0700 |
---|---|---|
committer | Valerio Virgillito | 2012-06-29 14:57:00 -0700 |
commit | ec69c8761f798eaf39c4a154997f8bc54b7e47f4 (patch) | |
tree | 4f4136503c87a72f7af67a54dad69c14469ee01e /js/tools | |
parent | ecd9e3b3b09695e3e7115c04e75add5a20c5c6fe (diff) | |
parent | 81d75ac08ff24dc3078d79a9133e54f592c23026 (diff) | |
download | ninja-ec69c8761f798eaf39c4a154997f8bc54b7e47f4.tar.gz |
Merge pull request #362 from mqg734/ColorGradientFix
Fixed not being able to draw linear and radial gradients and two other tools bugs.
Diffstat (limited to 'js/tools')
-rwxr-xr-x | js/tools/FillTool.js | 5 | ||||
-rwxr-xr-x | js/tools/LineTool.js | 21 | ||||
-rwxr-xr-x | js/tools/OvalTool.js | 18 | ||||
-rwxr-xr-x | js/tools/RectTool.js | 20 | ||||
-rwxr-xr-x | js/tools/ShapeTool.js | 18 |
5 files changed, 46 insertions, 36 deletions
diff --git a/js/tools/FillTool.js b/js/tools/FillTool.js index e08ec1da..72e03379 100755 --- a/js/tools/FillTool.js +++ b/js/tools/FillTool.js | |||
@@ -12,7 +12,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot | |||
12 | 12 | ||
13 | var Montage = require("montage/core/core").Montage, | 13 | var Montage = require("montage/core/core").Montage, |
14 | ModifierToolBase = require("js/tools/modifier-tool-base").ModifierToolBase, | 14 | ModifierToolBase = require("js/tools/modifier-tool-base").ModifierToolBase, |
15 | ElementsMediator = require("js/mediators/element-mediator").ElementMediator; | 15 | ElementsMediator = require("js/mediators/element-mediator").ElementMediator, |
16 | ShapesController = require("js/controllers/elements/shapes-controller").ShapesController; | ||
16 | 17 | ||
17 | exports.FillTool = Montage.create(ModifierToolBase, { | 18 | exports.FillTool = Montage.create(ModifierToolBase, { |
18 | _canSnap: { value: false }, | 19 | _canSnap: { value: false }, |
@@ -28,7 +29,7 @@ exports.FillTool = Montage.create(ModifierToolBase, { | |||
28 | if (obj) | 29 | if (obj) |
29 | { | 30 | { |
30 | var name = obj.nodeName; | 31 | var name = obj.nodeName; |
31 | if ((name !== 'CANVAS') && (name !== 'DIV')) | 32 | if ( ((name !== 'CANVAS') && (name !== 'DIV')) || (ShapesController.isElementAShape(obj) && !obj.elementModel.shapeModel.GLGeomObj.canFill)) |
32 | { | 33 | { |
33 | cursor = "url('images/cursors/nofill.png') 14 14, default"; | 34 | cursor = "url('images/cursors/nofill.png') 14 14, default"; |
34 | canColor = false; | 35 | canColor = false; |
diff --git a/js/tools/LineTool.js b/js/tools/LineTool.js index fde09959..413c0302 100755 --- a/js/tools/LineTool.js +++ b/js/tools/LineTool.js | |||
@@ -44,10 +44,16 @@ exports.LineTool = Montage.create(ShapeTool, { | |||
44 | } | 44 | } |
45 | 45 | ||
46 | this._strokeSize = ShapesController.GetValueInPixels(this.options.strokeSize.value, this.options.strokeSize.units, null); | 46 | this._strokeSize = ShapesController.GetValueInPixels(this.options.strokeSize.value, this.options.strokeSize.units, null); |
47 | if (this.options.stroke.color) | 47 | if (this.options.stroke.color) { |
48 | this._strokeColor = this.options.stroke.color.css; | 48 | if( (this.options.stroke.colorMode === "gradient") || (this.options.stroke.colorMode === "nocolor") ) { |
49 | else | 49 | this._strokeColor = [0,0,0,1]; |
50 | this._strokeColor = [0,0,0,1]; | 50 | } else { |
51 | this._strokeColor = this.options.stroke.color.css; | ||
52 | } | ||
53 | } else { | ||
54 | this._strokeColor = [0,0,0,1]; | ||
55 | } | ||
56 | |||
51 | this.startDraw(event); | 57 | this.startDraw(event); |
52 | } | 58 | } |
53 | }, | 59 | }, |
@@ -229,10 +235,11 @@ exports.LineTool = Montage.create(ShapeTool, { | |||
229 | var strokeColor = this.options.stroke.webGlColor; | 235 | var strokeColor = this.options.stroke.webGlColor; |
230 | // for default stroke and fill/no materials | 236 | // for default stroke and fill/no materials |
231 | var strokeMaterial = null; | 237 | var strokeMaterial = null; |
238 | var strokeM = null; | ||
232 | 239 | ||
233 | if(this.options.use3D) | 240 | if(this.options.use3D) |
234 | { | 241 | { |
235 | var strokeM = this.options.strokeMaterial; | 242 | strokeM = this.options.strokeMaterial; |
236 | if(strokeM) | 243 | if(strokeM) |
237 | { | 244 | { |
238 | strokeMaterial = Object.create(MaterialsModel.getMaterial(strokeM)); | 245 | strokeMaterial = Object.create(MaterialsModel.getMaterial(strokeM)); |
@@ -271,7 +278,9 @@ exports.LineTool = Montage.create(ShapeTool, { | |||
271 | } | 278 | } |
272 | 279 | ||
273 | // TODO - This needs to be moved into geom obj's init routine instead of here | 280 | // TODO - This needs to be moved into geom obj's init routine instead of here |
274 | this.setColor(this.options.stroke, null, canvas, "lineTool"); | 281 | if(!strokeM) { |
282 | this.setColor(canvas, this.options.stroke, false, "lineTool"); | ||
283 | } | ||
275 | 284 | ||
276 | if(canvas.elementModel.isShape) | 285 | if(canvas.elementModel.isShape) |
277 | { | 286 | { |
diff --git a/js/tools/OvalTool.js b/js/tools/OvalTool.js index 33bf763d..e798d1a7 100755 --- a/js/tools/OvalTool.js +++ b/js/tools/OvalTool.js | |||
@@ -39,23 +39,24 @@ exports.OvalTool = Montage.create(ShapeTool, { | |||
39 | 39 | ||
40 | var innerRadius = this.options.innerRadius.value / 100; | 40 | var innerRadius = this.options.innerRadius.value / 100; |
41 | 41 | ||
42 | var strokeColor = this.options.stroke.webGlColor; | 42 | var strokeColor = this.options.stroke.webGlColor || [0,0,0,1]; |
43 | var fillColor = this.options.fill.webGlColor; | 43 | var fillColor = this.options.fill.webGlColor || [1,1,1,1]; |
44 | |||
45 | // for default stroke and fill/no materials | 44 | // for default stroke and fill/no materials |
46 | var strokeMaterial = null; | 45 | var strokeMaterial = null; |
47 | var fillMaterial = null; | 46 | var fillMaterial = null; |
47 | var fillM = null; | ||
48 | var strokeM = null; | ||
48 | 49 | ||
49 | if(this.options.use3D) | 50 | if(this.options.use3D) |
50 | { | 51 | { |
51 | var strokeM = this.options.strokeMaterial; | 52 | strokeM = this.options.strokeMaterial; |
52 | if(strokeM) | 53 | if(strokeM) |
53 | { | 54 | { |
54 | strokeMaterial = Object.create(MaterialsModel.getMaterial(strokeM)); | 55 | strokeMaterial = Object.create(MaterialsModel.getMaterial(strokeM)); |
55 | } | 56 | } |
56 | strokeColor = ShapesController.getMaterialColor(strokeM) || strokeColor; | 57 | strokeColor = ShapesController.getMaterialColor(strokeM) || strokeColor; |
57 | 58 | ||
58 | var fillM = this.options.fillMaterial; | 59 | fillM = this.options.fillMaterial; |
59 | if(fillM) | 60 | if(fillM) |
60 | { | 61 | { |
61 | fillMaterial = Object.create(MaterialsModel.getMaterial(fillM)); | 62 | fillMaterial = Object.create(MaterialsModel.getMaterial(fillM)); |
@@ -95,7 +96,12 @@ exports.OvalTool = Montage.create(ShapeTool, { | |||
95 | } | 96 | } |
96 | 97 | ||
97 | // TODO - This needs to be moved into geom obj's init routine instead of here | 98 | // TODO - This needs to be moved into geom obj's init routine instead of here |
98 | this.setColor(this.options.stroke, this.options.fill, canvas, "ovalTool"); | 99 | if(!fillM) { |
100 | this.setColor(canvas, this.options.fill, true, "ovalTool"); | ||
101 | } | ||
102 | if(!strokeM) { | ||
103 | this.setColor(canvas, this.options.stroke, false, "ovalTool"); | ||
104 | } | ||
99 | 105 | ||
100 | if(canvas.elementModel.isShape) | 106 | if(canvas.elementModel.isShape) |
101 | { | 107 | { |
diff --git a/js/tools/RectTool.js b/js/tools/RectTool.js index df049395..6f0e65c7 100755 --- a/js/tools/RectTool.js +++ b/js/tools/RectTool.js | |||
@@ -59,22 +59,24 @@ exports.RectTool = Montage.create(ShapeTool, { | |||
59 | var blRadius = ShapesController.GetValueInPixels(this.options.BLRadiusControl.value, this.options.BLRadiusControl.units, h); | 59 | var blRadius = ShapesController.GetValueInPixels(this.options.BLRadiusControl.value, this.options.BLRadiusControl.units, h); |
60 | var brRadius = ShapesController.GetValueInPixels(this.options.BRRadiusControl.value, this.options.BRRadiusControl.units, h); | 60 | var brRadius = ShapesController.GetValueInPixels(this.options.BRRadiusControl.value, this.options.BRRadiusControl.units, h); |
61 | 61 | ||
62 | var strokeColor = this.options.stroke.webGlColor; | 62 | var strokeColor = this.options.stroke.webGlColor || [0,0,0,1]; |
63 | var fillColor = this.options.fill.webGlColor; | 63 | var fillColor = this.options.fill.webGlColor || [1,1,1,1]; |
64 | // for default stroke and fill/no materials | 64 | // for default stroke and fill/no materials |
65 | var strokeMaterial = null; | 65 | var strokeMaterial = null; |
66 | var fillMaterial = null; | 66 | var fillMaterial = null; |
67 | var fillM = null; | ||
68 | var strokeM = null; | ||
67 | 69 | ||
68 | if(this.options.use3D) | 70 | if(this.options.use3D) |
69 | { | 71 | { |
70 | var strokeM = this.options.strokeMaterial; | 72 | strokeM = this.options.strokeMaterial; |
71 | if(strokeM) | 73 | if(strokeM) |
72 | { | 74 | { |
73 | strokeMaterial = Object.create(MaterialsModel.getMaterial(strokeM)); | 75 | strokeMaterial = Object.create(MaterialsModel.getMaterial(strokeM)); |
74 | } | 76 | } |
75 | strokeColor = ShapesController.getMaterialColor(strokeM) || strokeColor; | 77 | strokeColor = ShapesController.getMaterialColor(strokeM) || strokeColor; |
76 | 78 | ||
77 | var fillM = this.options.fillMaterial; | 79 | fillM = this.options.fillMaterial; |
78 | if(fillM) | 80 | if(fillM) |
79 | { | 81 | { |
80 | fillMaterial = Object.create(MaterialsModel.getMaterial(fillM)); | 82 | fillMaterial = Object.create(MaterialsModel.getMaterial(fillM)); |
@@ -118,14 +120,16 @@ exports.RectTool = Montage.create(ShapeTool, { | |||
118 | } | 120 | } |
119 | 121 | ||
120 | // TODO - This needs to be moved into geom obj's init routine instead of here | 122 | // TODO - This needs to be moved into geom obj's init routine instead of here |
121 | this.setColor(this.options.stroke, this.options.fill, canvas, "rectTool"); | 123 | if(!fillM) { |
122 | 124 | this.setColor(canvas, this.options.fill, true, "rectTool"); | |
125 | } | ||
126 | if(!strokeM) { | ||
127 | this.setColor(canvas, this.options.stroke, false, "rectTool"); | ||
128 | } | ||
123 | if(canvas.elementModel.isShape) | 129 | if(canvas.elementModel.isShape) |
124 | { | 130 | { |
125 | this.application.ninja.selectionController.selectElement(canvas); | 131 | this.application.ninja.selectionController.selectElement(canvas); |
126 | } | 132 | } |
127 | |||
128 | |||
129 | } | 133 | } |
130 | } | 134 | } |
131 | }); \ No newline at end of file | 135 | }); \ No newline at end of file |
diff --git a/js/tools/ShapeTool.js b/js/tools/ShapeTool.js index 6ff61546..3cd75be2 100755 --- a/js/tools/ShapeTool.js +++ b/js/tools/ShapeTool.js | |||
@@ -211,26 +211,16 @@ exports.ShapeTool = Montage.create(DrawingTool, { | |||
211 | } | 211 | } |
212 | }, | 212 | }, |
213 | 213 | ||
214 | // We can draw on an existing canvas unless it has only a single shape object | ||
215 | setColor: { | 214 | setColor: { |
216 | value: function(stroke, fill, canvas, toolId) | 215 | value: function(canvas, color, isFill, toolId) |
217 | { | 216 | { |
218 | if(stroke && stroke.color) | 217 | if(color && color.color) |
219 | { | 218 | { |
220 | this.application.ninja.elementMediator.setColor([canvas], {mode:stroke.colorMode, color:stroke.color}, false, "Change", toolId); | 219 | this.application.ninja.elementMediator.setColor([canvas], {mode:color.colorMode, color:color.color}, isFill, "Change", toolId); |
221 | } | 220 | } |
222 | else | 221 | else |
223 | { | 222 | { |
224 | this.application.ninja.elementMediator.setColor([canvas], {mode:"nocolor", color:null}, false, "Change", toolId); | 223 | this.application.ninja.elementMediator.setColor([canvas], {mode:"nocolor", color:null}, isFill, "Change", toolId); |
225 | } | ||
226 | |||
227 | if(fill && fill.color) | ||
228 | { | ||
229 | this.application.ninja.elementMediator.setColor([canvas], {mode:fill.colorMode, color:fill.color}, true, "Change", toolId); | ||
230 | } | ||
231 | else | ||
232 | { | ||