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.6 KiB
			
		
		
			
		
	
	
					61 lines
				
				1.6 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | exports.__esModule = true; | ||
|  | exports["default"] = void 0; | ||
|  | 
 | ||
|  | function colorToInt(color) { | ||
|  |   return Math.round(color * 255); | ||
|  | } | ||
|  | 
 | ||
|  | function convertToInt(red, green, blue) { | ||
|  |   return colorToInt(red) + "," + colorToInt(green) + "," + colorToInt(blue); | ||
|  | } | ||
|  | 
 | ||
|  | function hslToRgb(hue, saturation, lightness, convert) { | ||
|  |   if (convert === void 0) { | ||
|  |     convert = convertToInt; | ||
|  |   } | ||
|  | 
 | ||
|  |   if (saturation === 0) { | ||
|  |     // achromatic
 | ||
|  |     return convert(lightness, lightness, lightness); | ||
|  |   } // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV
 | ||
|  | 
 | ||
|  | 
 | ||
|  |   var huePrime = (hue % 360 + 360) % 360 / 60; | ||
|  |   var chroma = (1 - Math.abs(2 * lightness - 1)) * saturation; | ||
|  |   var secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1)); | ||
|  |   var red = 0; | ||
|  |   var green = 0; | ||
|  |   var blue = 0; | ||
|  | 
 | ||
|  |   if (huePrime >= 0 && huePrime < 1) { | ||
|  |     red = chroma; | ||
|  |     green = secondComponent; | ||
|  |   } else if (huePrime >= 1 && huePrime < 2) { | ||
|  |     red = secondComponent; | ||
|  |     green = chroma; | ||
|  |   } else if (huePrime >= 2 && huePrime < 3) { | ||
|  |     green = chroma; | ||
|  |     blue = secondComponent; | ||
|  |   } else if (huePrime >= 3 && huePrime < 4) { | ||
|  |     green = secondComponent; | ||
|  |     blue = chroma; | ||
|  |   } else if (huePrime >= 4 && huePrime < 5) { | ||
|  |     red = secondComponent; | ||
|  |     blue = chroma; | ||
|  |   } else if (huePrime >= 5 && huePrime < 6) { | ||
|  |     red = chroma; | ||
|  |     blue = secondComponent; | ||
|  |   } | ||
|  | 
 | ||
|  |   var lightnessModification = lightness - chroma / 2; | ||
|  |   var finalRed = red + lightnessModification; | ||
|  |   var finalGreen = green + lightnessModification; | ||
|  |   var finalBlue = blue + lightnessModification; | ||
|  |   return convert(finalRed, finalGreen, finalBlue); | ||
|  | } | ||
|  | 
 | ||
|  | var _default = hslToRgb; | ||
|  | exports["default"] = _default; | ||
|  | module.exports = exports.default; |