]>
Commit | Line | Data |
---|---|---|
2f01fe57 | 1 | /* |
81bea17a | 2 | Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved. |
2f01fe57 AD |
3 | Available via Academic Free License >= 2.1 OR the modified BSD license. |
4 | see: http://dojotoolkit.org/license for details | |
5 | */ | |
6 | ||
7 | ||
a089699c AD |
8 | if(!dojo._hasResource["dojo.colors"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. |
9 | dojo._hasResource["dojo.colors"] = true; | |
2f01fe57 | 10 | dojo.provide("dojo.colors"); |
a089699c | 11 | |
81bea17a AD |
12 | dojo.getObject("colors", true, dojo); |
13 | ||
a089699c AD |
14 | //TODO: this module appears to break naming conventions |
15 | ||
16 | /*===== | |
17 | dojo.colors = { | |
18 | // summary: Color utilities | |
2f01fe57 | 19 | } |
a089699c AD |
20 | =====*/ |
21 | ||
22 | (function(){ | |
23 | // this is a standard conversion prescribed by the CSS3 Color Module | |
24 | var hue2rgb = function(m1, m2, h){ | |
25 | if(h < 0){ ++h; } | |
26 | if(h > 1){ --h; } | |
27 | var h6 = 6 * h; | |
28 | if(h6 < 1){ return m1 + (m2 - m1) * h6; } | |
29 | if(2 * h < 1){ return m2; } | |
30 | if(3 * h < 2){ return m1 + (m2 - m1) * (2 / 3 - h) * 6; } | |
31 | return m1; | |
32 | }; | |
33 | ||
34 | dojo.colorFromRgb = function(/*String*/ color, /*dojo.Color?*/ obj){ | |
35 | // summary: | |
36 | // get rgb(a) array from css-style color declarations | |
37 | // description: | |
38 | // this function can handle all 4 CSS3 Color Module formats: rgb, | |
39 | // rgba, hsl, hsla, including rgb(a) with percentage values. | |
40 | var m = color.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/); | |
41 | if(m){ | |
42 | var c = m[2].split(/\s*,\s*/), l = c.length, t = m[1], a; | |
43 | if((t == "rgb" && l == 3) || (t == "rgba" && l == 4)){ | |
44 | var r = c[0]; | |
45 | if(r.charAt(r.length - 1) == "%"){ | |
46 | // 3 rgb percentage values | |
47 | a = dojo.map(c, function(x){ | |
48 | return parseFloat(x) * 2.56; | |
49 | }); | |
50 | if(l == 4){ a[3] = c[3]; } | |
51 | return dojo.colorFromArray(a, obj); // dojo.Color | |
52 | } | |
53 | return dojo.colorFromArray(c, obj); // dojo.Color | |
54 | } | |
55 | if((t == "hsl" && l == 3) || (t == "hsla" && l == 4)){ | |
56 | // normalize hsl values | |
57 | var H = ((parseFloat(c[0]) % 360) + 360) % 360 / 360, | |
58 | S = parseFloat(c[1]) / 100, | |
59 | L = parseFloat(c[2]) / 100, | |
81bea17a AD |
60 | // calculate rgb according to the algorithm |
61 | // recommended by the CSS3 Color Module | |
62 | m2 = L <= 0.5 ? L * (S + 1) : L + S - L * S, | |
a089699c AD |
63 | m1 = 2 * L - m2; |
64 | a = [ | |
65 | hue2rgb(m1, m2, H + 1 / 3) * 256, | |
66 | hue2rgb(m1, m2, H) * 256, | |
67 | hue2rgb(m1, m2, H - 1 / 3) * 256, | |
68 | 1 | |
69 | ]; | |
70 | if(l == 4){ a[3] = c[3]; } | |
71 | return dojo.colorFromArray(a, obj); // dojo.Color | |
72 | } | |
73 | } | |
74 | return null; // dojo.Color | |
75 | }; | |
76 | ||
77 | var confine = function(c, low, high){ | |
78 | // summary: | |
79 | // sanitize a color component by making sure it is a number, | |
80 | // and clamping it to valid values | |
81 | c = Number(c); | |
82 | return isNaN(c) ? high : c < low ? low : c > high ? high : c; // Number | |
83 | }; | |
84 | ||
85 | dojo.Color.prototype.sanitize = function(){ | |
86 | // summary: makes sure that the object has correct attributes | |
87 | var t = this; | |
88 | t.r = Math.round(confine(t.r, 0, 255)); | |
89 | t.g = Math.round(confine(t.g, 0, 255)); | |
90 | t.b = Math.round(confine(t.b, 0, 255)); | |
91 | t.a = confine(t.a, 0, 1); | |
92 | return this; // dojo.Color | |
93 | }; | |
2f01fe57 | 94 | })(); |
a089699c AD |
95 | |
96 | ||
97 | dojo.colors.makeGrey = function(/*Number*/ g, /*Number?*/ a){ | |
98 | // summary: creates a greyscale color with an optional alpha | |
99 | return dojo.colorFromArray([g, g, g, a]); | |
2f01fe57 | 100 | }; |
a089699c AD |
101 | |
102 | // mixin all CSS3 named colors not already in _base, along with SVG 1.0 variant spellings | |
103 | dojo.mixin(dojo.Color.named, { | |
104 | aliceblue: [240,248,255], | |
105 | antiquewhite: [250,235,215], | |
106 | aquamarine: [127,255,212], | |
107 | azure: [240,255,255], | |
108 | beige: [245,245,220], | |
109 | bisque: [255,228,196], | |
110 | blanchedalmond: [255,235,205], | |
111 | blueviolet: [138,43,226], | |
112 | brown: [165,42,42], | |
113 | burlywood: [222,184,135], | |
114 | cadetblue: [95,158,160], | |
115 | chartreuse: [127,255,0], | |
116 | chocolate: [210,105,30], | |
117 | coral: [255,127,80], | |
118 | cornflowerblue: [100,149,237], | |
119 | cornsilk: [255,248,220], | |
120 | crimson: [220,20,60], | |
121 | cyan: [0,255,255], | |
122 | darkblue: [0,0,139], | |
123 | darkcyan: [0,139,139], | |
124 | darkgoldenrod: [184,134,11], | |
125 | darkgray: [169,169,169], | |
126 | darkgreen: [0,100,0], | |
127 | darkgrey: [169,169,169], | |
128 | darkkhaki: [189,183,107], | |
129 | darkmagenta: [139,0,139], | |
130 | darkolivegreen: [85,107,47], | |
131 | darkorange: [255,140,0], | |
132 | darkorchid: [153,50,204], | |
133 | darkred: [139,0,0], | |
134 | darksalmon: [233,150,122], | |
135 | darkseagreen: [143,188,143], | |
136 | darkslateblue: [72,61,139], | |
137 | darkslategray: [47,79,79], | |
138 | darkslategrey: [47,79,79], | |
139 | darkturquoise: [0,206,209], | |
140 | darkviolet: [148,0,211], | |
141 | deeppink: [255,20,147], | |
142 | deepskyblue: [0,191,255], | |
143 | dimgray: [105,105,105], | |
144 | dimgrey: [105,105,105], | |
145 | dodgerblue: [30,144,255], | |
146 | firebrick: [178,34,34], | |
147 | floralwhite: [255,250,240], | |
148 | forestgreen: [34,139,34], | |
149 | gainsboro: [220,220,220], | |
150 | ghostwhite: [248,248,255], | |
151 | gold: [255,215,0], | |
152 | goldenrod: [218,165,32], | |
153 | greenyellow: [173,255,47], | |
154 | grey: [128,128,128], | |
155 | honeydew: [240,255,240], | |
156 | hotpink: [255,105,180], | |
157 | indianred: [205,92,92], | |
158 | indigo: [75,0,130], | |
159 | ivory: [255,255,240], | |
160 | khaki: [240,230,140], | |
161 | lavender: [230,230,250], | |
162 | lavenderblush: [255,240,245], | |
163 | lawngreen: [124,252,0], | |
164 | lemonchiffon: [255,250,205], | |
165 | lightblue: [173,216,230], | |
166 | lightcoral: [240,128,128], | |
167 | lightcyan: [224,255,255], | |
168 | lightgoldenrodyellow: [250,250,210], | |
169 | lightgray: [211,211,211], | |
170 | lightgreen: [144,238,144], | |
171 | lightgrey: [211,211,211], | |
172 | lightpink: [255,182,193], | |
173 | lightsalmon: [255,160,122], | |
174 | lightseagreen: [32,178,170], | |
175 | lightskyblue: [135,206,250], | |
176 | lightslategray: [119,136,153], | |
177 | lightslategrey: [119,136,153], | |
178 | lightsteelblue: [176,196,222], | |
179 | lightyellow: [255,255,224], | |
180 | limegreen: [50,205,50], | |
181 | linen: [250,240,230], | |
182 | magenta: [255,0,255], | |
183 | mediumaquamarine: [102,205,170], | |
184 | mediumblue: [0,0,205], | |
185 | mediumorchid: [186,85,211], | |
186 | mediumpurple: [147,112,219], | |
187 | mediumseagreen: [60,179,113], | |
188 | mediumslateblue: [123,104,238], | |
189 | mediumspringgreen: [0,250,154], | |
190 | mediumturquoise: [72,209,204], | |
191 | mediumvioletred: [199,21,133], | |
192 | midnightblue: [25,25,112], | |
193 | mintcream: [245,255,250], | |
194 | mistyrose: [255,228,225], | |
195 | moccasin: [255,228,181], | |
196 | navajowhite: [255,222,173], | |
197 | oldlace: [253,245,230], | |
198 | olivedrab: [107,142,35], | |
199 | orange: [255,165,0], | |
200 | orangered: [255,69,0], | |
201 | orchid: [218,112,214], | |
202 | palegoldenrod: [238,232,170], | |
203 | palegreen: [152,251,152], | |
204 | paleturquoise: [175,238,238], | |
205 | palevioletred: [219,112,147], | |
206 | papayawhip: [255,239,213], | |
207 | peachpuff: [255,218,185], | |
208 | peru: [205,133,63], | |
209 | pink: [255,192,203], | |
210 | plum: [221,160,221], | |
211 | powderblue: [176,224,230], | |
212 | rosybrown: [188,143,143], | |
213 | royalblue: [65,105,225], | |
214 | saddlebrown: [139,69,19], | |
215 | salmon: [250,128,114], | |
216 | sandybrown: [244,164,96], | |
217 | seagreen: [46,139,87], | |
218 | seashell: [255,245,238], | |
219 | sienna: [160,82,45], | |
220 | skyblue: [135,206,235], | |
221 | slateblue: [106,90,205], | |
222 | slategray: [112,128,144], | |
223 | slategrey: [112,128,144], | |
224 | snow: [255,250,250], | |
225 | springgreen: [0,255,127], | |
226 | steelblue: [70,130,180], | |
227 | tan: [210,180,140], | |
228 | thistle: [216,191,216], | |
229 | tomato: [255,99,71], | |
230 | transparent: [0, 0, 0, 0], | |
231 | turquoise: [64,224,208], | |
232 | violet: [238,130,238], | |
233 | wheat: [245,222,179], | |
234 | whitesmoke: [245,245,245], | |
235 | yellowgreen: [154,205,50] | |
236 | }); | |
237 | ||
2f01fe57 | 238 | } |