Missing consistent use of getYRanges(). Fixed zoom.html to use yRanges in API.
[dygraphs.git] / rgbcolor / rgbcolor.js
CommitLineData
f474c2a3
DV
1/**\r
2 * A class to parse color values\r
3 *\r
4 * NOTE: modified by danvk. I removed the "getHelpXML" function to reduce the\r
5 * file size.\r
6 *\r
7 * @author Stoyan Stefanov <sstoo@gmail.com>\r
8 * @link http://www.phpied.com/rgb-color-parser-in-javascript/\r
9 * @license Use it if you like it\r
10 */\r
11function RGBColor(color_string)\r
12{\r
13 this.ok = false;\r
14\r
15 // strip any leading #\r
16 if (color_string.charAt(0) == '#') { // remove # if any\r
17 color_string = color_string.substr(1,6);\r
18 }\r
19\r
20 color_string = color_string.replace(/ /g,'');\r
21 color_string = color_string.toLowerCase();\r
22\r
23 // before getting into regexps, try simple matches\r
24 // and overwrite the input\r
25 var simple_colors = {\r
26 aliceblue: 'f0f8ff',\r
27 antiquewhite: 'faebd7',\r
28 aqua: '00ffff',\r
29 aquamarine: '7fffd4',\r
30 azure: 'f0ffff',\r
31 beige: 'f5f5dc',\r
32 bisque: 'ffe4c4',\r
33 black: '000000',\r
34 blanchedalmond: 'ffebcd',\r
35 blue: '0000ff',\r
36 blueviolet: '8a2be2',\r
37 brown: 'a52a2a',\r
38 burlywood: 'deb887',\r
39 cadetblue: '5f9ea0',\r
40 chartreuse: '7fff00',\r
41 chocolate: 'd2691e',\r
42 coral: 'ff7f50',\r
43 cornflowerblue: '6495ed',\r
44 cornsilk: 'fff8dc',\r
45 crimson: 'dc143c',\r
46 cyan: '00ffff',\r
47 darkblue: '00008b',\r
48 darkcyan: '008b8b',\r
49 darkgoldenrod: 'b8860b',\r
50 darkgray: 'a9a9a9',\r
51 darkgreen: '006400',\r
52 darkkhaki: 'bdb76b',\r
53 darkmagenta: '8b008b',\r
54 darkolivegreen: '556b2f',\r
55 darkorange: 'ff8c00',\r
56 darkorchid: '9932cc',\r
57 darkred: '8b0000',\r
58 darksalmon: 'e9967a',\r
59 darkseagreen: '8fbc8f',\r
60 darkslateblue: '483d8b',\r
61 darkslategray: '2f4f4f',\r
62 darkturquoise: '00ced1',\r
63 darkviolet: '9400d3',\r
64 deeppink: 'ff1493',\r
65 deepskyblue: '00bfff',\r
66 dimgray: '696969',\r
67 dodgerblue: '1e90ff',\r
68 feldspar: 'd19275',\r
69 firebrick: 'b22222',\r
70 floralwhite: 'fffaf0',\r
71 forestgreen: '228b22',\r
72 fuchsia: 'ff00ff',\r
73 gainsboro: 'dcdcdc',\r
74 ghostwhite: 'f8f8ff',\r
75 gold: 'ffd700',\r
76 goldenrod: 'daa520',\r
77 gray: '808080',\r
78 green: '008000',\r
79 greenyellow: 'adff2f',\r
80 honeydew: 'f0fff0',\r
81 hotpink: 'ff69b4',\r
82 indianred : 'cd5c5c',\r
83 indigo : '4b0082',\r
84 ivory: 'fffff0',\r
85 khaki: 'f0e68c',\r
86 lavender: 'e6e6fa',\r
87 lavenderblush: 'fff0f5',\r
88 lawngreen: '7cfc00',\r
89 lemonchiffon: 'fffacd',\r
90 lightblue: 'add8e6',\r
91 lightcoral: 'f08080',\r
92 lightcyan: 'e0ffff',\r
93 lightgoldenrodyellow: 'fafad2',\r
94 lightgrey: 'd3d3d3',\r
95 lightgreen: '90ee90',\r
96 lightpink: 'ffb6c1',\r
97 lightsalmon: 'ffa07a',\r
98 lightseagreen: '20b2aa',\r
99 lightskyblue: '87cefa',\r
100 lightslateblue: '8470ff',\r
101 lightslategray: '778899',\r
102 lightsteelblue: 'b0c4de',\r
103 lightyellow: 'ffffe0',\r
104 lime: '00ff00',\r
105 limegreen: '32cd32',\r
106 linen: 'faf0e6',\r
107 magenta: 'ff00ff',\r
108 maroon: '800000',\r
109 mediumaquamarine: '66cdaa',\r
110 mediumblue: '0000cd',\r
111 mediumorchid: 'ba55d3',\r
112 mediumpurple: '9370d8',\r
113 mediumseagreen: '3cb371',\r
114 mediumslateblue: '7b68ee',\r
115 mediumspringgreen: '00fa9a',\r
116 mediumturquoise: '48d1cc',\r
117 mediumvioletred: 'c71585',\r
118 midnightblue: '191970',\r
119 mintcream: 'f5fffa',\r
120 mistyrose: 'ffe4e1',\r
121 moccasin: 'ffe4b5',\r
122 navajowhite: 'ffdead',\r
123 navy: '000080',\r
124 oldlace: 'fdf5e6',\r
125 olive: '808000',\r
126 olivedrab: '6b8e23',\r
127 orange: 'ffa500',\r
128 orangered: 'ff4500',\r
129 orchid: 'da70d6',\r
130 palegoldenrod: 'eee8aa',\r
131 palegreen: '98fb98',\r
132 paleturquoise: 'afeeee',\r
133 palevioletred: 'd87093',\r
134 papayawhip: 'ffefd5',\r
135 peachpuff: 'ffdab9',\r
136 peru: 'cd853f',\r
137 pink: 'ffc0cb',\r
138 plum: 'dda0dd',\r
139 powderblue: 'b0e0e6',\r
140 purple: '800080',\r
141 red: 'ff0000',\r
142 rosybrown: 'bc8f8f',\r
143 royalblue: '4169e1',\r
144 saddlebrown: '8b4513',\r
145 salmon: 'fa8072',\r
146 sandybrown: 'f4a460',\r
147 seagreen: '2e8b57',\r
148 seashell: 'fff5ee',\r
149 sienna: 'a0522d',\r
150 silver: 'c0c0c0',\r
151 skyblue: '87ceeb',\r
152 slateblue: '6a5acd',\r
153 slategray: '708090',\r
154 snow: 'fffafa',\r
155 springgreen: '00ff7f',\r
156 steelblue: '4682b4',\r
157 tan: 'd2b48c',\r
158 teal: '008080',\r
159 thistle: 'd8bfd8',\r
160 tomato: 'ff6347',\r
161 turquoise: '40e0d0',\r
162 violet: 'ee82ee',\r
163 violetred: 'd02090',\r
164 wheat: 'f5deb3',\r
165 white: 'ffffff',\r
166 whitesmoke: 'f5f5f5',\r
167 yellow: 'ffff00',\r
168 yellowgreen: '9acd32'\r
169 };\r
170 for (var key in simple_colors) {\r
171 if (color_string == key) {\r
172 color_string = simple_colors[key];\r
173 }\r
174 }\r
175 // emd of simple type-in colors\r
176\r
177 // array of color definition objects\r
178 var color_defs = [\r
179 {\r
180 re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,\r
181 example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\r
182 process: function (bits){\r
183 return [\r
184 parseInt(bits[1]),\r
185 parseInt(bits[2]),\r
186 parseInt(bits[3])\r
187 ];\r
188 }\r
189 },\r
190 {\r
191 re: /^(\w{2})(\w{2})(\w{2})$/,\r
192 example: ['#00ff00', '336699'],\r
193 process: function (bits){\r
194 return [\r
195 parseInt(bits[1], 16),\r
196 parseInt(bits[2], 16),\r
197 parseInt(bits[3], 16)\r
198 ];\r
199 }\r
200 },\r
201 {\r
202 re: /^(\w{1})(\w{1})(\w{1})$/,\r
203 example: ['#fb0', 'f0f'],\r
204 process: function (bits){\r
205 return [\r
206 parseInt(bits[1] + bits[1], 16),\r
207 parseInt(bits[2] + bits[2], 16),\r
208 parseInt(bits[3] + bits[3], 16)\r
209 ];\r
210 }\r
211 }\r
212 ];\r
213\r
214 // search through the definitions to find a match\r
215 for (var i = 0; i < color_defs.length; i++) {\r
216 var re = color_defs[i].re;\r
217 var processor = color_defs[i].process;\r
218 var bits = re.exec(color_string);\r
219 if (bits) {\r
220 channels = processor(bits);\r
221 this.r = channels[0];\r
222 this.g = channels[1];\r
223 this.b = channels[2];\r
224 this.ok = true;\r
225 }\r
226\r
227 }\r
228\r
229 // validate/cleanup values\r
230 this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\r
231 this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\r
232 this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\r
233\r
234 // some getters\r
235 this.toRGB = function () {\r
236 return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\r
237 }\r
238 this.toHex = function () {\r
239 var r = this.r.toString(16);\r
240 var g = this.g.toString(16);\r
241 var b = this.b.toString(16);\r
242 if (r.length == 1) r = '0' + r;\r
243 if (g.length == 1) g = '0' + g;\r
244 if (b.length == 1) b = '0' + b;\r
245 return '#' + r + g + b;\r
246 }\r
247\r
248\r
249}\r
250\r