* @param {Array. } hsla * @param {Array. } rgba * @return {Array. } rgba
(hsla, rgba)
| 3971 | * @return {Array.<number>} rgba |
| 3972 | */ |
| 3973 | function hsla2rgba(hsla, rgba) { |
| 3974 | var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360; // 0 .. 1 |
| 3975 | // NOTE(deanm): According to the CSS spec s/l should only be |
| 3976 | // percentages, but we don't bother and let float or percentage. |
| 3977 | var s = parseCssFloat(hsla[1]); |
| 3978 | var l = parseCssFloat(hsla[2]); |
| 3979 | var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; |
| 3980 | var m1 = l * 2 - m2; |
| 3981 | |
| 3982 | rgba = rgba || []; |
| 3983 | setRgba(rgba, |
| 3984 | clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), |
| 3985 | clampCssByte(cssHueToRgb(m1, m2, h) * 255), |
| 3986 | clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), |
| 3987 | 1 |
| 3988 | ); |
| 3989 | |
| 3990 | if (hsla.length === 4) { |
| 3991 | rgba[3] = hsla[3]; |
| 3992 | } |
| 3993 | |
| 3994 | return rgba; |
| 3995 | } |
| 3996 | |
| 3997 | /** |
| 3998 | * @param {string} color |
no test coverage detected