diff options
Diffstat (limited to 'js/controllers/elements/element-controller.js')
-rw-r--r-- | js/controllers/elements/element-controller.js | 89 |
1 files changed, 83 insertions, 6 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 | ||