diff options
Diffstat (limited to 'js/controllers')
-rw-r--r-- | js/controllers/elements/shapes-controller.js | 100 | ||||
-rw-r--r-- | js/controllers/styles-controller.js | 73 |
2 files changed, 164 insertions, 9 deletions
diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js index 5efbccd0..e764de4e 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 | ||
@@ -56,6 +57,35 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
56 | el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el); | 57 | el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el); |
57 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 58 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
58 | break; | 59 | break; |
60 | case "useWebGl": | ||
61 | var canvas = njModule.NJUtils.makeNJElement("canvas", "Canvas", "shape", el.className, true); | ||
62 | canvas.width = el.width; | ||
63 | canvas.height = el.height; | ||
64 | this.application.ninja.elementMediator.replaceElement(el, canvas); | ||
65 | NJevent("elementDeleted", el); | ||
66 | this.application.ninja.selectionController.selectElement(canvas); | ||
67 | el = canvas; | ||
68 | this.toggleWebGlMode(el, value); | ||
69 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
70 | break; | ||
71 | case "strokeMaterial": | ||
72 | var sm = Object.create(MaterialsLibrary.getMaterial(value)); | ||
73 | if(sm) | ||
74 | { | ||
75 | el.elementModel.shapeModel.GLGeomObj.setStrokeMaterial(sm); | ||
76 | el.elementModel.shapeModel.strokeMaterial = sm; | ||
77 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
78 | } | ||
79 | break; | ||
80 | case "fillMaterial": | ||
81 | var fm = Object.create(MaterialsLibrary.getMaterial(value)); | ||
82 | if(fm) | ||
83 | { | ||
84 | el.elementModel.shapeModel.GLGeomObj.setFillMaterial(fm); | ||
85 | el.elementModel.shapeModel.fillMaterial = fm; | ||
86 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
87 | } | ||
88 | break; | ||
59 | default: | 89 | default: |
60 | CanvasController.setProperty(el, p, value); | 90 | CanvasController.setProperty(el, p, value); |
61 | } | 91 | } |
@@ -72,11 +102,21 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
72 | case "trRadius": | 102 | case "trRadius": |
73 | case "blRadius": | 103 | case "blRadius": |
74 | case "brRadius": | 104 | case "brRadius": |
75 | case "strokeMaterial": | ||
76 | case "fillMaterial": | ||
77 | case "border": | 105 | case "border": |
78 | case "background": | 106 | case "background": |
107 | case "useWebGl": | ||
79 | return this.getShapeProperty(el, p); | 108 | return this.getShapeProperty(el, p); |
109 | case "strokeMaterial": | ||
110 | case "fillMaterial": | ||
111 | var m = this.getShapeProperty(el, p); | ||
112 | if(m) | ||
113 | { | ||
114 | return this.getShapeProperty(el, p).getName(); | ||
115 | } | ||
116 | else | ||
117 | { | ||
118 | return "FlatMaterial"; | ||
119 | } | ||
80 | default: | 120 | default: |
81 | return CanvasController.getProperty(el, p); | 121 | return CanvasController.getProperty(el, p); |
82 | } | 122 | } |
@@ -275,6 +315,60 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
275 | { | 315 | { |
276 | return (el.elementModel && el.elementModel.isShape); | 316 | return (el.elementModel && el.elementModel.isShape); |
277 | } | 317 | } |
318 | }, | ||
319 | |||
320 | toggleWebGlMode: { | ||
321 | value: function(el, useWebGl) | ||
322 | { | ||
323 | if(useWebGl) | ||
324 | { | ||
325 | this.convertToWebGlWorld(el); | ||
326 | } | ||
327 | else | ||
328 | { | ||
329 | this.convertTo2DWorld(el); | ||
330 | } | ||
331 | } | ||
332 | }, | ||
333 | |||
334 | convertToWebGlWorld: { | ||
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, true); | ||
346 | el.elementModel.shapeModel.GLWorld = world; | ||
347 | el.elementModel.shapeModel.useWebGl = true; | ||
348 | world.import(worldData); | ||
349 | } | ||
350 | |||
351 | } | ||
352 | }, | ||
353 | |||
354 | convertTo2DWorld: { | ||
355 | value: function(el) | ||
356 | { | ||
357 | if(!el.elementModel.shapeModel.useWebGl) | ||
358 | { | ||
359 | return; | ||
360 | } | ||
361 | var world, | ||
362 | worldData = el.elementModel.shapeModel.GLWorld.export(); | ||
363 | if(worldData) | ||
364 | { | ||
365 | world = new GLWorld(el, false); | ||
366 | el.elementModel.shapeModel.GLWorld = world; | ||
367 | el.elementModel.shapeModel.useWebGl = false; | ||
368 | world.import(worldData); | ||
369 | } | ||
370 | |||
371 | } | ||
278 | } | 372 | } |
279 | 373 | ||
280 | }); | 374 | }); |
diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index a38984e7..44e0e798 100644 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js | |||
@@ -175,6 +175,8 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
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 | ||
@@ -287,6 +289,8 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
287 | sheet.deleteRule(index); | 289 | sheet.deleteRule(index); |
288 | } | 290 | } |
289 | 291 | ||
292 | this.styleSheetModified(sheet); | ||
293 | |||
290 | return index; | 294 | return index; |
291 | } | 295 | } |
292 | }, | 296 | }, |
@@ -535,6 +539,9 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
535 | value : function(rule, selector) { | 539 | value : function(rule, selector) { |
536 | rule.selectorText = selector; | 540 | rule.selectorText = selector; |
537 | rule[this.CONST.SPECIFICITY_KEY] = this.getSpecificity(selector); | 541 | rule[this.CONST.SPECIFICITY_KEY] = this.getSpecificity(selector); |
542 | |||
543 | this.styleSheetModified(rule.parentStyleSheet); | ||
544 | |||
538 | return rule; | 545 | return rule; |
539 | } | 546 | } |
540 | }, | 547 | }, |
@@ -784,6 +791,8 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
784 | ///// method to apply/test the new value | 791 | ///// method to apply/test the new value |
785 | dec.setProperty(property, value, priority); | 792 | dec.setProperty(property, value, priority); |
786 | 793 | ||
794 | this.styleSheetModified(rule.parentStyleSheet); | ||
795 | |||
787 | ///// Return browser value for value we just set | 796 | ///// Return browser value for value we just set |
788 | return dec.getPropertyValue(property); | 797 | return dec.getPropertyValue(property); |
789 | } | 798 | } |
@@ -842,7 +851,10 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
842 | 851 | ||
843 | deleteStyle : { | 852 | deleteStyle : { |
844 | value : function(rule, property) { | 853 | value : function(rule, property) { |
854 | this.styleSheetModified(rule.parentStyleSheet); | ||
855 | |||
845 | rule.style.removeProperty(property); | 856 | rule.style.removeProperty(property); |
857 | |||
846 | return rule; | 858 | return rule; |
847 | } | 859 | } |
848 | }, | 860 | }, |
@@ -1074,9 +1086,10 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
1074 | 1086 | ||
1075 | createStylesheet : { | 1087 | createStylesheet : { |
1076 | value: function(id, document) { | 1088 | value: function(id, document) { |
1077 | var doc = document || this._activeDocument; | 1089 | var doc = document || this._activeDocument._document, |
1090 | sheetElement, sheet; | ||
1078 | 1091 | ||
1079 | sheet = nj.make('style', { | 1092 | sheetElement = nj.make('style', { |
1080 | type : 'text/css', | 1093 | type : 'text/css', |
1081 | rel : 'stylesheet', | 1094 | rel : 'stylesheet', |
1082 | id : id || "", | 1095 | id : id || "", |
@@ -1084,9 +1097,12 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
1084 | title : 'Temp' | 1097 | title : 'Temp' |
1085 | }); | 1098 | }); |