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 21024125..011caec5 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 | ||
@@ -283,6 +285,8 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
283 | sheet.deleteRule(index); | 285 | sheet.deleteRule(index); |
284 | } | 286 | } |
285 | 287 | ||
288 | this.styleSheetModified(sheet); | ||
289 | |||
286 | return index; | 290 | return index; |
287 | } | 291 | } |
288 | }, | 292 | }, |
@@ -531,6 +535,9 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
531 | value : function(rule, selector) { | 535 | value : function(rule, selector) { |
532 | rule.selectorText = selector; | 536 | rule.selectorText = selector; |
533 | rule[this.CONST.SPECIFICITY_KEY] = this.getSpecificity(selector); | 537 | rule[this.CONST.SPECIFICITY_KEY] = this.getSpecificity(selector); |
538 | |||
539 | this.styleSheetModified(rule.parentStyleSheet); | ||
540 | |||
534 | return rule; | 541 | return rule; |
535 | } | 542 | } |
536 | }, | 543 | }, |
@@ -780,6 +787,8 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
780 | ///// method to apply/test the new value | 787 | ///// method to apply/test the new value |
781 | dec.setProperty(property, value, priority); | 788 | dec.setProperty(property, value, priority); |
782 | 789 | ||
790 | this.styleSheetModified(rule.parentStyleSheet); | ||
791 | |||
783 | ///// Return browser value for value we just set | 792 | ///// Return browser value for value we just set |
784 | return dec.getPropertyValue(property); | 793 | return dec.getPropertyValue(property); |
785 | } | 794 | } |
@@ -838,7 +847,10 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
838 | 847 | ||
839 | deleteStyle : { | 848 | deleteStyle : { |
840 | value : function(rule, property) { | 849 | value : function(rule, property) { |
850 | this.styleSheetModified(rule.parentStyleSheet); | ||
851 | |||
841 | rule.style.removeProperty(property); | 852 | rule.style.removeProperty(property); |
853 | |||
842 | return rule; | 854 | return rule; |
843 | } | 855 | } |
844 | }, | 856 | }, |
@@ -1070,9 +1082,10 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
1070 | 1082 | ||
1071 | createStylesheet : { | 1083 | createStylesheet : { |
1072 | value: function(id, document) { | 1084 | value: function(id, document) { |
1073 | var doc = document || this._activeDocument; | 1085 | var doc = document || this._activeDocument._document, |
1086 | sheetElement, sheet; | ||
1074 | 1087 | ||
1075 | sheet = nj.make('style', { | 1088 | sheetElement = nj.make('style', { |
1076 | type : 'text/css', | 1089 | type : 'text/css', |
1077 | rel : 'stylesheet', | 1090 | rel : 'stylesheet', |
1078 | id : id || "", | 1091 | id : id || "", |
@@ -1080,9 +1093,12 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
1080 | title : 'Temp' | 1093 | title : 'Temp' |
1081 | }); | 1094 | }); |
1082 | 1095 | ||