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 | 58 |
2 files changed, 133 insertions, 14 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 d34644a7..5efbccd0 100644 --- a/js/controllers/elements/shapes-controller.js +++ b/js/controllers/elements/shapes-controller.js | |||
@@ -24,6 +24,26 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
24 | el.elementModel.shapeModel.GLGeomObj.setInnerRadius(val/100); | 24 | el.elementModel.shapeModel.GLGeomObj.setInnerRadius(val/100); |
25 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 25 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
26 | break; | 26 | break; |
27 | case "tlRadius": | ||
28 | this.setShapeProperty(el, "tlRadius", value); | ||
29 | el.elementModel.shapeModel.GLGeomObj.setTLRadius(val); | ||
30 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
31 | break; | ||
32 | case "trRadius": | ||
33 | this.setShapeProperty(el, "trRadius", value); | ||
34 | el.elementModel.shapeModel.GLGeomObj.setTRRadius(val); | ||
35 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
36 | break; | ||
37 | case "blRadius": | ||
38 | this.setShapeProperty(el, "blRadius", value); | ||
39 | el.elementModel.shapeModel.GLGeomObj.setBLRadius(val); | ||
40 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
41 | break; | ||
42 | case "brRadius": | ||
43 | this.setShapeProperty(el, "brRadius", value); | ||
44 | el.elementModel.shapeModel.GLGeomObj.setBRRadius(val); | ||
45 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | ||
46 | break; | ||
27 | case "width": | 47 | case "width": |
28 | el.elementModel.shapeModel.GLGeomObj.setWidth(val); | 48 | el.elementModel.shapeModel.GLGeomObj.setWidth(val); |
29 | CanvasController.setProperty(el, p, value); | 49 | CanvasController.setProperty(el, p, value); |
@@ -48,6 +68,14 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
48 | switch(p) { | 68 | switch(p) { |
49 | case "strokeSize": | 69 | case "strokeSize": |
50 | case "innerRadius": | 70 | case "innerRadius": |
71 | case "tlRadius": | ||
72 | case "trRadius": | ||
73 | case "blRadius": | ||
74 | case "brRadius": | ||
75 | case "strokeMaterial": | ||
76 | case "fillMaterial": | ||
77 | case "border": | ||
78 | case "background": | ||
51 | return this.getShapeProperty(el, p); | 79 | return this.getShapeProperty(el, p); |
52 | default: | 80 | default: |
53 | return CanvasController.getProperty(el, p); | 81 | return CanvasController.getProperty(el, p); |
@@ -154,30 +182,44 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
154 | // Routines to get/set color properties | 182 | // Routines to get/set color properties |
155 | getColor: { | 183 | getColor: { |
156 | value: function(el, isFill) { | 184 | value: function(el, isFill) { |
185 | var color, | ||
186 | css; | ||
157 | if(isFill) | 187 | if(isFill) |
158 | { | 188 | { |
159 | 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"); | ||
160 | } | 194 | } |
161 | else | 195 | else |
162 | { | 196 | { |
163 | 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"); | ||
164 | } | 202 | } |
203 | |||
204 | css = this.application.ninja.colorController.colorModel.webGlToCss(color); | ||
205 | return this.application.ninja.colorController.getColorObjFromCss(css); | ||
165 | } | 206 | } |
166 | }, | 207 | }, |
167 | 208 | ||
168 | setColor: { |