mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-05-25 03:53:31 +00:00
Simplify hsl and hwb handling
This commit is contained in:
+15
-16
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user