FastLED 3.10.8
Loading...
Searching...
No Matches

◆ getGlobalBrightnessAndScalingFactors()

template<fl::u8 DATA_PIN, fl::u8 CLOCK_PIN, EOrder RGB_ORDER = RGB, fl::u32 SPI_SPEED = DATA_RATE_MHZ(6), fl::FiveBitGammaCorrectionMode GAMMA_CORRECTION_MODE = fl::FiveBitGammaCorrectionMode::kFiveBitGammaCorrectionMode_Null, fl::u32 START_FRAME = 0x00000000, fl::u32 END_FRAME = 0xFFFFFFFF>
static void APA102Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED, GAMMA_CORRECTION_MODE, START_FRAME, END_FRAME >::getGlobalBrightnessAndScalingFactors ( PixelController< RGB_ORDER > & pixels,
fl::u8 * out_s0,
fl::u8 * out_s1,
fl::u8 * out_s2,
fl::u8 * out_brightness )
inlinestaticprivate

Definition at line 118 of file apa102.h.

120 {
121#if FASTLED_HD_COLOR_MIXING
123 pixels.loadRGBScaleAndBrightness(out_s0, out_s1, out_s2, &brightness);
124 struct Math {
125 static fl::u16 map(fl::u16 x, fl::u16 in_min, fl::u16 in_max, fl::u16 out_min, fl::u16 out_max) FL_NO_EXCEPT { // okay static in header
126 const fl::u16 run = in_max - in_min;
127 const fl::u16 rise = out_max - out_min;
128 const fl::u16 delta = x - in_min;
129 return (delta * rise) / run + out_min;
130 }
131 };
132 // *out_brightness = Math::map(brightness, 0, 255, 0, 31);
133 fl::u16 bri = Math::map(brightness, 0, 255, 0, 31);
134 if (bri == 0 && brightness != 0) {
135 // Fixes https://github.com/FastLED/FastLED/issues/1908
136 bri = 1;
137 }
138 *out_brightness = static_cast<fl::u8>(bri);
139 return;
140#else
141 fl::u8 s0, s1, s2;
142 pixels.loadAndScaleRGB(&s0, &s1, &s2);
143#if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
144 // This function is pure magic.
145 const fl::u16 maxBrightness = 0x1F;
146 // Use sequential comparisons to avoid nested fl::max (helps AVR register allocation)
147 fl::u8 max_s01 = (s0 > s1) ? s0 : s1;
149 fl::u16 brightness = ((((fl::u16)max_component + 1) * maxBrightness - 1) >> 8) + 1;
150 s0 = (maxBrightness * s0 + (brightness >> 1)) / brightness;
151 s1 = (maxBrightness * s1 + (brightness >> 1)) / brightness;
152 s2 = (maxBrightness * s2 + (brightness >> 1)) / brightness;
153#else
154 const fl::u8 brightness = 0x1F;
155#endif // FASTLED_USE_GLOBAL_BRIGHTNESS
156 *out_s0 = s0;
157 *out_s1 = s1;
158 *out_s2 = s2;
159 *out_brightness = static_cast<fl::u8>(brightness);
160#endif // FASTLED_HD_COLOR_MIXING
161 }
APA102 controller class.
Definition apa102.h:42

References brightness, FL_NO_EXCEPT, and x.

Referenced by showPixelsDefault().

+ Here is the caller graph for this function: