From 8ba1e07bbbd685fdde42511033ac86eeeac9ec38 Mon Sep 17 00:00:00 2001 From: plainheart Date: Fri, 24 Jun 2022 11:11:38 +0800 Subject: [PATCH] fix(color): enhance #929 - fix the alpha in form of `rgb(r, g, b, a)` is not respected. --- src/tool/color.ts | 8 ++++---- test/ut/spec/tool/color.test.ts | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/tool/color.ts b/src/tool/color.ts index bedbd71fa..bacf1fa9e 100644 --- a/src/tool/color.ts +++ b/src/tool/color.ts @@ -233,15 +233,15 @@ export function parse(colorStr: string, rgbaArr?: number[]): number[] { ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1) : setRgba(rgbaArr, 0, 0, 0, 1); } - alpha = parseCssFloat(params.pop() as string); // jshint ignore:line + alpha = parseCssFloat(params.pop()); // jshint ignore:line // Fall through. case 'rgb': - if (params.length === 3 || params.length === 4) { + if (params.length >= 3) { setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), - alpha + params.length === 3 ? alpha : parseCssFloat(params[3]) ); putToCache(colorStr, rgbaArr); return rgbaArr; @@ -255,7 +255,7 @@ export function parse(colorStr: string, rgbaArr?: number[]): number[] { setRgba(rgbaArr, 0, 0, 0, 1); return; } - params[3] = parseCssFloat(params[3] as string); + params[3] = parseCssFloat(params[3]); hsla2rgba(params, rgbaArr); putToCache(colorStr, rgbaArr); return rgbaArr; diff --git a/test/ut/spec/tool/color.test.ts b/test/ut/spec/tool/color.test.ts index 5b4423f56..9a5fe37c4 100644 --- a/test/ut/spec/tool/color.test.ts +++ b/test/ut/spec/tool/color.test.ts @@ -7,9 +7,14 @@ describe('colorTool', function () { ['rgba(17, 163, 69, 0.5)', [17, 163, 69, 0.5]], ['rgb(17, 163, 69)', [17, 163, 69, 1]], ['rgb(2, 163, 254, 1)', [2, 163, 254, 1]], + ['rgb(2, 163, 254, 0.8)', [2, 163, 254, 0.8]], + ['rgb(2, 163, 254, 20%)', [2, 163, 254, 0.2]], + ['rgba(2, 163, 254, 50%)', [2, 163, 254, 0.5]], ['#14c4ba00', [20, 196, 186, 0]], + ['#14c4bacc', [20, 196, 186, 0.8]], ['#14c4ba', [20, 196, 186, 1]], ['#07f0', [0, 119, 255, 0]], + ['#07fc', [0, 119, 255, 0.8]], ['#07f', [0, 119, 255, 1]], ['red', [255, 0, 0, 1]], ['blue', [0, 0, 255, 1]]