Map 8-bit brightness to 5-bit (0-31)
- Parameters
-
| brightness_8bit | Input brightness (0-255) |
- Returns
- 5-bit brightness (0-31)
- Note
- Ensures non-zero input maps to non-zero output (fixes issue #1908)
-
Uses bit-shift approximation on AVR to avoid expensive division
Definition at line 20 of file encoder_utils.h.
20 {
21 #if defined(FL_IS_AVR)
22
23
24
25 u16 bri5 = ((u16)brightness_8bit * 31 + 128) >> 8;
26
27
28 if (bri5 == 0 && brightness_8bit != 0) {
29 bri5 = 1;
30 }
31
32 return static_cast<u8>(bri5);
33 #else
34
35 u16 bri5 = ((u16)brightness_8bit * 31 + 128) / 255;
36
37
38 if (bri5 == 0 && brightness_8bit != 0) {
39 bri5 = 1;
40 }
41
42 return static_cast<u8>(bri5);
43 #endif
44}
References FL_NOEXCEPT.
Referenced by encodeAPA102_HD(), and encodeSK9822_HD().