source: trip-planner-front/node_modules/@csstools/convert-colors/lib/rgb-hsv.js@ 188ee53

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

initial commit

  • Property mode set to 100644
File size: 1.2 KB
Line 
1import { rgb2value, rgb2whiteness, rgb2hue } from './util';
2
3/* Convert between RGB and HSV
4/* ========================================================================== */
5
6export function rgb2hsv(rgbR, rgbG, rgbB, fallbackhue) {
7 const hsvV = rgb2value(rgbR, rgbG, rgbB);
8 const hsvW = rgb2whiteness(rgbR, rgbG, rgbB);
9 const hsvH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);
10
11 // calculate saturation
12 const hsvS = hsvV === hsvW ? 0 : (hsvV - hsvW) / hsvV * 100;
13
14 return [ hsvH, hsvS, hsvV ];
15}
16
17export function hsv2rgb(hsvH, hsvS, hsvV) {
18 const rgbI = Math.floor(hsvH / 60);
19
20 // calculate rgb parts
21 const rgbF = hsvH / 60 - rgbI & 1 ? hsvH / 60 - rgbI : 1 - hsvH / 60 - rgbI;
22 const rgbM = hsvV * (100 - hsvS) / 100;
23 const rgbN = hsvV * (100 - hsvS * rgbF) / 100;
24
25 const [ rgbR, rgbG, rgbB ] = rgbI === 5
26 ? [ hsvV, rgbM, rgbN ]
27 : rgbI === 4
28 ? [ rgbN, rgbM, hsvV ]
29 : rgbI === 3
30 ? [ rgbM, rgbN, hsvV ]
31 : rgbI === 2
32 ? [ rgbM, hsvV, rgbN ]
33 : rgbI === 1
34 ? [ rgbN, hsvV, rgbM ]
35 : [ hsvV, rgbN, rgbM ];
36
37 return [ rgbR, rgbG, rgbB ];
38}
39
40/*
41
42References
43----------
44
45- http://alvyray.com/Papers/CG/hsv2rgb.htm
46
47/* ========================================================================== */
Note: See TracBrowser for help on using the repository browser.