|
18 | 18 |
|
19 | 19 | static float hue2rgb(float v1, float v2, float vH) |
20 | 20 | { |
21 | | - if (vH < 0) vH += 1.0; |
22 | | - if (vH > 1) vH -= 1.0; |
23 | | - |
24 | | - if (6.0 * vH < 1) return v1 + (v2 - v1) * 6.0 * vH; |
25 | | - if (2.0 * vH < 1) return v2; |
26 | | - if (3.0 * vH < 2) return v1 + (v2 - v1) * ((2.0 / 3.0) - vH) * 6.0; |
| 21 | + if (vH < 0.0) { |
| 22 | + vH += 1.0; |
| 23 | + } else if (vH > 1.0) { |
| 24 | + vH -= 1.0; |
| 25 | + } |
27 | 26 |
|
28 | | - return v1; |
| 27 | + if (6.0 * vH < 1.0) { |
| 28 | + return v1 + (v2 - v1) * 6.0 * vH; |
| 29 | + } else if (2.0 * vH < 1.0) { |
| 30 | + return v2; |
| 31 | + } else if (3.0 * vH < 2.0) { |
| 32 | + return v1 + (v2 - v1) * ((2.0 / 3.0) - vH) * 6.0; |
| 33 | + } else { |
| 34 | + return v1; |
| 35 | + } |
29 | 36 | } |
30 | 37 |
|
31 | 38 | static uint32_t hsl2rgb(float H, float S, float L) |
32 | 39 | { |
| 40 | + float v1, v2; |
33 | 41 | uint8_t R, G, B; |
34 | | - float var_1, var_2; |
35 | 42 |
|
36 | 43 | if (S == 0.0) { |
37 | | - R = L * 255.0; |
38 | | - G = L * 255.0; |
39 | | - B = L * 255.0; |
| 44 | + R = 255.0 * L; |
| 45 | + G = 255.0 * L; |
| 46 | + B = 255.0 * L; |
40 | 47 | } else { |
41 | 48 | if (L < 0.5) { |
42 | | - var_2 = L * (1 + S); |
| 49 | + v2 = L * (1.0 + S); |
43 | 50 | } else { |
44 | | - var_2 = (L + S) - (S * L); |
| 51 | + v2 = (L + S) - (L * S); |
45 | 52 | } |
46 | 53 |
|
47 | | - var_1 = 2.0 * L - var_2; |
| 54 | + v1 = 2.0 * L - v2; |
48 | 55 |
|
49 | | - R = 255.0 * hue2rgb(var_1, var_2, H + (1.0 / 3.0)); |
50 | | - G = 255.0 * hue2rgb(var_1, var_2, H); |
51 | | - B = 255.0 * hue2rgb(var_1, var_2, H - (1.0 / 3.0)); |
| 56 | + R = 255.0 * hue2rgb(v1, v2, H + (1.0 / 3.0)); |
| 57 | + G = 255.0 * hue2rgb(v1, v2, H); |
| 58 | + B = 255.0 * hue2rgb(v1, v2, H - (1.0 / 3.0)); |
52 | 59 | } |
53 | 60 |
|
54 | 61 | return (uint32_t)(R << 16 | G << 8 | B); |
55 | 62 | } |
56 | 63 |
|
57 | 64 | uint32_t vfx_get_color(uint16_t color_h, uint16_t color_l) |
58 | 65 | { |
59 | | - return hsl2rgb(color_h / 511.0, 1.0, color_l / 511.0); |
| 66 | + return hsl2rgb(color_h / 511.0, 1.0, color_l / 2047.0); |
60 | 67 | } |
61 | 68 |
|
62 | 69 | #ifndef CONFIG_SCREEN_PANEL_OUTPUT_VFX |
|
0 commit comments