]> git.wh0rd.org Git - tt-rss.git/blob - lib/dojo/colors.js
upgrade Dojo to 1.6.1
[tt-rss.git] / lib / dojo / colors.js
1 /*
2         Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
3         Available via Academic Free License >= 2.1 OR the modified BSD license.
4         see: http://dojotoolkit.org/license for details
5 */
6
7
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;
10 dojo.provide("dojo.colors");
11
12 dojo.getObject("colors", true, dojo);
13
14 //TODO: this module appears to break naming conventions
15
16 /*=====
17 dojo.colors = {
18         // summary: Color utilities
19 }
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,
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,
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         };
94 })();
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]);
100 };
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
238 }