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.
72 lines
1.4 KiB
72 lines
1.4 KiB
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
exports["default"] = void 0;
|
|
|
|
function rgbToHsl(color) {
|
|
// make sure rgb are contained in a set of [0, 255]
|
|
var red = color.red / 255;
|
|
var green = color.green / 255;
|
|
var blue = color.blue / 255;
|
|
var max = Math.max(red, green, blue);
|
|
var min = Math.min(red, green, blue);
|
|
var lightness = (max + min) / 2;
|
|
|
|
if (max === min) {
|
|
// achromatic
|
|
if (color.alpha !== undefined) {
|
|
return {
|
|
hue: 0,
|
|
saturation: 0,
|
|
lightness: lightness,
|
|
alpha: color.alpha
|
|
};
|
|
} else {
|
|
return {
|
|
hue: 0,
|
|
saturation: 0,
|
|
lightness: lightness
|
|
};
|
|
}
|
|
}
|
|
|
|
var hue;
|
|
var delta = max - min;
|
|
var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);
|
|
|
|
switch (max) {
|
|
case red:
|
|
hue = (green - blue) / delta + (green < blue ? 6 : 0);
|
|
break;
|
|
|
|
case green:
|
|
hue = (blue - red) / delta + 2;
|
|
break;
|
|
|
|
default:
|
|
// blue case
|
|
hue = (red - green) / delta + 4;
|
|
break;
|
|
}
|
|
|
|
hue *= 60;
|
|
|
|
if (color.alpha !== undefined) {
|
|
return {
|
|
hue: hue,
|
|
saturation: saturation,
|
|
lightness: lightness,
|
|
alpha: color.alpha
|
|
};
|
|
}
|
|
|
|
return {
|
|
hue: hue,
|
|
saturation: saturation,
|
|
lightness: lightness
|
|
};
|
|
}
|
|
|
|
var _default = rgbToHsl;
|
|
exports["default"] = _default;
|
|
module.exports = exports.default; |