@peculiar/color
Version:
Library for color manipulation and conversion in JavaScript.
45 lines • 1.12 kB
JavaScript
var RGB_MAX = 255;
var HUE_MAX = 360;
var SV_MAX = 100;
/**
* RGB color to HSB color.
* @example
* rgbToHsb(255, 255, 255) // =>
*/
export function rgbToHsb(r, g, b) {
// It converts [0,255] format, to [0,1]
r = (r === RGB_MAX) ? 1 : ((r % RGB_MAX) / RGB_MAX);
g = (g === RGB_MAX) ? 1 : ((g % RGB_MAX) / RGB_MAX);
b = (b === RGB_MAX) ? 1 : ((b % RGB_MAX) / RGB_MAX);
var max = Math.max(r, g, b);
var min = Math.min(r, g, b);
var v = max;
var d = max - min;
var s = max === 0 ? 0 : d / max;
var h;
if (max === min) {
h = 0; // achromatic
}
else {
switch (max) {
case r:
h = (g - b) / d + (g < b ? 6 : 0);
break;
case g:
h = (b - r) / d + 2;
break;
case b:
h = (r - g) / d + 4;
break;
default:
break;
}
h /= 6;
}
return [
Math.round(h * HUE_MAX),
Math.round(s * SV_MAX),
Math.round(v * SV_MAX),
];
}
//# sourceMappingURL=rgb_to_hsb.js.map