Skip to content

Commit

Permalink
fix: serializeP3 (#1429)
Browse files Browse the repository at this point in the history
  • Loading branch information
romainmenke authored Jul 11, 2024
1 parent 937f686 commit 204fa45
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 10 deletions.
4 changes: 4 additions & 0 deletions packages/css-color-parser/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changes to CSS Color Parser

### Unreleased (patch)

- fix `serializeP3` when `gamutMapping` is `false`

### 2.0.4

_July 6, 2024_
Expand Down
2 changes: 1 addition & 1 deletion packages/css-color-parser/dist/index.cjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/css-color-parser/dist/index.mjs

Large diffs are not rendered by default.

12 changes: 4 additions & 8 deletions packages/css-color-parser/src/serialize/p3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,10 @@ export function serializeP3(color: ColorData, gamutMapping = true): FunctionNode
color.channels = convertPowerlessComponentsToZeroValuesForDisplay(color.channels, color.colorNotation);
let p3 = color.channels.map((x) => Number.isNaN(x) ? 0 : x);

if (
color.colorNotation !== ColorNotation.Display_P3
) {
if (gamutMapping) {
p3 = XYZ_D50_to_P3_Gamut(colorData_to_XYZ_D50(color).channels);
} else {
p3 = XYZ_D50_to_P3(colorData_to_XYZ_D50(color).channels);
}
if (gamutMapping) {
p3 = XYZ_D50_to_P3_Gamut(colorData_to_XYZ_D50(color).channels);
} else if (color.colorNotation !== ColorNotation.Display_P3) {
p3 = XYZ_D50_to_P3(colorData_to_XYZ_D50(color).channels);
}

const r = gamutMapping ? Math.min(1, Math.max(0, toPrecision(p3[0], 6))) : toPrecision(p3[0], 6);
Expand Down
10 changes: 10 additions & 0 deletions packages/css-color-parser/test/basic/basic.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,16 @@ assert.deepStrictEqual(
'color(display-p3 0.69403 0.98999 0.4832)',
);

assert.deepStrictEqual(
serialize_sRGB_data(color(parse('color(display-p3 204 0.901 0.902)'))),
'rgb(255, 255, 255)',
);

assert.deepStrictEqual(
serialize_P3_data(color(parse('color(display-p3 204 0.901 0.902)'))),
'color(display-p3 1 1 1)',
);

assert.deepStrictEqual(
serialize_sRGB_data(color(parse('rgb(from rgb(none none none / none) r g b / alpha)'))),
'rgba(0, 0, 0, 0)',
Expand Down

0 comments on commit 204fa45

Please sign in to comment.