-/**\r
- * A class to parse color values\r
- *\r
- * NOTE: modified by danvk. I removed the "getHelpXML" function to reduce the\r
- * file size.\r
- *\r
- * @author Stoyan Stefanov <sstoo@gmail.com>\r
- * @link http://www.phpied.com/rgb-color-parser-in-javascript/\r
- * @license Use it if you like it\r
- */\r
-function RGBColor(color_string)\r
-{\r
- this.ok = false;\r
-\r
- // strip any leading #\r
- if (color_string.charAt(0) == '#') { // remove # if any\r
- color_string = color_string.substr(1,6);\r
- }\r
-\r
- color_string = color_string.replace(/ /g,'');\r
- color_string = color_string.toLowerCase();\r
-\r
- // before getting into regexps, try simple matches\r
- // and overwrite the input\r
- var simple_colors = {\r
- aliceblue: 'f0f8ff',\r
- antiquewhite: 'faebd7',\r
- aqua: '00ffff',\r
- aquamarine: '7fffd4',\r
- azure: 'f0ffff',\r
- beige: 'f5f5dc',\r
- bisque: 'ffe4c4',\r
- black: '000000',\r
- blanchedalmond: 'ffebcd',\r
- blue: '0000ff',\r
- blueviolet: '8a2be2',\r
- brown: 'a52a2a',\r
- burlywood: 'deb887',\r
- cadetblue: '5f9ea0',\r
- chartreuse: '7fff00',\r
- chocolate: 'd2691e',\r
- coral: 'ff7f50',\r
- cornflowerblue: '6495ed',\r
- cornsilk: 'fff8dc',\r
- crimson: 'dc143c',\r
- cyan: '00ffff',\r
- darkblue: '00008b',\r
- darkcyan: '008b8b',\r
- darkgoldenrod: 'b8860b',\r
- darkgray: 'a9a9a9',\r
- darkgreen: '006400',\r
- darkkhaki: 'bdb76b',\r
- darkmagenta: '8b008b',\r
- darkolivegreen: '556b2f',\r
- darkorange: 'ff8c00',\r
- darkorchid: '9932cc',\r
- darkred: '8b0000',\r
- darksalmon: 'e9967a',\r
- darkseagreen: '8fbc8f',\r
- darkslateblue: '483d8b',\r
- darkslategray: '2f4f4f',\r
- darkturquoise: '00ced1',\r
- darkviolet: '9400d3',\r
- deeppink: 'ff1493',\r
- deepskyblue: '00bfff',\r
- dimgray: '696969',\r
- dodgerblue: '1e90ff',\r
- feldspar: 'd19275',\r
- firebrick: 'b22222',\r
- floralwhite: 'fffaf0',\r
- forestgreen: '228b22',\r
- fuchsia: 'ff00ff',\r
- gainsboro: 'dcdcdc',\r
- ghostwhite: 'f8f8ff',\r
- gold: 'ffd700',\r
- goldenrod: 'daa520',\r
- gray: '808080',\r
- green: '008000',\r
- greenyellow: 'adff2f',\r
- honeydew: 'f0fff0',\r
- hotpink: 'ff69b4',\r
- indianred : 'cd5c5c',\r
- indigo : '4b0082',\r
- ivory: 'fffff0',\r
- khaki: 'f0e68c',\r
- lavender: 'e6e6fa',\r
- lavenderblush: 'fff0f5',\r
- lawngreen: '7cfc00',\r
- lemonchiffon: 'fffacd',\r
- lightblue: 'add8e6',\r
- lightcoral: 'f08080',\r
- lightcyan: 'e0ffff',\r
- lightgoldenrodyellow: 'fafad2',\r
- lightgrey: 'd3d3d3',\r
- lightgreen: '90ee90',\r
- lightpink: 'ffb6c1',\r
- lightsalmon: 'ffa07a',\r
- lightseagreen: '20b2aa',\r
- lightskyblue: '87cefa',\r
- lightslateblue: '8470ff',\r
- lightslategray: '778899',\r
- lightsteelblue: 'b0c4de',\r
- lightyellow: 'ffffe0',\r
- lime: '00ff00',\r
- limegreen: '32cd32',\r
- linen: 'faf0e6',\r
- magenta: 'ff00ff',\r
- maroon: '800000',\r
- mediumaquamarine: '66cdaa',\r
- mediumblue: '0000cd',\r
- mediumorchid: 'ba55d3',\r
- mediumpurple: '9370d8',\r
- mediumseagreen: '3cb371',\r
- mediumslateblue: '7b68ee',\r
- mediumspringgreen: '00fa9a',\r
- mediumturquoise: '48d1cc',\r
- mediumvioletred: 'c71585',\r
- midnightblue: '191970',\r
- mintcream: 'f5fffa',\r
- mistyrose: 'ffe4e1',\r
- moccasin: 'ffe4b5',\r
- navajowhite: 'ffdead',\r
- navy: '000080',\r
- oldlace: 'fdf5e6',\r
- olive: '808000',\r
- olivedrab: '6b8e23',\r
- orange: 'ffa500',\r
- orangered: 'ff4500',\r
- orchid: 'da70d6',\r
- palegoldenrod: 'eee8aa',\r
- palegreen: '98fb98',\r
- paleturquoise: 'afeeee',\r
- palevioletred: 'd87093',\r
- papayawhip: 'ffefd5',\r
- peachpuff: 'ffdab9',\r
- peru: 'cd853f',\r
- pink: 'ffc0cb',\r
- plum: 'dda0dd',\r
- powderblue: 'b0e0e6',\r
- purple: '800080',\r
- red: 'ff0000',\r
- rosybrown: 'bc8f8f',\r
- royalblue: '4169e1',\r
- saddlebrown: '8b4513',\r
- salmon: 'fa8072',\r
- sandybrown: 'f4a460',\r
- seagreen: '2e8b57',\r
- seashell: 'fff5ee',\r
- sienna: 'a0522d',\r
- silver: 'c0c0c0',\r
- skyblue: '87ceeb',\r
- slateblue: '6a5acd',\r
- slategray: '708090',\r
- snow: 'fffafa',\r
- springgreen: '00ff7f',\r
- steelblue: '4682b4',\r
- tan: 'd2b48c',\r
- teal: '008080',\r
- thistle: 'd8bfd8',\r
- tomato: 'ff6347',\r
- turquoise: '40e0d0',\r
- violet: 'ee82ee',\r
- violetred: 'd02090',\r
- wheat: 'f5deb3',\r
- white: 'ffffff',\r
- whitesmoke: 'f5f5f5',\r
- yellow: 'ffff00',\r
- yellowgreen: '9acd32'\r
- };\r
- for (var key in simple_colors) {\r
- if (color_string == key) {\r
- color_string = simple_colors[key];\r
- }\r
- }\r
- // emd of simple type-in colors\r
-\r
- // array of color definition objects\r
- var color_defs = [\r
- {\r
- re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,\r
- example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\r
- process: function (bits){\r
- return [\r
- parseInt(bits[1]),\r
- parseInt(bits[2]),\r
- parseInt(bits[3])\r
- ];\r
- }\r
- },\r
- {\r
- re: /^(\w{2})(\w{2})(\w{2})$/,\r
- example: ['#00ff00', '336699'],\r
- process: function (bits){\r
- return [\r
- parseInt(bits[1], 16),\r
- parseInt(bits[2], 16),\r
- parseInt(bits[3], 16)\r
- ];\r
- }\r
- },\r
- {\r
- re: /^(\w{1})(\w{1})(\w{1})$/,\r
- example: ['#fb0', 'f0f'],\r
- process: function (bits){\r
- return [\r
- parseInt(bits[1] + bits[1], 16),\r
- parseInt(bits[2] + bits[2], 16),\r
- parseInt(bits[3] + bits[3], 16)\r
- ];\r
- }\r
- }\r
- ];\r
-\r
- // search through the definitions to find a match\r
- for (var i = 0; i < color_defs.length; i++) {\r
- var re = color_defs[i].re;\r
- var processor = color_defs[i].process;\r
- var bits = re.exec(color_string);\r
- if (bits) {\r
- channels = processor(bits);\r
- this.r = channels[0];\r
- this.g = channels[1];\r
- this.b = channels[2];\r
- this.ok = true;\r
- }\r
-\r
- }\r
-\r
- // validate/cleanup values\r
- this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\r
- this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\r
- this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\r
-\r
- // some getters\r
- this.toRGB = function () {\r
- return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\r
- }\r
- this.toHex = function () {\r
- var r = this.r.toString(16);\r
- var g = this.g.toString(16);\r
- var b = this.b.toString(16);\r
- if (r.length == 1) r = '0' + r;\r
- if (g.length == 1) g = '0' + g;\r
- if (b.length == 1) b = '0' + b;\r
- return '#' + r + g + b;\r
- }\r
-\r
-\r
-}\r
-\r
+/**
+ * A class to parse color values
+ *
+ * NOTE: modified by danvk. I removed the "getHelpXML" function to reduce the
+ * file size.
+ *
+ * @author Stoyan Stefanov <sstoo@gmail.com>
+ * @link http://www.phpied.com/rgb-color-parser-in-javascript/
+ * @license Use it if you like it
+ */
+function RGBColor(color_string)
+{
+ this.ok = false;
+
+ // strip any leading #
+ if (color_string.charAt(0) == '#') { // remove # if any
+ color_string = color_string.substr(1,6);
+ }
+
+ color_string = color_string.replace(/ /g,'');
+ color_string = color_string.toLowerCase();
+
+ // before getting into regexps, try simple matches
+ // and overwrite the input
+ var simple_colors = {
+ aliceblue: 'f0f8ff',
+ antiquewhite: 'faebd7',
+ aqua: '00ffff',
+ aquamarine: '7fffd4',
+ azure: 'f0ffff',
+ beige: 'f5f5dc',
+ bisque: 'ffe4c4',
+ black: '000000',
+ blanchedalmond: 'ffebcd',
+ blue: '0000ff',
+ blueviolet: '8a2be2',
+ brown: 'a52a2a',
+ burlywood: 'deb887',
+ cadetblue: '5f9ea0',
+ chartreuse: '7fff00',
+ chocolate: 'd2691e',
+ coral: 'ff7f50',
+ cornflowerblue: '6495ed',
+ cornsilk: 'fff8dc',
+ crimson: 'dc143c',
+ cyan: '00ffff',
+ darkblue: '00008b',
+ darkcyan: '008b8b',
+ darkgoldenrod: 'b8860b',
+ darkgray: 'a9a9a9',
+ darkgreen: '006400',
+ darkkhaki: 'bdb76b',
+ darkmagenta: '8b008b',
+ darkolivegreen: '556b2f',
+ darkorange: 'ff8c00',
+ darkorchid: '9932cc',
+ darkred: '8b0000',
+ darksalmon: 'e9967a',
+ darkseagreen: '8fbc8f',
+ darkslateblue: '483d8b',
+ darkslategray: '2f4f4f',
+ darkturquoise: '00ced1',
+ darkviolet: '9400d3',
+ deeppink: 'ff1493',
+ deepskyblue: '00bfff',
+ dimgray: '696969',
+ dodgerblue: '1e90ff',
+ feldspar: 'd19275',
+ firebrick: 'b22222',
+ floralwhite: 'fffaf0',
+ forestgreen: '228b22',
+ fuchsia: 'ff00ff',
+ gainsboro: 'dcdcdc',
+ ghostwhite: 'f8f8ff',
+ gold: 'ffd700',
+ goldenrod: 'daa520',
+ gray: '808080',
+ green: '008000',
+ greenyellow: 'adff2f',
+ honeydew: 'f0fff0',
+ hotpink: 'ff69b4',
+ indianred : 'cd5c5c',
+ indigo : '4b0082',
+ ivory: 'fffff0',
+ khaki: 'f0e68c',
+ lavender: 'e6e6fa',
+ lavenderblush: 'fff0f5',
+ lawngreen: '7cfc00',
+ lemonchiffon: 'fffacd',
+ lightblue: 'add8e6',
+ lightcoral: 'f08080',
+ lightcyan: 'e0ffff',
+ lightgoldenrodyellow: 'fafad2',
+ lightgrey: 'd3d3d3',
+ lightgreen: '90ee90',
+ lightpink: 'ffb6c1',
+ lightsalmon: 'ffa07a',
+ lightseagreen: '20b2aa',
+ lightskyblue: '87cefa',
+ lightslateblue: '8470ff',
+ lightslategray: '778899',
+ lightsteelblue: 'b0c4de',
+ lightyellow: 'ffffe0',
+ lime: '00ff00',
+ limegreen: '32cd32',
+ linen: 'faf0e6',
+ magenta: 'ff00ff',
+ maroon: '800000',
+ mediumaquamarine: '66cdaa',
+ mediumblue: '0000cd',
+ mediumorchid: 'ba55d3',
+ mediumpurple: '9370d8',
+ mediumseagreen: '3cb371',
+ mediumslateblue: '7b68ee',
+ mediumspringgreen: '00fa9a',
+ mediumturquoise: '48d1cc',
+ mediumvioletred: 'c71585',
+ midnightblue: '191970',
+ mintcream: 'f5fffa',
+ mistyrose: 'ffe4e1',
+ moccasin: 'ffe4b5',
+ navajowhite: 'ffdead',
+ navy: '000080',
+ oldlace: 'fdf5e6',
+ olive: '808000',
+ olivedrab: '6b8e23',
+ orange: 'ffa500',
+ orangered: 'ff4500',
+ orchid: 'da70d6',
+ palegoldenrod: 'eee8aa',
+ palegreen: '98fb98',
+ paleturquoise: 'afeeee',
+ palevioletred: 'd87093',
+ papayawhip: 'ffefd5',
+ peachpuff: 'ffdab9',
+ peru: 'cd853f',
+ pink: 'ffc0cb',
+ plum: 'dda0dd',
+ powderblue: 'b0e0e6',
+ purple: '800080',
+ red: 'ff0000',
+ rosybrown: 'bc8f8f',
+ royalblue: '4169e1',
+ saddlebrown: '8b4513',
+ salmon: 'fa8072',
+ sandybrown: 'f4a460',
+ seagreen: '2e8b57',
+ seashell: 'fff5ee',
+ sienna: 'a0522d',
+ silver: 'c0c0c0',
+ skyblue: '87ceeb',
+ slateblue: '6a5acd',
+ slategray: '708090',
+ snow: 'fffafa',
+ springgreen: '00ff7f',
+ steelblue: '4682b4',
+ tan: 'd2b48c',
+ teal: '008080',
+ thistle: 'd8bfd8',
+ tomato: 'ff6347',
+ turquoise: '40e0d0',
+ violet: 'ee82ee',
+ violetred: 'd02090',
+ wheat: 'f5deb3',
+ white: 'ffffff',
+ whitesmoke: 'f5f5f5',
+ yellow: 'ffff00',
+ yellowgreen: '9acd32'
+ };
+ for (var key in simple_colors) {
+ if (color_string == key) {
+ color_string = simple_colors[key];
+ }
+ }
+ // emd of simple type-in colors
+
+ // array of color definition objects
+ var color_defs = [
+ {
+ re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+ example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
+ process: function (bits){
+ return [
+ parseInt(bits[1]),
+ parseInt(bits[2]),
+ parseInt(bits[3])
+ ];
+ }
+ },
+ {
+ re: /^(\w{2})(\w{2})(\w{2})$/,
+ example: ['#00ff00', '336699'],
+ process: function (bits){
+ return [
+ parseInt(bits[1], 16),
+ parseInt(bits[2], 16),
+ parseInt(bits[3], 16)
+ ];
+ }
+ },
+ {
+ re: /^(\w{1})(\w{1})(\w{1})$/,
+ example: ['#fb0', 'f0f'],
+ process: function (bits){
+ return [
+ parseInt(bits[1] + bits[1], 16),
+ parseInt(bits[2] + bits[2], 16),
+ parseInt(bits[3] + bits[3], 16)
+ ];
+ }
+ }
+ ];
+
+ // search through the definitions to find a match
+ for (var i = 0; i < color_defs.length; i++) {
+ var re = color_defs[i].re;
+ var processor = color_defs[i].process;
+ var bits = re.exec(color_string);
+ if (bits) {
+ channels = processor(bits);
+ this.r = channels[0];
+ this.g = channels[1];
+ this.b = channels[2];
+ this.ok = true;
+ }
+
+ }
+
+ // validate/cleanup values
+ this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
+ this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
+ this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
+
+ // some getters
+ this.toRGB = function () {
+ return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
+ }
+ this.toHex = function () {
+ var r = this.r.toString(16);
+ var g = this.g.toString(16);
+ var b = this.b.toString(16);
+ if (r.length == 1) r = '0' + r;
+ if (g.length == 1) g = '0' + g;
+ if (b.length == 1) b = '0' + b;
+ return '#' + r + g + b;
+ }
+
+
+}
+