UNPKG

lib-colors

Version:

Simple node.js library for work with colors

37 lines (30 loc) 867 B
import type { IRGB } from '../../rgb/rgb.interface'; import type { IHSL } from '../hsl.interface'; export function hslToRgb(hsl: IHSL): IRGB { const { h, s, l, a } = { ...hsl }; let r: number, g: number, b: number; if (s === 0) { r = g = b = l; } else { const q = l < 0.5 ? l * (1 + s) : l + s - l * s; const p = 2 * l - q; const hue = h / 360; r = hue2rgb(p, q, hue + 1 / 3); g = hue2rgb(p, q, hue); b = hue2rgb(p, q, hue - 1 / 3); } return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255), a, }; } function hue2rgb(p: number, q: number, t: number): number { 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; }