Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var colors = {};
- colors.hslToRgb = function(hsl) {
- var h = hsl[0];
- var s = hsl[1];
- var l = hsl[2];
- var m1,
- m2;
- /* Some simple corrections for h, s and l. */
- h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;
- s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;
- l = l < 0 ? 0 : l > 1 ? 1 : l;
- /* From FvD 13.37, CSS Color Module Level 3 */
- m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
- m1 = 2 * l - m2;
- function v(h) {
- if (h > 360) h -= 360;
- else if (h < 0) h += 360;
- if (h < 60) return m1 + (m2 - m1) * h / 60;
- if (h < 180) return m2;
- if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
- return m1;
- }
- function vv(h) {
- return Math.round(v(h) * 255);
- }
- return [vv(h + 120), vv(h), vv(h - 120)];
- };
- colors.rgbToHsl = function(rgb) {
- var r = rgb[0],
- g = rgb[1],
- b = rgb[2];
- var min = Math.min(r /= 255, g /= 255, b /= 255),
- max = Math.max(r, g, b),
- d = max - min,
- h,
- s,
- l = (max + min) / 2;
- if (d) {
- s = l < .5 ? d / (max + min) : d / (2 - max - min);
- if (r == max) h = (g - b) / d + (g < b ? 6 : 0);
- else if (g == max) h = (b - r) / d + 2;
- else h = (r - g) / d + 4;
- h *= 60;
- } else {
- h = NaN;
- s = l > 0 && l < 1 ? 0 : h;
- }
- return [h, s, l]
- };
- colors.hexToRgb = function(format) {
- var r, g, b, color;
- if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) {
- if (format.length === 4) {
- r = (color & 0xf00) >> 4; r = (r >> 4) | r;
- g = (color & 0xf0); g = (g >> 4) | g;
- b = (color & 0xf); b = (b << 4) | b;
- } else if (format.length === 7) {
- r = (color & 0xff0000) >> 16;
- g = (color & 0xff00) >> 8;
- b = (color & 0xff);
- }
- }
- return [r, g, b];
- };
- colors.darkerRgb = function(rgb, k) {
- k = Math.pow(0.7, k);
- return [Math.round(k * rgb[0]), Math.round(k * rgb[1]), Math.round(k * rgb[2])];
- };
- colors.rgbToHex = function(rgb) {
- return "#" + _rgb_hex(rgb[0]) + _rgb_hex(rgb[1]) + _rgb_hex(rgb[2]);
- };
- function _rgb_hex(v) {
- return v < 0x10
- ? "0" + Math.max(0, v).toString(16)
- : Math.min(255, v).toString(16);
- }
- module.exports = colors;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement