Skip to content

Commit 11517ce

Browse files
authored
fix: not round for hsl2rgb (#344)
* fix: not `round` for `hsl2rgb` * chore: update
1 parent 5c791fd commit 11517ce

File tree

4 files changed

+11
-56
lines changed

4 files changed

+11
-56
lines changed

src/io/css/css2rgb.js

+6
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ const css2rgb = (css) => {
7171
hsl[1] *= 0.01;
7272
hsl[2] *= 0.01;
7373
const rgb = hsl2rgb(hsl);
74+
for (let i = 0; i < 3; i++) {
75+
rgb[i] = round(rgb[i]);
76+
}
7477
rgb[3] = 1;
7578
return rgb;
7679
}
@@ -81,6 +84,9 @@ const css2rgb = (css) => {
8184
hsl[1] *= 0.01;
8285
hsl[2] *= 0.01;
8386
const rgb = hsl2rgb(hsl);
87+
for (let i = 0; i < 3; i++) {
88+
rgb[i] = round(rgb[i]);
89+
}
8490
rgb[3] = +m[4]; // default alpha = 1
8591
return rgb;
8692
}

src/io/hsl/hsl2rgb.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { unpack } from '../../utils/index.js';
2-
const { round } = Math;
32

43
const hsl2rgb = (...args) => {
54
args = unpack(args, 'hsl');
@@ -24,7 +23,7 @@ const hsl2rgb = (...args) => {
2423
else if (3 * t3[i] < 2) c[i] = t1 + (t2 - t1) * (2 / 3 - t3[i]) * 6;
2524
else c[i] = t1;
2625
}
27-
[r, g, b] = [round(c[0] * 255), round(c[1] * 255), round(c[2] * 255)];
26+
[r, g, b] = [c[0] * 255, c[1] * 255, c[2] * 255];
2827
}
2928
if (args.length > 3) {
3029
// keep alpha channel

test/css2rgb.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ describe('Testing CSS2RGB color conversions', () => {
1212
'RGBA(255, 0, 0 , 0.5)': [255, 0, 0, 0.5],
1313
'RGBA (255, 0, 0 , 0.5)': undefined,
1414
'rgba(0%,100%,0%,.5)': [0, 255, 0, 0.5],
15-
' hsl(240,100%,50%) ': [0, 0, 255, 1],
15+
'hsl(240,100%,50%) ': [0, 0, 255, 1],
1616
'hsl(60,100%,50%)': [255, 255, 0, 1],
1717
'hsla(180,100%,50%,1)': [0, 255, 255, 1],
1818
'hsla(300,100%,50%,.25)': [255, 0, 255, 0.25],

test/hsl2rgb.test.js

+3-53
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,3 @@
1-
// const vows = require('vows');
2-
// const assert = require('assert');
3-
// require('es6-shim');
4-
5-
// import hsl2rgb from '../src/io/hsl/hsl2rgb.js';
6-
7-
// vows.describe('Testing CMYK color conversions')
8-
// .addBatch({
9-
// 'parse simple HSL colors': {
10-
// topic: {
11-
// black: { in: [0, 0, 0], out: [0, 0, 0, 1] },
12-
// white: { in: [0, 0, 1], out: [255, 255, 255, 1] },
13-
// gray: { in: [0, 0, 0.5], out: [127.5, 127.5, 127.5, 1] },
14-
// red: { in: [0, 1, 0.5], out: [255, 0, 0, 1] },
15-
// yellow: { in: [60, 1, 0.5], out: [255, 255, 0, 1] },
16-
// green: { in: [120, 1, 0.5], out: [0, 255, 0, 1] },
17-
// cyan: { in: [180, 1, 0.5], out: [0, 255, 255, 1] },
18-
// blue: { in: [240, 1, 0.5], out: [0, 0, 255, 1] },
19-
// magenta: { in: [300, 1, 0.5], out: [255, 0, 255, 1] },
20-
// red_again: { in: [360, 1, 0.5], out: [255, 0, 0, 1] }
21-
// },
22-
// hsl_arr(topic) {
23-
// Object.keys(topic).forEach((key) => {
24-
// assert.deepEqual(
25-
// hsl2rgb(topic[key].in),
26-
// topic[key].out,
27-
// key
28-
// );
29-
// });
30-
// },
31-
// hsl_args(topic) {
32-
// Object.keys(topic).forEach((key) => {
33-
// assert.deepEqual(
34-
// hsl2rgb.apply(null, topic[key].in),
35-
// topic[key].out,
36-
// key
37-
// );
38-
// });
39-
// },
40-
// hsl_obj(topic) {
41-
// Object.keys(topic).forEach((key) => {
42-
// const [h, s, l] = topic[key].in;
43-
// assert.deepEqual(hsl2rgb({ h, s, l }), topic[key].out, key);
44-
// });
45-
// }
46-
// },
47-
// 'make sure that alpha is 1': {}
48-
// })
49-
// .export(module);
50-
511
import { describe, it, expect } from 'vitest';
522
import hsl2rgb from '../src/io/hsl/hsl2rgb.js';
533

@@ -57,11 +7,11 @@ describe('Testing HSL to RGB color conversions', () => {
577
{ name: 'white', hsl: [0, 0, 1], rgb: [255, 255, 255, 1] },
588
{ name: 'gray', hsl: [0, 0, 0.5], rgb: [127.5, 127.5, 127.5, 1] },
599
{ name: 'red', hsl: [0, 1, 0.5], rgb: [255, 0, 0, 1] },
60-
{ name: 'yellow', hsl: [60, 1, 0.5], rgb: [255, 255, 0, 1] },
10+
{ name: 'yellow', hsl: [60, 1, 0.5], rgb: [254.99999999999994, 255, 0, 1] },
6111
{ name: 'green', hsl: [120, 1, 0.5], rgb: [0, 255, 0, 1] },
62-
{ name: 'cyan', hsl: [180, 1, 0.5], rgb: [0, 255, 255, 1] },
12+
{ name: 'cyan', hsl: [180, 1, 0.5], rgb: [0, 254.99999999999994, 255, 1] },
6313
{ name: 'blue', hsl: [240, 1, 0.5], rgb: [0, 0, 255, 1] },
64-
{ name: 'magenta', hsl: [300, 1, 0.5], rgb: [255, 0, 255, 1] },
14+
{ name: 'magenta', hsl: [300, 1, 0.5], rgb: [255, 0, 254.99999999999994, 1] },
6515
{ name: 'red again', hsl: [360, 1, 0.5], rgb: [255, 0, 0, 1] }
6616
];
6717

0 commit comments

Comments
 (0)