Advertisement
Guest User

Untitled

a guest
May 24th, 2015
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. var colors = {};
  2.  
  3. colors.hslToRgb = function(hsl) {
  4. var h = hsl[0];
  5. var s = hsl[1];
  6. var l = hsl[2];
  7. var m1,
  8. m2;
  9.  
  10. /* Some simple corrections for h, s and l. */
  11. h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;
  12. s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;
  13. l = l < 0 ? 0 : l > 1 ? 1 : l;
  14.  
  15. /* From FvD 13.37, CSS Color Module Level 3 */
  16. m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
  17. m1 = 2 * l - m2;
  18.  
  19. function v(h) {
  20. if (h > 360) h -= 360;
  21. else if (h < 0) h += 360;
  22. if (h < 60) return m1 + (m2 - m1) * h / 60;
  23. if (h < 180) return m2;
  24. if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
  25. return m1;
  26. }
  27.  
  28. function vv(h) {
  29. return Math.round(v(h) * 255);
  30. }
  31.  
  32. return [vv(h + 120), vv(h), vv(h - 120)];
  33. };
  34.  
  35. colors.rgbToHsl = function(rgb) {
  36. var r = rgb[0],
  37. g = rgb[1],
  38. b = rgb[2];
  39.  
  40. var min = Math.min(r /= 255, g /= 255, b /= 255),
  41. max = Math.max(r, g, b),
  42. d = max - min,
  43. h,
  44. s,
  45. l = (max + min) / 2;
  46. if (d) {
  47. s = l < .5 ? d / (max + min) : d / (2 - max - min);
  48. if (r == max) h = (g - b) / d + (g < b ? 6 : 0);
  49. else if (g == max) h = (b - r) / d + 2;
  50. else h = (r - g) / d + 4;
  51. h *= 60;
  52. } else {
  53. h = NaN;
  54. s = l > 0 && l < 1 ? 0 : h;
  55. }
  56. return [h, s, l]
  57. };
  58.  
  59. colors.hexToRgb = function(format) {
  60. var r, g, b, color;
  61.  
  62. if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) {
  63. if (format.length === 4) {
  64. r = (color & 0xf00) >> 4; r = (r >> 4) | r;
  65. g = (color & 0xf0); g = (g >> 4) | g;
  66. b = (color & 0xf); b = (b << 4) | b;
  67. } else if (format.length === 7) {
  68. r = (color & 0xff0000) >> 16;
  69. g = (color & 0xff00) >> 8;
  70. b = (color & 0xff);
  71. }
  72. }
  73.  
  74. return [r, g, b];
  75. };
  76.  
  77. colors.darkerRgb = function(rgb, k) {
  78. k = Math.pow(0.7, k);
  79. return [Math.round(k * rgb[0]), Math.round(k * rgb[1]), Math.round(k * rgb[2])];
  80. };
  81.  
  82. colors.rgbToHex = function(rgb) {
  83. return "#" + _rgb_hex(rgb[0]) + _rgb_hex(rgb[1]) + _rgb_hex(rgb[2]);
  84. };
  85.  
  86. function _rgb_hex(v) {
  87. return v < 0x10
  88. ? "0" + Math.max(0, v).toString(16)
  89. : Math.min(255, v).toString(16);
  90. }
  91.  
  92. module.exports = colors;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement