|
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