source: trip-planner-front/node_modules/@csstools/convert-colors/index.js@ e29cc2e

Last change on this file since e29cc2e was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 8.9 KB
Line 
1import { rgb2hsl, hsl2rgb } from './lib/rgb-hsl';
2import { rgb2hwb, hwb2rgb } from './lib/rgb-hwb';
3import { rgb2hsv, hsv2rgb } from './lib/rgb-hsv';
4import { rgb2xyz, xyz2rgb } from './lib/rgb-xyz';
5import { hsl2hsv, hsv2hsl } from './lib/hsl-hsv';
6import { hwb2hsv, hsv2hwb } from './lib/hwb-hsv';
7import { lab2xyz, xyz2lab } from './lib/lab-xyz';
8import { lab2lch, lch2lab } from './lib/lab-lch';
9import { rgb2hue } from './lib/util';
10
11/* Convert between RGB and Lab
12/* ========================================================================== */
13
14function rgb2lab(rgbR, rgbG, rgbB) {
15 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
16 const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);
17
18 return [ labL, labA, labB ];
19}
20
21function lab2rgb(labL, labA, labB) {
22 const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);
23 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
24
25 return [ rgbR, rgbG, rgbB ];
26}
27
28/* Convert between RGB and LCH
29/* ========================================================================== */
30
31function rgb2lch(rgbR, rgbG, rgbB) {
32 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
33 const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);
34 const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);
35
36 return [ lchL, lchC, lchH ];
37}
38
39function lch2rgb(lchL, lchC, lchH) {
40 const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);
41 const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);
42 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
43
44 return [ rgbR, rgbG, rgbB ];
45}
46
47/* Convert between HSL and HWB
48/* ========================================================================== */
49
50function hwb2hsl(hwbH, hwbW, hwbB) {
51 const [ hsvH, hsvS, hsvV ] = hwb2hsv(hwbH, hwbW, hwbB);
52 const [ hslH, hslS, hslL ] = hsv2hsl(hsvH, hsvS, hsvV);
53
54 return [ hslH, hslS, hslL ];
55}
56
57function hsl2hwb(hslH, hslS, hslL) {
58 const [ , hsvS, hsvV ] = hsl2hsv(hslH, hslS, hslL);
59 const [ , hwbW, hwbB ] = hsv2hwb(hslH, hsvS, hsvV);
60
61 return [ hslH, hwbW, hwbB ];
62}
63
64/* Convert between HSL and Lab
65/* ========================================================================== */
66
67function hsl2lab(hslH, hslS, hslL) {
68 const [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL);
69 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
70 const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);
71
72 return [ labL, labA, labB ];
73}
74
75function lab2hsl(labL, labA, labB, fallbackhue) {
76 const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);
77 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
78 const [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue);
79
80 return [ hslH, hslS, hslL ];
81}
82
83/* Convert between HSL and LCH
84/* ========================================================================== */
85
86function hsl2lch(hslH, hslS, hslL) {
87 const [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL);
88 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
89 const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);
90 const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);
91
92 return [ lchL, lchC, lchH ];
93}
94
95function lch2hsl(lchL, lchC, lchH, fallbackhue) {
96 const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);
97 const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);
98 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
99 const [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue);
100
101 return [ hslH, hslS, hslL ];
102}
103
104/* Convert between HSL and XYZ
105/* ========================================================================== */
106
107function hsl2xyz(hslH, hslS, hslL) {
108 const [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL);
109 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
110
111 return [ xyzX, xyzY, xyzZ ];
112}
113
114function xyz2hsl(xyzX, xyzY, xyzZ, fallbackhue) {
115 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
116 const [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue);
117
118 return [ hslH, hslS, hslL ];
119}
120
121/* Convert between HWB and Lab
122/* ========================================================================== */
123
124function hwb2lab(hwbH, hwbW, hwbB) {
125 const [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB);
126 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
127 const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);
128
129 return [ labL, labA, labB ];
130}
131
132function lab2hwb(labL, labA, labB, fallbackhue) {
133 const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);
134 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
135 const [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue);
136
137 return [ hwbH, hwbW, hwbB ];
138}
139
140/* Convert between HWB and LCH
141/* ========================================================================== */
142
143function hwb2lch(hwbH, hwbW, hwbB) {
144 const [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB);
145 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
146 const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);
147 const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);
148
149 return [ lchL, lchC, lchH ];
150}
151
152function lch2hwb(lchL, lchC, lchH, fallbackhue) {
153 const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);
154 const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);
155 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
156 const [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue);
157
158 return [ hwbH, hwbW, hwbB ];
159}
160
161/* Convert between HWB and XYZ
162/* ========================================================================== */
163
164function hwb2xyz(hwbH, hwbW, hwbB) {
165 const [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB);
166 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
167
168 return [ xyzX, xyzY, xyzZ ];
169}
170
171function xyz2hwb(xyzX, xyzY, xyzZ, fallbackhue) {
172 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
173 const [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue);
174
175 return [ hwbH, hwbW, hwbB ];
176}
177
178/* Convert between HSV and Lab
179/* ========================================================================== */
180
181function hsv2lab(hsvH, hsvS, hsvV) {
182 const [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV);
183 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
184 const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);
185
186 return [ labL, labA, labB ];
187}
188
189function lab2hsv(labL, labA, labB, fallbackhue) {
190 const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);
191 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
192 const [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue);
193
194 return [ hsvH, hsvS, hsvV ];
195}
196
197/* Convert between HSV and LCH
198/* ========================================================================== */
199
200function hsv2lch(hsvH, hsvS, hsvV) {
201 const [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV);
202 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
203 const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);
204 const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);
205
206 return [ lchL, lchC, lchH ];
207}
208
209function lch2hsv(lchL, lchC, lchH, fallbackhue) {
210 const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);
211 const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);
212 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
213 const [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue);
214
215 return [ hsvH, hsvS, hsvV ];
216}
217
218/* Convert between HSV and XYZ
219/* ========================================================================== */
220
221function hsv2xyz(hsvH, hsvS, hsvV) {
222 const [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV);
223 const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);
224
225 return [ xyzX, xyzY, xyzZ ];
226}
227
228function xyz2hsv(xyzX, xyzY, xyzZ, fallbackhue) {
229 const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);
230 const [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue);
231
232 return [ hsvH, hsvS, hsvV ];
233}
234
235/* Convert between XYZ and LCH
236/* ========================================================================== */
237
238function xyz2lch(xyzX, xyzY, xyzZ) {
239 const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);
240 const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);
241
242 return [ lchL, lchC, lchH ];
243}
244
245function lch2xyz(lchL, lchC, lchH) {
246 const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);
247 const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);
248
249 return [ xyzX, xyzY, xyzZ ];
250}
251
252/* All Conversions
253/* ========================================================================== */
254
255export {
256 rgb2hsl,
257 rgb2hwb,
258 rgb2lab,
259 rgb2lch,
260 rgb2hsv,
261 rgb2xyz,
262
263 hsl2rgb,
264 hsl2hwb,
265 hsl2lab,
266 hsl2lch,
267 hsl2hsv,
268 hsl2xyz,
269
270 hwb2rgb,
271 hwb2hsl,
272 hwb2lab,
273 hwb2lch,
274 hwb2hsv,
275 hwb2xyz,
276
277 lab2rgb,
278 lab2hsl,
279 lab2hwb,
280 lab2lch,
281 lab2hsv,
282 lab2xyz,
283
284 lch2rgb,
285 lch2hsl,
286 lch2hwb,
287 lch2lab,
288 lch2hsv,
289 lch2xyz,
290
291 hsv2rgb,
292 hsv2hsl,
293 hsv2hwb,
294 hsv2lab,
295 hsv2lch,
296 hsv2xyz,
297
298 xyz2rgb,
299 xyz2hsl,
300 xyz2hwb,
301 xyz2lab,
302 xyz2lch,
303 xyz2hsv,
304
305 rgb2hue
306};
307
308export default {
309 rgb2hsl,
310 rgb2hwb,
311 rgb2lab,
312 rgb2lch,
313 rgb2hsv,
314 rgb2xyz,
315
316 hsl2rgb,
317 hsl2hwb,
318 hsl2lab,
319 hsl2lch,
320 hsl2hsv,
321 hsl2xyz,
322
323 hwb2rgb,
324 hwb2hsl,
325 hwb2lab,
326 hwb2lch,
327 hwb2hsv,
328 hwb2xyz,
329
330 lab2rgb,
331 lab2hsl,
332 lab2hwb,
333 lab2lch,
334 lab2hsv,
335 lab2xyz,
336
337 lch2rgb,
338 lch2hsl,
339 lch2hwb,
340 lch2lab,
341 lch2hsv,
342 lch2xyz,
343
344 hsv2rgb,
345 hsv2hsl,
346 hsv2hwb,
347 hsv2lab,
348 hsv2lch,
349 hsv2xyz,
350
351 xyz2rgb,
352 xyz2hsl,
353 xyz2hwb,
354 xyz2lab,
355 xyz2lch,
356 xyz2hsv,
357
358 rgb2hue
359};
Note: See TracBrowser for help on using the repository browser.