You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							61 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							61 lines
						
					
					
						
							1.4 KiB
						
					
					
				// HSL to RGB converter. Both methods adapted from: | 
						|
// http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript | 
						|
 | 
						|
function hslToRgb(h, s, l) { | 
						|
  var r, g, b; | 
						|
 | 
						|
  // normalize hue orientation b/w 0 and 360 degrees | 
						|
  h = h % 360; | 
						|
  if (h < 0) | 
						|
    h += 360; | 
						|
  h = ~~h / 360; | 
						|
 | 
						|
  if (s < 0) | 
						|
    s = 0; | 
						|
  else if (s > 100) | 
						|
    s = 100; | 
						|
  s = ~~s / 100; | 
						|
 | 
						|
  if (l < 0) | 
						|
    l = 0; | 
						|
  else if (l > 100) | 
						|
    l = 100; | 
						|
  l = ~~l / 100; | 
						|
 | 
						|
  if (s === 0) { | 
						|
    r = g = b = l; // achromatic | 
						|
  } else { | 
						|
    var q = l < 0.5 ? | 
						|
      l * (1 + s) : | 
						|
      l + s - l * s; | 
						|
    var p = 2 * l - q; | 
						|
    r = hueToRgb(p, q, h + 1/3); | 
						|
    g = hueToRgb(p, q, h); | 
						|
    b = hueToRgb(p, q, h - 1/3); | 
						|
  } | 
						|
 | 
						|
  return [~~(r * 255), ~~(g * 255), ~~(b * 255)]; | 
						|
} | 
						|
 | 
						|
function hueToRgb(p, q, t) { | 
						|
  if (t < 0) t += 1; | 
						|
  if (t > 1) t -= 1; | 
						|
  if (t < 1/6) return p + (q - p) * 6 * t; | 
						|
  if (t < 1/2) return q; | 
						|
  if (t < 2/3) return p + (q - p) * (2/3 - t) * 6; | 
						|
  return p; | 
						|
} | 
						|
 | 
						|
function shortenHsl(hue, saturation, lightness) { | 
						|
  var asRgb = hslToRgb(hue, saturation, lightness); | 
						|
  var redAsHex = asRgb[0].toString(16); | 
						|
  var greenAsHex = asRgb[1].toString(16); | 
						|
  var blueAsHex = asRgb[2].toString(16); | 
						|
 | 
						|
  return '#' + | 
						|
    ((redAsHex.length == 1 ? '0' : '') + redAsHex) + | 
						|
    ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) + | 
						|
    ((blueAsHex.length == 1 ? '0' : '') + blueAsHex); | 
						|
} | 
						|
 | 
						|
module.exports = shortenHsl;
 | 
						|
 |