diff options
Diffstat (limited to 'js/controllers/elements')
-rw-r--r-- | js/controllers/elements/element-controller.js | 89 | ||||
-rw-r--r-- | js/controllers/elements/shapes-controller.js | 34 |
2 files changed, 107 insertions, 16 deletions
diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js index f2b54014..65d26bdd 100644 --- 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..5efbccd0 100644 --- a/js/controllers/elements/shapes-controller.js +++ b/js/controllers/elements/shapes-controller.js | |||
@@ -66,8 +66,6 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
66 | getProperty: { | 66 | getProperty: { |
67 | value: function(el, p) { | 67 | value: function(el, p) { |
68 | switch(p) { | 68 | switch(p) { |
69 | case "stroke": | ||
70 | case "fill": | ||
71 | case "strokeSize": | 69 | case "strokeSize": |
72 | case "innerRadius": | 70 | case "innerRadius": |
73 | case "tlRadius": | 71 | case "tlRadius": |
@@ -76,6 +74,8 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
76 | case "brRadius": | 74 | case "brRadius": |
77 | case "strokeMaterial": | 75 | case "strokeMaterial": |
78 | case "fillMaterial": | 76 | case "fillMaterial": |
77 | case "border": | ||
78 | case "background": | ||
79 | return this.getShapeProperty(el, p); | 79 | return this.getShapeProperty(el, p); |
80 | default: | 80 | default: |
81 | return CanvasController.getProperty(el, p); | 81 | return CanvasController.getProperty(el, p); |
@@ -182,30 +182,44 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
182 | // Routines to get/set color properties | 182 | // Routines to get/set color properties |
183 | getColor: { | 183 | getColor: { |
184 | value: function(el, isFill) { | 184 | value: function(el, isFill) { |
185 | var color, | ||
186 | css; | ||
185 | if(isFill) | 187 | if(isFill) |
186 | { | 188 | { |
187 | return this.getShapeProperty(el, "fill"); | 189 | if(el.elementModel.shapeModel.background) |
190 | { | ||
191 | return el.elementModel.shapeModel.background; | ||
192 | } | ||
193 | color = this.getShapeProperty(el, "fill"); | ||
188 | } | 194 | } |
189 | else | 195 | else |
190 | { | 196 | { |
191 | return this.getShapeProperty(el, "stroke"); | 197 | if(el.elementModel.shapeModel.border) |
198 | { | ||
199 | return el.elementModel.shapeModel.border; | ||
200 | } | ||
201 | color = this.getShapeProperty(el, "stroke"); | ||
192 | } | 202 | } |
203 | |||
204 | css = this.application.ninja.colorController.colorModel.webGlToCss(color); | ||
205 | return this.application.ninja.colorController.getColorObjFromCss(css); | ||
193 | } | 206 | } |
194 | }, | 207 | }, |
195 | 208 | ||
196 | setColor: { | 209 | setColor: { |
197 | value: function(el, color, isFill) { | 210 | value: function(el, color, isFill) { |
198 | // TODO - Format color for webGL before setting | 211 | var webGl = color.webGlColor || color.color.webGlColor; |
199 | color = color.webGlColor; | ||
200 | if(isFill) | 212 | if(isFill) |
201 | { | 213 | { |
202 | el.elementModel.shapeModel.GLGeomObj.setFillColor(color); | 214 | el.elementModel.shapeModel.GLGeomObj.setFillColor(webGl); |
203 | this.setShapeProperty(el, "fill", color); | 215 | this.setShapeProperty(el, "fill", webGl); |
216 | this.setShapeProperty(el, "background", color); | ||
204 | } | 217 | } |
205 | else | 218 | else |
206 | { | 219 | { |
207 | el.elementModel.shapeModel.GLGeomObj.setStrokeColor(color); | 220 | el.elementModel.shapeModel.GLGeomObj.setStrokeColor(webGl); |
208 | this.setShapeProperty(el, "stroke", color); | 221 | this.setShapeProperty(el, "stroke", webGl); |
222 | this.setShapeProperty(el, "border", color); | ||
209 | } | 223 | } |
210 | el.elementModel.shapeModel.GLWorld.render(); | 224 | el.elementModel.shapeModel.GLWorld.render(); |
211 | } | 225 | } |