diff options
Diffstat (limited to 'js/controllers')
-rw-r--r-- | js/controllers/elements/element-controller.js | 13 | ||||
-rw-r--r-- | js/controllers/elements/shapes-controller.js | 102 | ||||
-rw-r--r-- | js/controllers/styles-controller.js | 232 | ||||
-rw-r--r-- | js/controllers/tree-controller.js | 185 |
4 files changed, 494 insertions, 38 deletions
diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js index 65c24b46..65d26bdd 100644 --- a/js/controllers/elements/element-controller.js +++ b/js/controllers/elements/element-controller.js | |||
@@ -144,10 +144,6 @@ var ElementController = exports.ElementController = Montage.create(NJComponent, | |||
144 | this.setProperty(el, "background-color", color.color.css); | 144 | this.setProperty(el, "background-color", color.color.css); |
145 | } | 145 | } |
146 | } | 146 | } |
147 | else | ||
148 | { | ||
149 | this.application.ninja.stylesController.setElementStyle(el, "background-color", color.color.css); | ||
150 | } | ||
151 | el.elementModel.fill = color; | 147 | el.elementModel.fill = color; |
152 | } | 148 | } |
153 | else | 149 | else |
@@ -169,10 +165,6 @@ var ElementController = exports.ElementController = Montage.create(NJComponent, | |||
169 | this.setProperty(el, "border-color", color.color.css); | 165 | this.setProperty(el, "border-color", color.color.css); |
170 | } | 166 | } |
171 | } | 167 | } |
172 | else | ||
173 | { | ||
174 | this.application.ninja.stylesController.setElementStyle(el, "border-color", color.color.css); | ||
175 | } | ||
176 | el.elementModel.stroke = color; | 168 | el.elementModel.stroke = color; |
177 | } | 169 | } |
178 | } | 170 | } |
@@ -187,8 +179,9 @@ var ElementController = exports.ElementController = Montage.create(NJComponent, | |||
187 | 179 | ||
188 | setStroke: { | 180 | setStroke: { |
189 | value: function(el, stroke) { | 181 | value: function(el, stroke) { |
190 | var border = stroke.borderWidth + stroke.borderUnits + " " + stroke.borderStyle + " " + stroke.color.color.css; | 182 | this.application.ninja.stylesController.setElementStyle(el, "border-width", stroke.borderWidth + stroke.borderUnits); |
191 | this.application.ninja.stylesController.setElementStyle(el, "border", border); | 183 | this.application.ninja.stylesController.setElementStyle(el, "border-style", stroke.borderStyle); |
184 | this.setColor(el, stroke.color, false); | ||
192 | } | 185 | } |
193 | }, | 186 | }, |
194 | 187 | ||
diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js index 1717db94..39300eb8 100644 --- a/js/controllers/elements/shapes-controller.js +++ b/js/controllers/elements/shapes-controller.js | |||
@@ -5,7 +5,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot | |||
5 | </copyright> */ | 5 | </copyright> */ |
6 | 6 | ||
7 | var Montage = require("montage/core/core").Montage, | 7 | var Montage = require("montage/core/core").Montage, |
8 | CanvasController = require("js/controllers/elements/canvas-controller").CanvasController; | 8 | CanvasController = require("js/controllers/elements/canvas-controller").CanvasController, |
9 | njModule = require("js/lib/NJUtils"); | ||
9 | 10 | ||
10 | exports.ShapesController = Montage.create(CanvasController, { | 11 | exports.ShapesController = Montage.create(CanvasController, { |
11 | 12 | ||
@@ -36,6 +37,35 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
36 | el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el); | 37 | el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el); |
37 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 38 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
38 | break; | 39 | break; |
40 | case "useWebGl": | ||
41 | var canvas = njModule.NJUtils.makeNJElement("canvas", "Canvas", "shape", el.className, true); | ||
42 | canvas.width = el.width; | ||
43 | canvas.height = el.height; | ||
44 | this.application.ninja.elementMediator.replaceElement(el, canvas); | ||
45 | NJevent("elementDeleted", el); | ||
46 | this.application.ninja.selectionController.selectElement(canvas); | ||
47 | el = canvas; | ||
48 | this.toggleWebGlMode(el, value); | ||
49 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
50 | break; | ||
51 | case "strokeMaterial": | ||
52 | var sm = Object.create(MaterialsLibrary.getMaterial(value)); | ||
53 | if(sm) | ||
54 | { | ||
55 | el.elementModel.shapeModel.GLGeomObj.setStrokeMaterial(sm); | ||
56 | el.elementModel.shapeModel.strokeMaterial = sm; | ||
57 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
58 | } | ||
59 | break; | ||
60 | case "fillMaterial": | ||
61 | var fm = Object.create(MaterialsLibrary.getMaterial(value)); | ||
62 | if(fm) | ||
63 | { | ||
64 | el.elementModel.shapeModel.GLGeomObj.setFillMaterial(fm); | ||
65 | el.elementModel.shapeModel.fillMaterial = fm; | ||
66 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
67 | } | ||
68 | break; | ||
39 | default: | 69 | default: |
40 | CanvasController.setProperty(el, p, value); | 70 | CanvasController.setProperty(el, p, value); |
41 | } | 71 | } |
@@ -48,9 +78,25 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
48 | switch(p) { | 78 | switch(p) { |
49 | case "strokeSize": | 79 | case "strokeSize": |
50 | case "innerRadius": | 80 | case "innerRadius": |
81 | case "tlRadius": | ||
82 | case "trRadius": | ||
83 | case "blRadius": | ||
84 | case "brRadius": | ||
51 | case "border": | 85 | case "border": |
52 | case "background": | 86 | case "background": |
87 | case "useWebGl": | ||
53 | return this.getShapeProperty(el, p); | 88 | return this.getShapeProperty(el, p); |
89 | case "strokeMaterial": | ||
90 | case "fillMaterial": | ||
91 | var m = this.getShapeProperty(el, p); | ||
92 | if(m) | ||
93 | { | ||
94 | return this.getShapeProperty(el, p).getName(); | ||
95 | } | ||
96 | else | ||
97 | { | ||
98 | return "FlatMaterial"; | ||
99 | } | ||
54 | default: | 100 | default: |
55 | return CanvasController.getProperty(el, p); | 101 | return CanvasController.getProperty(el, p); |
56 | } | 102 | } |
@@ -249,6 +295,60 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
249 | { | 295 | { |
250 | return (el.elementModel && el.elementModel.isShape); | 296 | return (el.elementModel && el.elementModel.isShape); |
251 | } | 297 | } |
298 | }, | ||
299 | |||
300 | toggleWebGlMode: { | ||
301 | value: function(el, useWebGl) | ||
302 | { | ||
303 | if(useWebGl) | ||
304 | { | ||
305 | this.convertToWebGlWorld(el); | ||
306 | } | ||
307 | else | ||
308 | { | ||
309 | this.convertTo2DWorld(el); | ||
310 | } | ||
311 | } | ||
312 | }, | ||
313 | |||
314 | convertToWebGlWorld: { | ||
315 | value: function(el) | ||
316 | { | ||
317 | if(el.elementModel.shapeModel.useWebGl) | ||
318 | { | ||
319 | return; | ||
320 | } | ||
321 | var world, | ||
322 | worldData = el.elementModel.shapeModel.GLWorld.export(); | ||
323 | if(worldData) | ||
324 | { | ||
325 | world = new GLWorld(el, true); | ||
326 | el.elementModel.shapeModel.GLWorld = world; | ||
327 | el.elementModel.shapeModel.useWebGl = true; | ||
328 | world.import(worldData); | ||
329 | } | ||
330 | |||
331 | } | ||
332 | }, | ||
333 | |||
334 | convertTo2DWorld: { | ||
335 | value: function(el) | ||
336 | { | ||
337 | if(!el.elementModel.shapeModel.useWebGl) | ||
338 | { | ||
339 | return; | ||
340 | } | ||
341 | var world, | ||
342 | worldData = el.elementModel.shapeModel.GLWorld.export(); | ||
343 | if(worldData) | ||
344 | { | ||
345 | world = new GLWorld(el, false); | ||
346 | el.elementModel.shapeModel.GLWorld = world; | ||
347 | el.elementModel.shapeModel.useWebGl = false; | ||
348 | world.import(worldData); | ||
349 | } | ||
350 | |||
351 | } | ||
252 | } | 352 | } |
253 | 353 | ||
254 | }); | 354 | }); |
diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index afd298c9..011caec5 100644 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js | |||
@@ -171,10 +171,12 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
171 | if(argType === 'string') { | 171 | if(argType === 'string') { |
172 | ruleText += '{' + declaration + '}'; | 172 | ruleText += '{' + declaration + '}'; |
173 | } else if(argType === 'object') { | 173 | } else if(argType === 'object') { |
174 | ruleText += '{' + nj.cssFromObject(declaration) + '}'; | 174 | ruleText += '{' + this.cssFromObject(declaration) + '}'; |
175 | } | 175 | } |
176 | 176 | ||
177 | stylesheet.insertRule(ruleText, index); | 177 | stylesheet.insertRule(ruleText, index); |
178 | |||
179 | this.styleSheetModified(stylesheet); | ||
178 | 180 | ||
179 | rule = stylesheet.rules[index]; | 181 | rule = stylesheet.rules[index]; |
180 | 182 | ||
@@ -199,25 +201,42 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
199 | 201 | ||
200 | ///// Locally-scoped function to de-clutter variable declarations | 202 | ///// Locally-scoped function to de-clutter variable declarations |
201 | function getSelector(el, rule) { | 203 | function getSelector(el, rule) { |
202 | |||
203 | return this._getMostSpecificSelectorForElement(el, rule[this.CONST.SPECIFICITY_KEY]).selector; | 204 | return this._getMostSpecificSelectorForElement(el, rule[this.CONST.SPECIFICITY_KEY]).selector; |
204 | } | 205 | } |
205 | 206 | ||
206 | var selectorToOverride = getSelector.bind(this)(element, ruleToOverride), | 207 | var selectorToOverride = getSelector.bind(this)(element, ruleToOverride), |