diff options
Diffstat (limited to 'js/controllers/elements')
-rwxr-xr-x | js/controllers/elements/element-controller.js | 89 | ||||
-rwxr-xr-x | js/controllers/elements/shapes-controller.js | 132 |
2 files changed, 203 insertions, 18 deletions
diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js index f2b54014..65d26bdd 100755 --- a/js/controllers/elements/element-controller.js +++ b/js/controllers/elements/element-controller.js | |||
@@ -69,27 +69,103 @@ var ElementController = exports.ElementController = Montage.create(NJComponent, | |||
69 | // Routines to get/set color properties | 69 | // Routines to get/set color properties |
70 | getColor: { | 70 | getColor: { |
71 | value: function(el, isFill) { | 71 | value: function(el, isFill) { |
72 | var colorObj, | ||
73 | color, | ||
74 | image; | ||
75 | |||
76 | // Return cached value if one exists | ||
72 | if(isFill) | 77 | if(isFill) |
73 | { | 78 | { |
74 | return this.application.ninja.stylesController.getElementStyle(el, "background-color"); | 79 | if(el.elementModel.fill) |
80 | { | ||
81 | return el.elementModel.fill; | ||
82 | } | ||
83 | // return this.application.ninja.stylesController.getElementStyle(el, "background-color"); | ||
84 | //TODO: Once logic for color and gradient is established, this needs to be revised | ||
85 | color = this.getProperty(el, "background-color"); | ||
86 | image = this.getProperty(el, "background-image"); | ||
75 | } | 87 | } |
76 | else | 88 | else |
77 | { | 89 | { |
78 | // TODO - Need to figure out which border side user wants | 90 | // TODO - Need to figure out which border side user wants |
79 | return this.application.ninja.stylesController.getElementStyle(el, "border-color"); | 91 | if(el.elementModel.stroke) |
92 | { | ||
93 | return el.elementModel.stroke; | ||
94 | } | ||
95 | // TODO - Need to figure out which border side user wants | ||
96 | // return this.application.ninja.stylesController.getElementStyle(el, "border-color"); | ||
97 | color = this.getProperty(el, "border-color"); | ||
98 | image = this.getProperty(el, "border-image"); | ||
80 | } | 99 | } |
100 | |||
101 | if(color || image) { | ||
102 | if (image && image !== 'none' && image.indexOf('-webkit') >= 0) { | ||
103 | //Gradient | ||
104 | colorObj = this.application.ninja.colorController.getColorObjFromCss(image); | ||
105 | } else { | ||
106 | //Solid | ||
107 | colorObj = this.application.ninja.colorController.getColorObjFromCss(color); | ||
108 | } | ||
109 | } | ||
110 | |||
111 | // Update cache | ||
112 | if(isFill) | ||
113 | { | ||
114 | el.elementModel.fill = colorObj; | ||
115 | } | ||
116 | else | ||
117 | { | ||
118 | el.elementModel.stroke = colorObj; | ||
119 | } | ||
120 | |||
121 | return colorObj; | ||
81 | } | 122 | } |
82 | }, | 123 | }, |
83 | 124 | ||
84 | setColor: { | 125 | setColor: { |
85 | value: function(el, color, isFill) { | 126 | value: function(el, color, isFill) { |
127 | var mode = color.mode; | ||
86 | if(isFill) | 128 | if(isFill) |
87 | { | 129 | { |
88 | this.application.ninja.stylesController.setElementStyle(el, "background-color", color.color.css); | 130 | if(mode) |
131 | { | ||
132 | switch (mode) { | ||
133 | case 'nocolor': | ||
134 | this.setProperty(el, "background-image", "none"); | ||
135 | this.setProperty(el, "background-color", "none"); | ||
136 | el.elementModel.fill = null; | ||
137 | return; | ||
138 | case 'gradient': | ||
139 | this.setProperty(el, "background-image", color.color.css); | ||
140 | this.setProperty(el, "background-color", "none"); | ||
141 | break; | ||
142 | default: | ||
143 | this.setProperty(el, "background-image", "none"); | ||
144 | this.setProperty(el, "background-color", color.color.css); | ||
145 | } | ||
146 | } | ||
147 | el.elementModel.fill = color; | ||
89 | } | 148 | } |
90 | else | 149 | else |
91 | { | 150 | { |
92 | this.application.ninja.stylesController.setElementStyle(el, "border-color", color.color.css); | 151 | if(mode) |
152 | { | ||
153 | switch (mode) { | ||
154 | case 'nocolor': | ||
155 | this.setProperty(el, "border-image", "none"); | ||
156 | this.setProperty(el, "border-color", "none"); | ||
157 | el.elementModel.stroke = null; | ||
158 | return; | ||
159 | case 'gradient': | ||
160 | this.setProperty(el, "border-image", color.color.css); | ||
161 | this.setProperty(el, "border-color", "none"); | ||
162 | break; | ||
163 | default: | ||
164 | this.setProperty(el, "border-image", "none"); | ||
165 | this.setProperty(el, "border-color", color.color.css); | ||
166 | } | ||
167 | } | ||
168 | el.elementModel.stroke = color; | ||
93 | } | 169 | } |
94 | } | 170 | } |
95 | }, | 171 | }, |
@@ -103,8 +179,9 @@ var ElementController = exports.ElementController = Montage.create(NJComponent, | |||
103 | 179 | ||
104 | setStroke: { | 180 | setStroke: { |
105 | value: function(el, stroke) { | 181 | value: function(el, stroke) { |
106 | 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); |
107 | 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); | ||
108 | } | 185 | } |
109 | }, | 186 | }, |
110 | 187 | ||
diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js index c5f22138..e764de4e 100755 --- 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 | } |
@@ -66,17 +96,27 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
66 | getProperty: { | 96 | getProperty: { |
67 | value: function(el, p) { | 97 | value: function(el, p) { |
68 | switch(p) { | 98 | switch(p) { |
69 | case "stroke": | ||
70 | case "fill": | ||
71 | case "strokeSize": | 99 | case "strokeSize": |
72 | case "innerRadius": | 100 | case "innerRadius": |
73 | case "tlRadius": | 101 | case "tlRadius": |
74 | case "trRadius": | 102 | case "trRadius": |
75 | case "blRadius": | 103 | case "blRadius": |
76 | case "brRadius": | 104 | case "brRadius": |
105 | case "border": | ||
106 | case "background": | ||
107 | case "useWebGl": | ||
108 | return this.getShapeProperty(el, p); | ||
77 | case "strokeMaterial": | 109 | case "strokeMaterial": |
78 | case "fillMaterial": | 110 | case "fillMaterial": |
79 | return this.getShapeProperty(el, p); | 111 | var m = this.getShapeProperty(el, p); |
112 | if(m) | ||
113 | { | ||
114 | return this.getShapeProperty(el, p).getName(); | ||
115 | } | ||