From cdb4b1fea61e694c26eeb32d533bd46aad47b36d Mon Sep 17 00:00:00 2001 From: Mikael Sand Date: Fri, 2 Aug 2019 01:34:04 +0300 Subject: [PATCH] Simplify hsl and hwb handling --- lib/extract/extractColor.js | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/lib/extract/extractColor.js b/lib/extract/extractColor.js index 589cfb91..bc27738a 100644 --- a/lib/extract/extractColor.js +++ b/lib/extract/extractColor.js @@ -161,10 +161,10 @@ for (const name in colorNames) { } Object.freeze(colorNames); -function hslToRgb(hsl) { - const h = hsl[0] / 360; - const s = hsl[1] / 100; - const l = hsl[2] / 100; +function hslToRgb(_h, _s, _l, a) { + const h = _h / 360; + const s = _s / 100; + const l = _l / 100; let t1; let t2; let t3; @@ -173,7 +173,7 @@ function hslToRgb(hsl) { if (s === 0) { val = l; - return [val, val, val]; + return [val, val, val, a]; } if (l < 0.5) { @@ -184,7 +184,7 @@ function hslToRgb(hsl) { t1 = 2 * l - t2; - rgb = [0, 0, 0]; + rgb = [0, 0, 0, a]; for (let i = 0; i < 3; i++) { t3 = h + (1 / 3) * -(i - 1); if (t3 < 0) { @@ -210,10 +210,10 @@ function hslToRgb(hsl) { return rgb; } -function hwbToRgb(hwb) { - const h = hwb[0] / 360; - let wh = hwb[1] / 100; - let bl = hwb[2] / 100; +function hwbToRgb(_h, _w, _b, a) { + const h = _h / 360; + let wh = _w / 100; + let bl = _b / 100; const ratio = wh + bl; let i; let v; @@ -274,7 +274,7 @@ function hwbToRgb(hwb) { break; } - return [r, g, b]; + return [r, g, b, a]; } function clamp(num, min, max) { @@ -369,9 +369,8 @@ function rgbFromHslString(string) { const h = (parseFloat(match[1]) + 360) % 360; const s = clamp(parseFloat(match[2]), 0, 100); const l = clamp(parseFloat(match[3]), 0, 100); - const a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1); - - return [...hslToRgb([h, s, l, a]), a]; + const a = isNaN(alpha) ? 1 : clamp(alpha, 0, 1); + return hslToRgb(h, s, l, a); } const hwbRegEx = /^hwb\(\s*([+-]?\d*[.]?\d+)(?:deg)?\s*,\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*(?:,\s*([+-]?[\d.]+)\s*)?\)$/; @@ -386,8 +385,8 @@ function rgbFromHwbString(string) { const h = ((parseFloat(match[1]) % 360) + 360) % 360; const w = clamp(parseFloat(match[2]), 0, 100); const b = clamp(parseFloat(match[3]), 0, 100); - const a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1); - return [...hwbToRgb([h, w, b, a]), a]; + const a = isNaN(alpha) ? 1 : clamp(alpha, 0, 1); + return hwbToRgb(h, w, b, a); } function colorFromString(string) {