Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;(function () {
- 'use strict';
- let Color = {
- ALICEBLUE: [240, 248, 255],
- ANTIQUEWHITE: [250, 235, 215],
- AQUA: [0, 255, 255],
- AQUAMARINE: [127, 255, 212],
- AZURE: [240, 255, 255],
- BEIGE: [245, 245, 220],
- BISQUE: [255, 228, 196],
- BLACK: [0, 0, 0],
- BLANCHEDALMOND: [255, 235, 205],
- BLUE: [0, 0, 255],
- BLUEVIOLET: [138, 43, 226],
- BROWN: [165, 42, 42],
- BURLYWOOD: [222, 184, 135],
- CADETBLUE: [95, 158, 160],
- CHARTREUSE: [127, 255, 0],
- CHOCOLATE: [210, 105, 30],
- CORAL: [255, 127, 80],
- CORNFLOWERBLUE: [100, 149, 237],
- CORNSILK: [255, 248, 220],
- CRIMSON: [220, 20, 60],
- CYAN: [0, 255, 255],
- DARKBLUE: [0, 0, 139],
- DARKCYAN: [0, 139, 139],
- DARKGOLDENROD: [184, 134, 11],
- DARKGRAY: [169, 169, 169],
- DARKGREEN: [0, 100, 0],
- DARKGREY: [169, 169, 169],
- DARKKHAKI: [189, 183, 107],
- DARKMAGENTA: [139, 0, 139],
- DARKOLIVEGREEN: [85, 107, 47],
- DARKORANGE: [255, 140, 0],
- DARKORCHID: [153, 50, 204],
- DARKRED: [139, 0, 0],
- DARKSALMON: [233, 150, 122],
- DARKSEAGREEN: [143, 188, 143],
- DARKSLATEBLUE: [72, 61, 139],
- DARKSLATEGRAY: [47, 79, 79],
- DARKSLATEGREY: [47, 79, 79],
- DARKTURQUOISE: [0, 206, 209],
- DARKVIOLET: [148, 0, 211],
- DEEPPINK: [255, 20, 147],
- DEEPSKYBLUE: [0, 191, 255],
- DIMGRAY: [105, 105, 105],
- DIMGREY: [105, 105, 105],
- DODGERBLUE: [30, 144, 255],
- FIREBRICK: [178, 34, 34],
- FLORALWHITE: [255, 250, 240],
- FORESTGREEN: [34, 139, 34],
- FUCHSIA: [255, 0, 255],
- GAINSBORO: [220, 220, 220],
- GHOSTWHITE: [248, 248, 255],
- GOLD: [255, 215, 0],
- GOLDENROD: [218, 165, 32],
- GRAY: [128, 128, 128],
- GREEN: [0, 128, 0],
- GREENYELLOW: [173, 255, 47],
- GREY: [128, 128, 128],
- HONEYDEW: [240, 255, 240],
- HOTPINK: [255, 105, 180],
- INDIANRED: [205, 92, 92],
- INDIGO: [75, 0, 130],
- IVORY: [255, 255, 240],
- KHAKI: [240, 230, 140],
- LAVENDER: [230, 230, 250],
- LAVENDERBLUSH: [255, 240, 245],
- LAWNGREEN: [124, 252, 0],
- LEMONCHIFFON: [255, 250, 205],
- LIGHTBLUE: [173, 216, 230],
- LIGHTCORAL: [240, 128, 128],
- LIGHTCYAN: [224, 255, 255],
- LIGHTGOLDENRODYELLOW: [250, 250, 210],
- LIGHTGRAY: [211, 211, 211],
- LIGHTGREEN: [144, 238, 144],
- LIGHTGREY: [211, 211, 211],
- LIGHTPINK: [255, 182, 193],
- LIGHTSALMON: [255, 160, 122],
- LIGHTSEAGREEN: [32, 178, 170],
- LIGHTSKYBLUE: [135, 206, 250],
- LIGHTSLATEGRAY: [119, 136, 153],
- LIGHTSLATEGREY: [119, 136, 153],
- LIGHTSTEELBLUE: [176, 196, 222],
- LIGHTYELLOW: [255, 255, 224],
- LIME: [0, 255, 0],
- LIMEGREEN: [50, 205, 50],
- LINEN: [250, 240, 230],
- MAGENTA: [255, 0, 255],
- MAROON: [128, 0, 0],
- MEDIUMAQUAMARINE: [102, 205, 170],
- MEDIUMBLUE: [0, 0, 205],
- MEDIUMORCHID: [186, 85, 211],
- MEDIUMPURPLE: [147, 112, 219],
- MEDIUMSEAGREEN: [60, 179, 113],
- MEDIUMSLATEBLUE: [123, 104, 238],
- MEDIUMSPRINGGREEN: [0, 250, 154],
- MEDIUMTURQUOISE: [72, 209, 204],
- MEDIUMVIOLETRED: [199, 21, 133],
- MIDNIGHTBLUE: [25, 25, 112],
- MINTCREAM: [245, 255, 250],
- MISTYROSE: [255, 228, 225],
- MOCCASIN: [255, 228, 181],
- NAVAJOWHITE: [255, 222, 173],
- NAVY: [0, 0, 128],
- OLDLACE: [253, 245, 230],
- OLIVE: [128, 128, 0],
- OLIVEDRAB: [107, 142, 35],
- ORANGE: [255, 165, 0],
- ORANGERED: [255, 69, 0],
- ORCHID: [218, 112, 214],
- PALEGOLDENROD: [238, 232, 170],
- PALEGREEN: [152, 251, 152],
- PALETURQUOISE: [175, 238, 238],
- PALEVIOLETRED: [219, 112, 147],
- PAPAYAWHIP: [255, 239, 213],
- PEACHPUFF: [255, 218, 185],
- PERU: [205, 133, 63],
- PINK: [255, 192, 203],
- PLUM: [221, 160, 221],
- POWDERBLUE: [176, 224, 230],
- PURPLE: [128, 0, 128],
- RED: [255, 0, 0],
- ROSYBROWN: [188, 143, 143],
- ROYALBLUE: [65, 105, 225],
- SADDLEBROWN: [139, 69, 19],
- SALMON: [250, 128, 114],
- SANDYBROWN: [244, 164, 96],
- SEAGREEN: [46, 139, 87],
- SEASHELL: [255, 245, 238],
- SIENNA: [160, 82, 45],
- SILVER: [192, 192, 192],
- SKYBLUE: [135, 206, 235],
- SLATEBLUE: [106, 90, 205],
- SLATEGRAY: [112, 128, 144],
- SLATEGREY: [112, 128, 144],
- SNOW: [255, 250, 250],
- SPRINGGREEN: [0, 255, 127],
- STEELBLUE: [70, 130, 180],
- TAN: [210, 180, 140],
- TEAL: [0, 128, 128],
- THISTLE: [216, 191, 216],
- TOMATO: [255, 99, 71],
- TURQUOISE: [64, 224, 208],
- VIOLET: [238, 130, 238],
- WHEAT: [245, 222, 179],
- WHITE: [255, 255, 255],
- WHITESMOKE: [245, 245, 245],
- YELLOW: [255, 255, 0],
- YELLOWGREEN: [154, 205, 50],
- }
- // https://www.w3.org/TR/css3-color/#svg-color
- let colors = {
- aliceblue: 0xF0F8FF,
- antiquewhite: 0xFAEBD7,
- aqua: 0x00FFFF,
- aquamarine: 0x7FFFD4,
- azure: 0xF0FFFF,
- beige: 0xF5F5DC,
- bisque: 0xFFE4C4,
- black: 0x000000,
- blanchedalmond: 0xFFEBCD,
- blue: 0x0000FF,
- blueviolet: 0x8A2BE2,
- brown: 0xA52A2A,
- burlywood: 0xDEB887,
- cadetblue: 0x5F9EA0,
- chartreuse: 0x7FFF00,
- chocolate: 0xD2691E,
- coral: 0xFF7F50,
- cornflowerblue: 0x6495ED,
- cornsilk: 0xFFF8DC,
- crimson: 0xDC143C,
- cyan: 0x00FFFF,
- darkblue: 0x00008B,
- darkcyan: 0x008B8B,
- darkgoldenrod: 0xB8860B,
- darkgray: 0xA9A9A9,
- darkgreen: 0x006400,
- darkgrey: 0xA9A9A9,
- darkkhaki: 0xBDB76B,
- darkmagenta: 0x8B008B,
- darkolivegreen: 0x556B2F,
- darkorange: 0xFF8C00,
- darkorchid: 0x9932CC,
- darkred: 0x8B0000,
- darksalmon: 0xE9967A,
- darkseagreen: 0x8FBC8F,
- darkslateblue: 0x483D8B,
- darkslategray: 0x2F4F4F,
- darkslategrey: 0x2F4F4F,
- darkturquoise: 0x00CED1,
- darkviolet: 0x9400D3,
- deeppink: 0xFF1493,
- deepskyblue: 0x00BFFF,
- dimgray: 0x696969,
- dimgrey: 0x696969,
- dodgerblue: 0x1E90FF,
- firebrick: 0xB22222,
- floralwhite: 0xFFFAF0,
- forestgreen: 0x228B22,
- fuchsia: 0xFF00FF,
- gainsboro: 0xDCDCDC,
- ghostwhite: 0xF8F8FF,
- gold: 0xFFD700,
- goldenrod: 0xDAA520,
- gray: 0x808080,
- green: 0x008000,
- greenyellow: 0xADFF2F,
- grey: 0x808080,
- honeydew: 0xF0FFF0,
- hotpink: 0xFF69B4,
- indianred: 0xCD5C5C,
- indigo: 0x4B0082,
- ivory: 0xFFFFF0,
- khaki: 0xF0E68C,
- lavender: 0xE6E6FA,
- lavenderblush: 0xFFF0F5,
- lawngreen: 0x7CFC00,
- lemonchiffon: 0xFFFACD,
- lightblue: 0xADD8E6,
- lightcoral: 0xF08080,
- lightcyan: 0xE0FFFF,
- lightgoldenrodyellow: 0xFAFAD2,
- lightgray: 0xD3D3D3,
- lightgreen: 0x90EE90,
- lightgrey: 0xD3D3D3,
- lightpink: 0xFFB6C1,
- lightsalmon: 0xFFA07A,
- lightseagreen: 0x20B2AA,
- lightskyblue: 0x87CEFA,
- lightslategray: 0x778899,
- lightslategrey: 0x778899,
- lightsteelblue: 0xB0C4DE,
- lightyellow: 0xFFFFE0,
- lime: 0x00FF00,
- limegreen: 0x32CD32,
- linen: 0xFAF0E6,
- magenta: 0xFF00FF,
- maroon: 0x800000,
- mediumaquamarine: 0x66CDAA,
- mediumblue: 0x0000CD,
- mediumorchid: 0xBA55D3,
- mediumpurple: 0x9370DB,
- mediumseagreen: 0x3CB371,
- mediumslateblue: 0x7B68EE,
- mediumspringgreen: 0x00FA9A,
- mediumturquoise: 0x48D1CC,
- mediumvioletred: 0xC71585,
- midnightblue: 0x191970,
- mintcream: 0xF5FFFA,
- mistyrose: 0xFFE4E1,
- moccasin: 0xFFE4B5,
- navajowhite: 0xFFDEAD,
- navy: 0x000080,
- oldlace: 0xFDF5E6,
- olive: 0x808000,
- olivedrab: 0x6B8E23,
- orange: 0xFFA500,
- orangered: 0xFF4500,
- orchid: 0xDA70D6,
- palegoldenrod: 0xEEE8AA,
- palegreen: 0x98FB98,
- paleturquoise: 0xAFEEEE,
- palevioletred: 0xDB7093,
- papayawhip: 0xFFEFD5,
- peachpuff: 0xFFDAB9,
- peru: 0xCD853F,
- pink: 0xFFC0CB,
- plum: 0xDDA0DD,
- powderblue: 0xB0E0E6,
- purple: 0x800080,
- red: 0xFF0000,
- rosybrown: 0xBC8F8F,
- royalblue: 0x4169E1,
- saddlebrown: 0x8B4513,
- salmon: 0xFA8072,
- sandybrown: 0xF4A460,
- seagreen: 0x2E8B57,
- seashell: 0xFFF5EE,
- sienna: 0xA0522D,
- silver: 0xC0C0C0,
- skyblue: 0x87CEEB,
- slateblue: 0x6A5ACD,
- slategray: 0x708090,
- slategrey: 0x708090,
- snow: 0xFFFAFA,
- springgreen: 0x00FF7F,
- steelblue: 0x4682B4,
- tan: 0xD2B48C,
- teal: 0x008080,
- thistle: 0xD8BFD8,
- tomato: 0xFF6347,
- turquoise: 0x40E0D0,
- violet: 0xEE82EE,
- wheat: 0xF5DEB3,
- white: 0xFFFFFF,
- whitesmoke: 0xF5F5F5,
- yellow: 0xFFFF00,
- yellowgreen: 0x9ACD32
- };
- // function clamp(n, min, max) {
- // return Math.max(min, Math.min(max, n));
- // }
- function normalizeAngle(angle) {
- while (angle < 0) {
- angle += 360;
- }
- // 360=0
- while (angle >= 360) {
- angle -= 360;
- }
- return angle;
- }
- function rgb2int(rgb) {
- return ((rgb[0] & 255) << 16) | ((rgb[1] & 255) << 8) | (rgb[2] & 255);
- }
- function int2rgb(v) {
- let rgb = new Uint8ClampedArray(3);
- rgb[0] = (v >> 16) & 255;
- rgb[1] = (v >> 8) & 255;
- rgb[2] = v & 255;
- return rgb;
- }
- function rgb2hex(rgb) {
- return '#' + (0x1000000 + rgb2int(rgb)).toString(16).slice(1);
- }
- function hex2rgb(h) {
- h = /^\s*#((?:[0-9A-Fa-f]{3}){1,2})\s*$/.exec(h);
- if (!h) {
- return null;
- }
- h = h[1];
- if (h.length === 3) {
- h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];
- }
- h = parseInt(h, 16);
- return int2rgb(h);
- }
- //
- function rgb2hsl(rgb) {
- // http://www.rapidtables.com/convert/color/rgb-to-hsl.htm
- let r = rgb[0] / 255;
- let g = rgb[1] / 255;
- let b = rgb[2] / 255;
- let max = Math.max(r, g, b);
- let min = Math.min(r, g, b);
- let d = max - min;
- let h = 0;
- if (d) {
- if (max === r) {
- h = (g - b) / d % 6;
- } else if (max === g) {
- h = (b - r) / d + 2;
- } else {
- h = (r - g) / d + 4;
- }
- h *= 60;
- }
- let l = (max + min) / 2;
- let s = d ? d / (1 - Math.abs(2 * l - 1)) : 0;
- // s *= 100;
- // l *= 100;
- let hsl = new Float64Array(3);
- hsl[0] = h;
- hsl[1] = s;
- hsl[2] = l;
- return hsl;
- }
- function hsl2rgb(hsl) {
- // http://www.rapidtables.com/convert/color/hsl-to-rgb.htm
- let [h, s, l] = hsl;
- h = normalizeAngle(h);
- let c = (1 - Math.abs(2 * l - 1)) * s;
- let x = c * (1 - Math.abs(h / 60 % 2 - 1));
- let m = l - c / 2;
- let r = 0;
- let g = 0;
- let b = 0;
- if (h < 60) {
- r = c;
- g = x;
- } else if (h < 120) {
- r = x;
- g = c;
- } else if (h < 180) {
- g = c;
- b = x;
- } else if (h < 240) {
- g = x;
- b = c;
- } else if (h < 300) {
- r = x;
- b = c;
- } else {
- r = c;
- b = x;
- }
- let rgb = new Uint8ClampedArray(3);
- rgb[0] = (r + m) * 255;
- rgb[1] = (g + m) * 255;
- rgb[2] = (b + m) * 255;
- return rgb;
- }
- function lighter(rgb, factor = 0.5) {
- let ret = new Uint8ClampedArray(3);
- for (let i = 0; i < 3; ++i) {
- ret[i] = rgb[i] + (255 - rgb[i]) * factor;
- }
- return ret;
- }
- function darker(rgb, factor = 0.5) {
- let ret = new Uint8ClampedArray(3);
- for (let i = 0; i < 3; ++i) {
- ret[i] = rgb[i] * (1 - factor);
- }
- return ret;
- }
- // Interpolation
- // http://www.alanzucconi.com/2016/01/06/colour-interpolation/
- function lerp(a, b, t = 0.5) {
- let ret = new Uint8ClampedArray(3);
- for (let i = 0; i < 3; ++i) {
- ret[i] = a[i] + (b[i] - a[i]) * t;
- }
- return ret;
- }
- // https://en.wikipedia.org/wiki/Tints_and_shades
- // Add white
- // with (Color) tints(colors.orange)).forEach(showColor)
- function tints(rgb, n = 5) {
- let [h, s, l] = rgb2hsl(rgb);
- n += 1;
- let step = (1 - l) / n;
- let ret = Array(n);
- ret[0] = new Uint8ClampedArray(rgb);
- for (let i = 1; i < n; ++i) {
- ret[i] = hsl2rgb([h, s, l + step * i]);
- }
- return ret;
- }
- // Add black
- function shades(rgb, n = 5) {
- let [h, s, l] = rgb2hsl(rgb);
- n += 1;
- let step = l / n;
- let ret = Array(n);
- ret[0] = new Uint8ClampedArray(rgb);
- for (let i = 1; i < n; ++i) {
- ret[i] = hsl2rgb([h, s, l - step * i]);
- }
- return ret;
- }
- // Add grey
- function tones(rgb, n = 5) {
- let [h, s, l] = rgb2hsl(rgb);
- n += 1;
- let step = s / n;
- let ret = Array(n);
- ret[0] = new Uint8ClampedArray(rgb);
- for (let i = 1; i < n; ++i) {
- ret[i] = hsl2rgb([h, s - step * i, l]);
- }
- return ret;
- }
- function hueShift(rgb, shift) {
- let hsl = rgb2hsl(rgb);
- hsl[0] += shift;
- return hsl2rgb(hsl);
- }
- function complement(rgb) {
- return hueShift(rgb, 180);
- }
- // Движемся по часовой стрелке
- function triad(rgb, angle = 120) {
- return [
- rgb.slice(),
- hueShift(rgb, angle),
- hueShift(rgb, -angle)
- ];
- }
- function splitComplements(rgb) {
- return triad(rgb, 150);
- }
- function analogous(rgb) {
- return triad(rgb, 30);
- }
- // Double split complementary
- function tetrad(rgb, angle = 90) {
- return [
- rgb.slice(),
- hueShift(rgb, angle),
- complement(rgb),
- hueShift(rgb, 180 + angle)
- ];
- }
- // https://www.w3.org/TR/WCAG20/#relativeluminancedef
- function luminance(rgb) {
- let f = c => c > 0.03928 ? Math.pow((c + 0.055) / 1.055, 2.4) : c / 12.92;
- let r = f(rgb[0] / 255);
- let g = f(rgb[1] / 255);
- let b = f(rgb[2] / 255);
- return 0.2126 * r + 0.7152 * g + 0.0722 * b;
- }
- // http://stackoverflow.com/a/3943023/2240578
- function getTextColor(rgb) {
- return luminance(rgb) > 0.179 ? 'black' : 'white';
- }
- function showColor(rgb) {
- let color = rgb2hex(rgb);
- let textColor = getTextColor(rgb);
- console.log('%c' + color, `background:${color};color:${textColor}`);
- }
- /*
- >>> found=re.findall(r'function\s+(\w+)', s)
- */
- let Color = {
- rgb2int,
- int2rgb,
- rgb2hex,
- hex2rgb,
- name2rgb,
- rgb2hsl,
- hsl2rgb,
- lighter,
- darker,
- lerp,
- tints,
- shades,
- tones,
- hueShift,
- complement,
- triad,
- splitComplements,
- analogous,
- tetrad,
- luminance,
- getTextColor,
- showColor,
- };
- if (typeof module === 'object' && module && module.exports) {
- module.exports = Color;
- } else {
- window.Color = Color;
- }
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement