Advertisement
stuppid_bot

Untitled

Jan 12th, 2017
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;(function () {
  2.   'use strict';
  3.  
  4.   let Color = {
  5.     ALICEBLUE: [240, 248, 255],
  6.     ANTIQUEWHITE: [250, 235, 215],
  7.     AQUA: [0, 255, 255],
  8.     AQUAMARINE: [127, 255, 212],
  9.     AZURE: [240, 255, 255],
  10.     BEIGE: [245, 245, 220],
  11.     BISQUE: [255, 228, 196],
  12.     BLACK: [0, 0, 0],
  13.     BLANCHEDALMOND: [255, 235, 205],
  14.     BLUE: [0, 0, 255],
  15.     BLUEVIOLET: [138, 43, 226],
  16.     BROWN: [165, 42, 42],
  17.     BURLYWOOD: [222, 184, 135],
  18.     CADETBLUE: [95, 158, 160],
  19.     CHARTREUSE: [127, 255, 0],
  20.     CHOCOLATE: [210, 105, 30],
  21.     CORAL: [255, 127, 80],
  22.     CORNFLOWERBLUE: [100, 149, 237],
  23.     CORNSILK: [255, 248, 220],
  24.     CRIMSON: [220, 20, 60],
  25.     CYAN: [0, 255, 255],
  26.     DARKBLUE: [0, 0, 139],
  27.     DARKCYAN: [0, 139, 139],
  28.     DARKGOLDENROD: [184, 134, 11],
  29.     DARKGRAY: [169, 169, 169],
  30.     DARKGREEN: [0, 100, 0],
  31.     DARKGREY: [169, 169, 169],
  32.     DARKKHAKI: [189, 183, 107],
  33.     DARKMAGENTA: [139, 0, 139],
  34.     DARKOLIVEGREEN: [85, 107, 47],
  35.     DARKORANGE: [255, 140, 0],
  36.     DARKORCHID: [153, 50, 204],
  37.     DARKRED: [139, 0, 0],
  38.     DARKSALMON: [233, 150, 122],
  39.     DARKSEAGREEN: [143, 188, 143],
  40.     DARKSLATEBLUE: [72, 61, 139],
  41.     DARKSLATEGRAY: [47, 79, 79],
  42.     DARKSLATEGREY: [47, 79, 79],
  43.     DARKTURQUOISE: [0, 206, 209],
  44.     DARKVIOLET: [148, 0, 211],
  45.     DEEPPINK: [255, 20, 147],
  46.     DEEPSKYBLUE: [0, 191, 255],
  47.     DIMGRAY: [105, 105, 105],
  48.     DIMGREY: [105, 105, 105],
  49.     DODGERBLUE: [30, 144, 255],
  50.     FIREBRICK: [178, 34, 34],
  51.     FLORALWHITE: [255, 250, 240],
  52.     FORESTGREEN: [34, 139, 34],
  53.     FUCHSIA: [255, 0, 255],
  54.     GAINSBORO: [220, 220, 220],
  55.     GHOSTWHITE: [248, 248, 255],
  56.     GOLD: [255, 215, 0],
  57.     GOLDENROD: [218, 165, 32],
  58.     GRAY: [128, 128, 128],
  59.     GREEN: [0, 128, 0],
  60.     GREENYELLOW: [173, 255, 47],
  61.     GREY: [128, 128, 128],
  62.     HONEYDEW: [240, 255, 240],
  63.     HOTPINK: [255, 105, 180],
  64.     INDIANRED: [205, 92, 92],
  65.     INDIGO: [75, 0, 130],
  66.     IVORY: [255, 255, 240],
  67.     KHAKI: [240, 230, 140],
  68.     LAVENDER: [230, 230, 250],
  69.     LAVENDERBLUSH: [255, 240, 245],
  70.     LAWNGREEN: [124, 252, 0],
  71.     LEMONCHIFFON: [255, 250, 205],
  72.     LIGHTBLUE: [173, 216, 230],
  73.     LIGHTCORAL: [240, 128, 128],
  74.     LIGHTCYAN: [224, 255, 255],
  75.     LIGHTGOLDENRODYELLOW: [250, 250, 210],
  76.     LIGHTGRAY: [211, 211, 211],
  77.     LIGHTGREEN: [144, 238, 144],
  78.     LIGHTGREY: [211, 211, 211],
  79.     LIGHTPINK: [255, 182, 193],
  80.     LIGHTSALMON: [255, 160, 122],
  81.     LIGHTSEAGREEN: [32, 178, 170],
  82.     LIGHTSKYBLUE: [135, 206, 250],
  83.     LIGHTSLATEGRAY: [119, 136, 153],
  84.     LIGHTSLATEGREY: [119, 136, 153],
  85.     LIGHTSTEELBLUE: [176, 196, 222],
  86.     LIGHTYELLOW: [255, 255, 224],
  87.     LIME: [0, 255, 0],
  88.     LIMEGREEN: [50, 205, 50],
  89.     LINEN: [250, 240, 230],
  90.     MAGENTA: [255, 0, 255],
  91.     MAROON: [128, 0, 0],
  92.     MEDIUMAQUAMARINE: [102, 205, 170],
  93.     MEDIUMBLUE: [0, 0, 205],
  94.     MEDIUMORCHID: [186, 85, 211],
  95.     MEDIUMPURPLE: [147, 112, 219],
  96.     MEDIUMSEAGREEN: [60, 179, 113],
  97.     MEDIUMSLATEBLUE: [123, 104, 238],
  98.     MEDIUMSPRINGGREEN: [0, 250, 154],
  99.     MEDIUMTURQUOISE: [72, 209, 204],
  100.     MEDIUMVIOLETRED: [199, 21, 133],
  101.     MIDNIGHTBLUE: [25, 25, 112],
  102.     MINTCREAM: [245, 255, 250],
  103.     MISTYROSE: [255, 228, 225],
  104.     MOCCASIN: [255, 228, 181],
  105.     NAVAJOWHITE: [255, 222, 173],
  106.     NAVY: [0, 0, 128],
  107.     OLDLACE: [253, 245, 230],
  108.     OLIVE: [128, 128, 0],
  109.     OLIVEDRAB: [107, 142, 35],
  110.     ORANGE: [255, 165, 0],
  111.     ORANGERED: [255, 69, 0],
  112.     ORCHID: [218, 112, 214],
  113.     PALEGOLDENROD: [238, 232, 170],
  114.     PALEGREEN: [152, 251, 152],
  115.     PALETURQUOISE: [175, 238, 238],
  116.     PALEVIOLETRED: [219, 112, 147],
  117.     PAPAYAWHIP: [255, 239, 213],
  118.     PEACHPUFF: [255, 218, 185],
  119.     PERU: [205, 133, 63],
  120.     PINK: [255, 192, 203],
  121.     PLUM: [221, 160, 221],
  122.     POWDERBLUE: [176, 224, 230],
  123.     PURPLE: [128, 0, 128],
  124.     RED: [255, 0, 0],
  125.     ROSYBROWN: [188, 143, 143],
  126.     ROYALBLUE: [65, 105, 225],
  127.     SADDLEBROWN: [139, 69, 19],
  128.     SALMON: [250, 128, 114],
  129.     SANDYBROWN: [244, 164, 96],
  130.     SEAGREEN: [46, 139, 87],
  131.     SEASHELL: [255, 245, 238],
  132.     SIENNA: [160, 82, 45],
  133.     SILVER: [192, 192, 192],
  134.     SKYBLUE: [135, 206, 235],
  135.     SLATEBLUE: [106, 90, 205],
  136.     SLATEGRAY: [112, 128, 144],
  137.     SLATEGREY: [112, 128, 144],
  138.     SNOW: [255, 250, 250],
  139.     SPRINGGREEN: [0, 255, 127],
  140.     STEELBLUE: [70, 130, 180],
  141.     TAN: [210, 180, 140],
  142.     TEAL: [0, 128, 128],
  143.     THISTLE: [216, 191, 216],
  144.     TOMATO: [255, 99, 71],
  145.     TURQUOISE: [64, 224, 208],
  146.     VIOLET: [238, 130, 238],
  147.     WHEAT: [245, 222, 179],
  148.     WHITE: [255, 255, 255],
  149.     WHITESMOKE: [245, 245, 245],
  150.     YELLOW: [255, 255, 0],
  151.     YELLOWGREEN: [154, 205, 50],
  152.   }
  153.  
  154.   // https://www.w3.org/TR/css3-color/#svg-color
  155.   let colors = {
  156.     aliceblue: 0xF0F8FF,
  157.     antiquewhite: 0xFAEBD7,
  158.     aqua: 0x00FFFF,
  159.     aquamarine: 0x7FFFD4,
  160.     azure: 0xF0FFFF,
  161.     beige: 0xF5F5DC,
  162.     bisque: 0xFFE4C4,
  163.     black: 0x000000,
  164.     blanchedalmond: 0xFFEBCD,
  165.     blue: 0x0000FF,
  166.     blueviolet: 0x8A2BE2,
  167.     brown: 0xA52A2A,
  168.     burlywood: 0xDEB887,
  169.     cadetblue: 0x5F9EA0,
  170.     chartreuse: 0x7FFF00,
  171.     chocolate: 0xD2691E,
  172.     coral: 0xFF7F50,
  173.     cornflowerblue: 0x6495ED,
  174.     cornsilk: 0xFFF8DC,
  175.     crimson: 0xDC143C,
  176.     cyan: 0x00FFFF,
  177.     darkblue: 0x00008B,
  178.     darkcyan: 0x008B8B,
  179.     darkgoldenrod: 0xB8860B,
  180.     darkgray: 0xA9A9A9,
  181.     darkgreen: 0x006400,
  182.     darkgrey: 0xA9A9A9,
  183.     darkkhaki: 0xBDB76B,
  184.     darkmagenta: 0x8B008B,
  185.     darkolivegreen: 0x556B2F,
  186.     darkorange: 0xFF8C00,
  187.     darkorchid: 0x9932CC,
  188.     darkred: 0x8B0000,
  189.     darksalmon: 0xE9967A,
  190.     darkseagreen: 0x8FBC8F,
  191.     darkslateblue: 0x483D8B,
  192.     darkslategray: 0x2F4F4F,
  193.     darkslategrey: 0x2F4F4F,
  194.     darkturquoise: 0x00CED1,
  195.     darkviolet: 0x9400D3,
  196.     deeppink: 0xFF1493,
  197.     deepskyblue: 0x00BFFF,
  198.     dimgray: 0x696969,
  199.     dimgrey: 0x696969,
  200.     dodgerblue: 0x1E90FF,
  201.     firebrick: 0xB22222,
  202.     floralwhite: 0xFFFAF0,
  203.     forestgreen: 0x228B22,
  204.     fuchsia: 0xFF00FF,
  205.     gainsboro: 0xDCDCDC,
  206.     ghostwhite: 0xF8F8FF,
  207.     gold: 0xFFD700,
  208.     goldenrod: 0xDAA520,
  209.     gray: 0x808080,
  210.     green: 0x008000,
  211.     greenyellow: 0xADFF2F,
  212.     grey: 0x808080,
  213.     honeydew: 0xF0FFF0,
  214.     hotpink: 0xFF69B4,
  215.     indianred: 0xCD5C5C,
  216.     indigo: 0x4B0082,
  217.     ivory: 0xFFFFF0,
  218.     khaki: 0xF0E68C,
  219.     lavender: 0xE6E6FA,
  220.     lavenderblush: 0xFFF0F5,
  221.     lawngreen: 0x7CFC00,
  222.     lemonchiffon: 0xFFFACD,
  223.     lightblue: 0xADD8E6,
  224.     lightcoral: 0xF08080,
  225.     lightcyan: 0xE0FFFF,
  226.     lightgoldenrodyellow: 0xFAFAD2,
  227.     lightgray: 0xD3D3D3,
  228.     lightgreen: 0x90EE90,
  229.     lightgrey: 0xD3D3D3,
  230.     lightpink: 0xFFB6C1,
  231.     lightsalmon: 0xFFA07A,
  232.     lightseagreen: 0x20B2AA,
  233.     lightskyblue: 0x87CEFA,
  234.     lightslategray: 0x778899,
  235.     lightslategrey: 0x778899,
  236.     lightsteelblue: 0xB0C4DE,
  237.     lightyellow: 0xFFFFE0,
  238.     lime: 0x00FF00,
  239.     limegreen: 0x32CD32,
  240.     linen: 0xFAF0E6,
  241.     magenta: 0xFF00FF,
  242.     maroon: 0x800000,
  243.     mediumaquamarine: 0x66CDAA,
  244.     mediumblue: 0x0000CD,
  245.     mediumorchid: 0xBA55D3,
  246.     mediumpurple: 0x9370DB,
  247.     mediumseagreen: 0x3CB371,
  248.     mediumslateblue: 0x7B68EE,
  249.     mediumspringgreen: 0x00FA9A,
  250.     mediumturquoise: 0x48D1CC,
  251.     mediumvioletred: 0xC71585,
  252.     midnightblue: 0x191970,
  253.     mintcream: 0xF5FFFA,
  254.     mistyrose: 0xFFE4E1,
  255.     moccasin: 0xFFE4B5,
  256.     navajowhite: 0xFFDEAD,
  257.     navy: 0x000080,
  258.     oldlace: 0xFDF5E6,
  259.     olive: 0x808000,
  260.     olivedrab: 0x6B8E23,
  261.     orange: 0xFFA500,
  262.     orangered: 0xFF4500,
  263.     orchid: 0xDA70D6,
  264.     palegoldenrod: 0xEEE8AA,
  265.     palegreen: 0x98FB98,
  266.     paleturquoise: 0xAFEEEE,
  267.     palevioletred: 0xDB7093,
  268.     papayawhip: 0xFFEFD5,
  269.     peachpuff: 0xFFDAB9,
  270.     peru: 0xCD853F,
  271.     pink: 0xFFC0CB,
  272.     plum: 0xDDA0DD,
  273.     powderblue: 0xB0E0E6,
  274.     purple: 0x800080,
  275.     red: 0xFF0000,
  276.     rosybrown: 0xBC8F8F,
  277.     royalblue: 0x4169E1,
  278.     saddlebrown: 0x8B4513,
  279.     salmon: 0xFA8072,
  280.     sandybrown: 0xF4A460,
  281.     seagreen: 0x2E8B57,
  282.     seashell: 0xFFF5EE,
  283.     sienna: 0xA0522D,
  284.     silver: 0xC0C0C0,
  285.     skyblue: 0x87CEEB,
  286.     slateblue: 0x6A5ACD,
  287.     slategray: 0x708090,
  288.     slategrey: 0x708090,
  289.     snow: 0xFFFAFA,
  290.     springgreen: 0x00FF7F,
  291.     steelblue: 0x4682B4,
  292.     tan: 0xD2B48C,
  293.     teal: 0x008080,
  294.     thistle: 0xD8BFD8,
  295.     tomato: 0xFF6347,
  296.     turquoise: 0x40E0D0,
  297.     violet: 0xEE82EE,
  298.     wheat: 0xF5DEB3,
  299.     white: 0xFFFFFF,
  300.     whitesmoke: 0xF5F5F5,
  301.     yellow: 0xFFFF00,
  302.     yellowgreen: 0x9ACD32
  303.   };
  304.  
  305.   // function clamp(n, min, max) {
  306.   //   return Math.max(min, Math.min(max, n));
  307.   // }
  308.  
  309.   function normalizeAngle(angle) {
  310.     while (angle < 0) {
  311.       angle += 360;
  312.     }
  313.     // 360=0
  314.     while (angle >= 360) {
  315.       angle -= 360;
  316.     }
  317.     return angle;
  318.   }
  319.  
  320.   function rgb2int(rgb) {
  321.     return ((rgb[0] & 255) << 16) | ((rgb[1] & 255) << 8) | (rgb[2] & 255);
  322.   }
  323.  
  324.   function int2rgb(v) {
  325.     let rgb = new Uint8ClampedArray(3);
  326.     rgb[0] = (v >> 16) & 255;
  327.     rgb[1] = (v >> 8) & 255;
  328.     rgb[2] = v & 255;
  329.     return rgb;
  330.   }
  331.  
  332.   function rgb2hex(rgb) {
  333.     return '#' + (0x1000000 + rgb2int(rgb)).toString(16).slice(1);
  334.   }
  335.  
  336.   function hex2rgb(h) {
  337.     h = /^\s*#((?:[0-9A-Fa-f]{3}){1,2})\s*$/.exec(h);
  338.     if (!h) {
  339.       return null;
  340.     }
  341.     h = h[1];
  342.     if (h.length === 3) {
  343.       h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];
  344.     }
  345.     h = parseInt(h, 16);
  346.     return int2rgb(h);
  347.   }
  348.  
  349.   //
  350.  
  351.   function rgb2hsl(rgb) {
  352.     // http://www.rapidtables.com/convert/color/rgb-to-hsl.htm
  353.     let r = rgb[0] / 255;
  354.     let g = rgb[1] / 255;
  355.     let b = rgb[2] / 255;
  356.     let max = Math.max(r, g, b);
  357.     let min = Math.min(r, g, b);
  358.     let d = max - min;
  359.     let h = 0;
  360.     if (d) {
  361.       if (max === r) {
  362.         h = (g - b) / d % 6;
  363.       } else if (max === g) {
  364.         h = (b - r) / d + 2;
  365.       } else {
  366.         h = (r - g) / d + 4;
  367.       }
  368.       h *= 60;
  369.     }
  370.     let l = (max + min) / 2;
  371.     let s = d ? d / (1 - Math.abs(2 * l - 1)) : 0;
  372.     // s *= 100;
  373.     // l *= 100;
  374.     let hsl = new Float64Array(3);
  375.     hsl[0] = h;
  376.     hsl[1] = s;
  377.     hsl[2] = l;
  378.     return hsl;
  379.   }
  380.  
  381.   function hsl2rgb(hsl) {
  382.     // http://www.rapidtables.com/convert/color/hsl-to-rgb.htm
  383.     let [h, s, l] = hsl;
  384.     h = normalizeAngle(h);
  385.     let c = (1 - Math.abs(2 * l - 1)) * s;
  386.     let x = c * (1 - Math.abs(h / 60 % 2 - 1));
  387.     let m = l - c / 2;
  388.     let r = 0;
  389.     let g = 0;
  390.     let b = 0;
  391.     if (h < 60) {
  392.       r = c;
  393.       g = x;
  394.     } else if (h < 120) {
  395.       r = x;
  396.       g = c;
  397.     } else if (h < 180) {
  398.       g = c;
  399.       b = x;
  400.     } else if (h < 240) {
  401.       g = x;
  402.       b = c;
  403.     } else if (h < 300) {
  404.       r = x;
  405.       b = c;
  406.     } else {
  407.       r = c;
  408.       b = x;
  409.     }
  410.     let rgb = new Uint8ClampedArray(3);
  411.     rgb[0] = (r + m) * 255;
  412.     rgb[1] = (g + m) * 255;
  413.     rgb[2] = (b + m) * 255;
  414.     return rgb;
  415.   }
  416.  
  417.   function lighter(rgb, factor = 0.5) {
  418.     let ret = new Uint8ClampedArray(3);
  419.     for (let i = 0; i < 3; ++i) {
  420.       ret[i] = rgb[i] + (255 - rgb[i]) * factor;
  421.     }
  422.     return ret;
  423.   }
  424.  
  425.   function darker(rgb, factor = 0.5) {
  426.     let ret = new Uint8ClampedArray(3);
  427.     for (let i = 0; i < 3; ++i) {
  428.       ret[i] = rgb[i] * (1 - factor);
  429.     }
  430.     return ret;
  431.   }
  432.  
  433.   // Interpolation
  434.   // http://www.alanzucconi.com/2016/01/06/colour-interpolation/
  435.  
  436.   function lerp(a, b, t = 0.5) {
  437.     let ret = new Uint8ClampedArray(3);
  438.     for (let i = 0; i < 3; ++i) {
  439.       ret[i] = a[i] + (b[i] - a[i]) * t;
  440.     }
  441.     return ret;
  442.   }
  443.  
  444.   // https://en.wikipedia.org/wiki/Tints_and_shades
  445.  
  446.   // Add white
  447.   // with (Color) tints(colors.orange)).forEach(showColor)
  448.   function tints(rgb, n = 5) {
  449.     let [h, s, l] = rgb2hsl(rgb);
  450.     n += 1;
  451.     let step = (1 - l) / n;
  452.     let ret = Array(n);
  453.     ret[0] = new Uint8ClampedArray(rgb);
  454.     for (let i = 1; i < n; ++i) {
  455.       ret[i] = hsl2rgb([h, s, l + step * i]);
  456.     }
  457.     return ret;
  458.   }
  459.  
  460.   // Add black
  461.   function shades(rgb, n = 5) {
  462.     let [h, s, l] = rgb2hsl(rgb);
  463.     n += 1;
  464.     let step = l / n;
  465.     let ret = Array(n);
  466.     ret[0] = new Uint8ClampedArray(rgb);
  467.     for (let i = 1; i < n; ++i) {
  468.       ret[i] = hsl2rgb([h, s, l - step * i]);
  469.     }
  470.     return ret;
  471.   }
  472.  
  473.   // Add grey
  474.   function tones(rgb, n = 5) {
  475.     let [h, s, l] = rgb2hsl(rgb);
  476.     n += 1;
  477.     let step = s / n;
  478.     let ret = Array(n);
  479.     ret[0] = new Uint8ClampedArray(rgb);
  480.     for (let i = 1; i < n; ++i) {
  481.       ret[i] = hsl2rgb([h, s - step * i, l]);
  482.     }
  483.     return ret;
  484.   }
  485.  
  486.   function hueShift(rgb, shift) {
  487.     let hsl = rgb2hsl(rgb);
  488.     hsl[0] += shift;
  489.     return hsl2rgb(hsl);
  490.   }
  491.  
  492.   function complement(rgb) {
  493.     return hueShift(rgb, 180);
  494.   }
  495.  
  496.   // Движемся по часовой стрелке
  497.   function triad(rgb, angle = 120) {
  498.     return [
  499.       rgb.slice(),
  500.       hueShift(rgb, angle),
  501.       hueShift(rgb, -angle)
  502.     ];
  503.   }
  504.  
  505.   function splitComplements(rgb) {
  506.     return triad(rgb, 150);
  507.   }
  508.  
  509.   function analogous(rgb) {
  510.     return triad(rgb, 30);
  511.   }
  512.  
  513.   // Double split complementary
  514.   function tetrad(rgb, angle = 90) {
  515.     return [
  516.       rgb.slice(),
  517.       hueShift(rgb, angle),
  518.       complement(rgb),
  519.       hueShift(rgb, 180 + angle)
  520.     ];
  521.   }
  522.  
  523.   // https://www.w3.org/TR/WCAG20/#relativeluminancedef
  524.   function luminance(rgb) {
  525.     let f = c => c > 0.03928 ? Math.pow((c + 0.055) / 1.055, 2.4) : c / 12.92;
  526.     let r = f(rgb[0] / 255);
  527.     let g = f(rgb[1] / 255);
  528.     let b = f(rgb[2] / 255);
  529.     return 0.2126 * r + 0.7152 * g + 0.0722 * b;
  530.   }
  531.  
  532.   // http://stackoverflow.com/a/3943023/2240578
  533.   function getTextColor(rgb) {
  534.     return luminance(rgb) > 0.179 ? 'black' : 'white';
  535.   }
  536.  
  537.   function showColor(rgb) {
  538.     let color = rgb2hex(rgb);
  539.     let textColor = getTextColor(rgb);
  540.     console.log('%c' + color, `background:${color};color:${textColor}`);
  541.   }
  542.  
  543.   /*
  544.   >>> found=re.findall(r'function\s+(\w+)', s)
  545.    */
  546.   let Color = {
  547.     rgb2int,
  548.     int2rgb,
  549.     rgb2hex,
  550.     hex2rgb,
  551.     name2rgb,
  552.     rgb2hsl,
  553.     hsl2rgb,
  554.     lighter,
  555.     darker,
  556.     lerp,
  557.     tints,
  558.     shades,
  559.     tones,
  560.     hueShift,
  561.     complement,
  562.     triad,
  563.     splitComplements,
  564.     analogous,
  565.     tetrad,
  566.     luminance,
  567.     getTextColor,
  568.     showColor,
  569.   };
  570.   if (typeof module === 'object' && module && module.exports) {
  571.     module.exports = Color;
  572.   } else {
  573.     window.Color = Color;
  574.   }
  575. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement