Skip to content

Commit a91bc84

Browse files
committed
css-color-parser: skip whitepoint conversion when it isn't needed during color conversion
1 parent b09bba5 commit a91bc84

47 files changed

Lines changed: 4265 additions & 398 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/color-helpers/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changes to Color Helpers
22

3+
### Unreleased (minor)
4+
5+
- Add `d65` conversion helpers
6+
37
### 6.0.2
48

59
_February 21, 2026_

packages/color-helpers/dist/index.d.ts

Lines changed: 282 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@
77
*/
88
export declare function a98_RGB_to_XYZ_D50(x: Color): Color;
99

10+
/**
11+
* @param {Color} color [r, g, b]
12+
* - Red as number 0..1;
13+
* - Green as number 0..1;
14+
* - Blue as number 0..1;
15+
* @return {Color} D50 XYZ [x, y, z]
16+
*/
17+
export declare function a98_RGB_to_XYZ_D65(x: Color): Color;
18+
1019
export declare function clip(color: Color): Color;
1120

1221
export declare type Color = [number, number, number];
@@ -46,6 +55,15 @@ export declare function gam_sRGB(RGB: Color): Color;
4655
*/
4756
export declare function HSL_to_XYZ_D50(x: Color): Color;
4857

58+
/**
59+
* @param {Color} color [h, s, l]
60+
* - Hue as degrees 0..360;
61+
* - Saturation as number 0..100;
62+
* - Lightness as number 0..100;
63+
* @return {Color} D50 XYZ [x, y, z]
64+
*/
65+
export declare function HSL_to_XYZ_D65(x: Color): Color;
66+
4967
/**
5068
* @param {Color} color [h, w, b]
5169
* - Hue as degrees 0..360;
@@ -55,6 +73,15 @@ export declare function HSL_to_XYZ_D50(x: Color): Color;
5573
*/
5674
export declare function HWB_to_XYZ_D50(x: Color): Color;
5775

76+
/**
77+
* @param {Color} color [h, w, b]
78+
* - Hue as degrees 0..360;
79+
* - Whiteness as number 0..100;
80+
* - Blackness as number 0..100;
81+
* @return {Color} D50 XYZ [x, y, z]
82+
*/
83+
export declare function HWB_to_XYZ_D65(x: Color): Color;
84+
5885
export declare function inGamut(x: Color): boolean;
5986

6087
/**
@@ -66,6 +93,15 @@ export declare function inGamut(x: Color): boolean;
6693
*/
6794
export declare function Lab_to_XYZ_D50(x: Color): Color;
6895

96+
/**
97+
* @param {Color} color [l, a, b]
98+
* - Lightness as number 0..100;
99+
* - a as number -160..160;
100+
* - b as number -160..160;
101+
* @return {Color} D50 XYZ [x, y, z]
102+
*/
103+
export declare function Lab_to_XYZ_D65(x: Color): Color;
104+
69105
/**
70106
* @param {Color} color [l, c, h]
71107
* - Lightness as number 0..100;
@@ -75,6 +111,15 @@ export declare function Lab_to_XYZ_D50(x: Color): Color;
75111
*/
76112
export declare function LCH_to_XYZ_D50(x: Color): Color;
77113

114+
/**
115+
* @param {Color} color [l, c, h]
116+
* - Lightness as number 0..100;
117+
* - Chroma as number 0..230;
118+
* - Hue as degrees 0..360;
119+
* @return {Color} D50 XYZ [x, y, z]
120+
*/
121+
export declare function LCH_to_XYZ_D65(x: Color): Color;
122+
78123
/**
79124
* Convert an array of display-p3 RGB values in the range 0.0 - 1.0
80125
* to linear light (un-companded) form.
@@ -103,6 +148,15 @@ export declare function lin_P3_to_XYZ(rgb: Color): Color;
103148
*/
104149
export declare function lin_P3_to_XYZ_D50(x: Color): Color;
105150

151+
/**
152+
* @param {Color} color [r, g, b]
153+
* - Red as number 0..1;
154+
* - Green as number 0..1;
155+
* - Blue as number 0..1;
156+
* @return {Color} D50 XYZ [x, y, z]
157+
*/
158+
export declare function lin_P3_to_XYZ_D65(x: Color): Color;
159+
106160
/**
107161
* Convert an array of of sRGB values where in-gamut values are in the range
108162
* [0 - 1] to linear light (un-companded) form.
@@ -134,6 +188,15 @@ export declare function lin_sRGB_to_XYZ(rgb: Color): Color;
134188
*/
135189
export declare function lin_sRGB_to_XYZ_D50(x: Color): Color;
136190

191+
/**
192+
* @param {Color} color [r, g, b]
193+
* - Red as number 0..1;
194+
* - Green as number 0..1;
195+
* - Blue as number 0..1;
196+
* @return {Color} D50 XYZ [x, y, z]
197+
*/
198+
export declare function lin_sRGB_to_XYZ_D65(x: Color): Color;
199+
137200
export declare function mapGamut(startOKLCH: Color, toDestination: (x: Color) => Color, fromDestination: (x: Color) => Color): Color;
138201

139202
/**
@@ -168,6 +231,15 @@ export declare function OKLab_to_XYZ(OKLab: Color): Color;
168231
*/
169232
export declare function OKLab_to_XYZ_D50(x: Color): Color;
170233

234+
/**
235+
* @param {Color} color [l, a, b]
236+
* - Lightness as number 0..1;
237+
* - a as number 0..0.5;
238+
* - b as number 0..0.5;
239+
* @return {Color} D50 XYZ [x, y, z]
240+
*/
241+
export declare function OKLab_to_XYZ_D65(x: Color): Color;
242+
171243
/**
172244
* @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
173245
* @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).
@@ -184,6 +256,15 @@ export declare function OKLCH_to_OKLab(OKLCH: Color): Color;
184256
*/
185257
export declare function OKLCH_to_XYZ_D50(x: Color): Color;
186258

259+
/**
260+
* @param {Color} color [l, c, h]
261+
* - Lightness as number 0..1;
262+
* - Chroma as number 0..0.5;
263+
* - Hue as degrees 0..360;
264+
* @return {Color} D50 XYZ [x, y, z]
265+
*/
266+
export declare function OKLCH_to_XYZ_D65(x: Color): Color;
267+
187268
/**
188269
* @param {Color} color [r, g, b]
189270
* - Red as number 0..1;
@@ -193,6 +274,15 @@ export declare function OKLCH_to_XYZ_D50(x: Color): Color;
193274
*/
194275
export declare function P3_to_XYZ_D50(x: Color): Color;
195276

277+
/**
278+
* @param {Color} color [r, g, b]
279+
* - Red as number 0..1;
280+
* - Green as number 0..1;
281+
* - Blue as number 0..1;
282+
* @return {Color} D50 XYZ [x, y, z]
283+
*/
284+
export declare function P3_to_XYZ_D65(x: Color): Color;
285+
196286
/**
197287
* @param {Color} color [r, g, b]
198288
* - Red as number 0..1;
@@ -202,6 +292,15 @@ export declare function P3_to_XYZ_D50(x: Color): Color;
202292
*/
203293
export declare function ProPhoto_RGB_to_XYZ_D50(x: Color): Color;
204294

295+
/**
296+
* @param {Color} color [r, g, b]
297+
* - Red as number 0..1;
298+
* - Green as number 0..1;
299+
* - Blue as number 0..1;
300+
* @return {Color} D50 XYZ [x, y, z]
301+
*/
302+
export declare function ProPhoto_RGB_to_XYZ_D65(x: Color): Color;
303+
205304
/**
206305
* @param {Color} color [r, g, b]
207306
* - Red as number 0..1;
@@ -211,6 +310,15 @@ export declare function ProPhoto_RGB_to_XYZ_D50(x: Color): Color;
211310
*/
212311
export declare function rec_2020_to_XYZ_D50(x: Color): Color;
213312

313+
/**
314+
* @param {Color} color [r, g, b]
315+
* - Red as number 0..1;
316+
* - Green as number 0..1;
317+
* - Blue as number 0..1;
318+
* @return {Color} D50 XYZ [x, y, z]
319+
*/
320+
export declare function rec_2020_to_XYZ_D65(x: Color): Color;
321+
214322
/**
215323
* @param {Color} color [r, g, b]
216324
* - Red as number 0..1;
@@ -220,6 +328,15 @@ export declare function rec_2020_to_XYZ_D50(x: Color): Color;
220328
*/
221329
export declare function sRGB_to_XYZ_D50(x: Color): Color;
222330

331+
/**
332+
* @param {Color} color [r, g, b]
333+
* - Red as number 0..1;
334+
* - Green as number 0..1;
335+
* - Blue as number 0..1;
336+
* @return {Color} D50 XYZ [x, y, z]
337+
*/
338+
export declare function sRGB_to_XYZ_D65(x: Color): Color;
339+
223340
/**
224341
* @param {Color} color [x, y, z]
225342
* - X as number 0..1;
@@ -394,6 +511,162 @@ export declare function XYZ_D50_to_XYZ_D50(x: Color): Color;
394511
*/
395512
export declare function XYZ_D50_to_XYZ_D65(x: Color): Color;
396513

514+
/**
515+
* @param {Color} color [x, y, z]
516+
* - X as number 0..1;
517+
* - Y as number 0..1;
518+
* - Z as number 0..1;
519+
* @return {Color} a98 sRGB [r, g, b]
520+
* - Red as number 0..1;
521+
* - Green as number 0..1;
522+
* - Blue as number 0..1;
523+
*/
524+
export declare function XYZ_D65_to_a98_RGB(x: Color): Color;
525+
526+
/**
527+
* @param {Color} color [x, y, z]
528+
* - X as number 0..1;
529+
* - Y as number 0..1;
530+
* - Z as number 0..1;
531+
* @return {Color} HSL [r, g, b]
532+
* - Hue as degrees 0..360;
533+
* - Saturation as number 0..100;
534+
* - Lightness as number 0..100;
535+
*/
536+
export declare function XYZ_D65_to_HSL(x: Color): Color;
537+
538+
/**
539+
* @param {Color} color [x, y, z]
540+
* - X as number 0..1;
541+
* - Y as number 0..1;
542+
* - Z as number 0..1;
543+
* @return {Color} HWB [r, g, b]
544+
* - Hue as degrees 0..360;
545+
* - Whiteness as number 0..100;
546+
* - Blackness as number 0..100;
547+
*/
548+
export declare function XYZ_D65_to_HWB(x: Color): Color;
549+
550+
/**
551+
* @param {Color} color [x, y, z]
552+
* - X as number 0..1;
553+
* - Y as number 0..1;
554+
* - Z as number 0..1;
555+
* @return {Color} Lab [r, g, b]
556+
* - Lightness as number 0..100;
557+
* - a as number -160..160;
558+
* - b as number -160..160;
559+
*/
560+
export declare function XYZ_D65_to_Lab(x: Color): Color;
561+
562+
/**
563+
* @param {Color} color [x, y, z]
564+
* - X as number 0..1;
565+
* - Y as number 0..1;
566+
* - Z as number 0..1;
567+
* @return {Color} LCH [r, g, b]
568+
* - Lightness as number 0..100;
569+
* - Chroma as number 0..230;
570+
* - Hue as degrees 0..360;
571+
*/
572+
export declare function XYZ_D65_to_LCH(x: Color): Color;
573+
574+
/**
575+
* @param {Color} color [x, y, z]
576+
* - X as number 0..1;
577+
* - Y as number 0..1;
578+
* - Z as number 0..1;
579+
* @return {Color} P3 [r, g, b]
580+
* - R as number 0..1;
581+
* - G as number 0..1;
582+
* - B as number 0..1;
583+
*/
584+
export declare function XYZ_D65_to_lin_P3(x: Color): Color;
585+
586+
/**
587+
* @param {Color} color [x, y, z]
588+
* - X as number 0..1;
589+
* - Y as number 0..1;
590+
* - Z as number 0..1;
591+
* @return {Color} linear sRGB [r, g, b]
592+
* - Red as number 0..1;
593+
* - Green as number 0..1;
594+
* - Blue as number 0..1;
595+
*/
596+
export declare function XYZ_D65_to_lin_sRGB(x: Color): Color;
597+
598+
/**
599+
* @param {Color} color [x, y, z]
600+
* - X as number 0..1;
601+
* - Y as number 0..1;
602+
* - Z as number 0..1;
603+
* @return {Color} OKLab [r, g, b]
604+
* - Lightness as number 0..1;
605+
* - a as number 0..0.5;
606+
* - b as number 0..0.5;
607+
*/
608+
export declare function XYZ_D65_to_OKLab(x: Color): Color;
609+
610+
/**
611+
* @param {Color} color [x, y, z]
612+
* - X as number 0..1;
613+
* - Y as number 0..1;
614+
* - Z as number 0..1;
615+
* @return {Color} OKLCH [r, g, b]
616+
* - Lightness as number 0..1;
617+
* - Chroma as number 0..0.5;
618+
* - Hue as degrees 0..360;
619+
*/
620+
export declare function XYZ_D65_to_OKLCH(x: Color): Color;
621+
622+
/**
623+
* @param {Color} color [x, y, z]
624+
* - X as number 0..1;
625+
* - Y as number 0..1;
626+
* - Z as number 0..1;
627+
* @return {Color} P3 [r, g, b]
628+
* - R as number 0..1;
629+
* - G as number 0..1;
630+
* - B as number 0..1;
631+
*/
632+
export declare function XYZ_D65_to_P3(x: Color): Color;
633+
634+
/**
635+
* @param {Color} color [x, y, z]
636+
* - X as number 0..1;
637+
* - Y as number 0..1;
638+
* - Z as number 0..1;
639+
* @return {Color} ProPhoto [r, g, b]
640+
* - Red as number 0..1;
641+
* - Green as number 0..1;
642+
* - Blue as number 0..1;
643+
*/
644+
export declare function XYZ_D65_to_ProPhoto(x: Color): Color;
645+
646+
/**
647+
* @param {Color} color [x, y, z]
648+
* - X as number 0..1;
649+
* - Y as number 0..1;
650+
* - Z as number 0..1;
651+
* @return {Color} rec 2020 [r, g, b]
652+
* - Red as number 0..1;
653+
* - Green as number 0..1;
654+
* - Blue as number 0..1;
655+
*/
656+
export declare function XYZ_D65_to_rec_2020(x: Color): Color;
657+
658+
/**
659+
* @param {Color} color [x, y, z]
660+
* - X as number 0..1;
661+
* - Y as number 0..1;
662+
* - Z as number 0..1;
663+
* @return {Color} sRGB [r, g, b]
664+
* - Red as number 0..1;
665+
* - Green as number 0..1;
666+
* - Blue as number 0..1;
667+
*/
668+
export declare function XYZ_D65_to_sRGB(x: Color): Color;
669+
397670
/**
398671
* @param {Color} color [x, y, z]
399672
* - X as number 0..1;
@@ -403,6 +676,15 @@ export declare function XYZ_D50_to_XYZ_D65(x: Color): Color;
403676
*/
404677
export declare function XYZ_D65_to_XYZ_D50(x: Color): Color;
405678

679+
/**
680+
* @param {Color} color [x, y, z]
681+
* - X as number 0..1;
682+
* - Y as number 0..1;
683+
* - Z as number 0..1;
684+
* @return {Color} D50 XYZ [x, y, z]
685+
*/
686+
export declare function XYZ_D65_to_XYZ_D65(x: Color): Color;
687+
406688
/**
407689
* Convert XYZ to linear-light P3
408690
*

0 commit comments

Comments
 (0)