CSS3 Colors–HSLA to RGBA
In my previous post on CSS3 Colors – RGBA vs. HSLA, I provided a script to easily convert RGB to HSL using inputs/outputs friendly to CSS3. In this post, I provide the reverse script – converting from HSL to RGB. The trailing “A” means Alpha (scale of opacity), and requires no conversion.
// elsewhere in script use this way:
// var result = Palermozr.hslToRgb(0,0,100);
// result.R // Red
// result.G // Green
// result.B // Blue
var Palermozr = (function () {
function hslToRgb(h, s, l) {
h /= 360; s /= 100; l /= 100;
var r, g, b;
if (s == 0) {
r = g = b = l;
} else {
var l2 = l < 0.5 ? l * (1 + s) : (l + s) - (s * l);
var l1 = (2 * l) - l2;
r = hueToRgb(l1, l2, (h + (1 / 3)));
g = hueToRgb(l1, l2, h);
b = hueToRgb(l1, l2, (h - (1 / 3)));
}
r = Math.round(255 * r);
g = Math.round(255 * g);
b = Math.round(255 * b);
return { R: r, G: g, B: b };
}
// helper function used above
function hueToRgb(l1, l2, h) {
if (h < 0) h += 1;
if (h > 1) h -= 1;
if (h < 1 / 6) return (l1 + (l2 - l1) * 6 * h);
if (h < 1 / 2) return l2;
if (h < 2 / 3) return (l1 + (l2 - l1) * ((2 / 3) - h) * 6);
return l1;
}
return {
hslToRgb: hslToRgb
};
})();