blob: e223c679b19f97dee3e7cfed1022030fec2fe189 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
pub fn hsv_to_rgb(h: f64, s: f64, v: f64) -> u32 {
let s: f64 = s / 100.0;
let v: f64 = v / 100.0;
let c: f64 = s * v;
let mut a: f64 = h / 60.0;
a %= 2.0f64;
let x: f64 = c * (1f64 - (a - 1f64).abs());
let m: f64 = v - c;
let r: f64;
let g: f64;
let b: f64;
if (0.0..60.0).contains(&h) {
r = c;
g = x;
b = 0.0;
} else if (60.0..120.0).contains(&h) {
r = x;
g = c;
b = 0.0;
} else if (120.0..180.0).contains(&h) {
r = 0.0;
g = c;
b = x;
} else if (180.0..240.0).contains(&h) {
r = 0.0;
g = x;
b = c;
} else if (240.0..300.0).contains(&h) {
r = x;
g = 0.0;
b = c;
} else {
r = c;
g = 0.0;
b = x;
}
let red: u32 = ((r + m) * 255.0) as u32;
let green: u32 = ((g + m) * 255.0) as u32;
let blue: u32 = ((b + m) * 255.0) as u32;
((red as u32) << 16) | ((green as u32) << 8) | blue as u32
}
|