FastLED 3.9.15
Loading...
Searching...
No Matches

◆ getGlobalBrightnessAndScalingFactors()

template<fl::u8 DATA_PIN, fl::u8 CLOCK_PIN, EOrder RGB_ORDER = RGB, uint32_t SPI_SPEED = DATA_RATE_MHZ(6), fl::FiveBitGammaCorrectionMode GAMMA_CORRECTION_MODE = fl::kFiveBitGammaCorrectionMode_Null, uint32_t START_FRAME = 0x00000000, uint32_t END_FRAME = 0xFF000000>
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 469 of file chipsets.h.

471 {
472#if FASTLED_HD_COLOR_MIXING
474 pixels.getHdScale(out_s0, out_s1, out_s2, &brightness);
475 struct Math {
477 const fl::u16 run = in_max - in_min;
478 const fl::u16 rise = out_max - out_min;
479 const fl::u16 delta = x - in_min;
480 return (delta * rise) / run + out_min;
481 }
482 };
483 // *out_brightness = Math::map(brightness, 0, 255, 0, 31);
484 fl::u16 bri = Math::map(brightness, 0, 255, 0, 31);
485 if (bri == 0 && brightness != 0) {
486 // Fixes https://github.com/FastLED/FastLED/issues/1908
487 bri = 1;
488 }
489 *out_brightness = static_cast<fl::u8>(bri);
490 return;
491#else
492 fl::u8 s0, s1, s2;
493 pixels.loadAndScaleRGB(&s0, &s1, &s2);
494#if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
495 // This function is pure magic.
496 const fl::u16 maxBrightness = 0x1F;
497 fl::u16 brightness = ((((fl::u16)MAX(MAX(s0, s1), s2) + 1) * maxBrightness - 1) >> 8) + 1;
498 s0 = (maxBrightness * s0 + (brightness >> 1)) / brightness;
499 s1 = (maxBrightness * s1 + (brightness >> 1)) / brightness;
500 s2 = (maxBrightness * s2 + (brightness >> 1)) / brightness;
501#else
502 const fl::u8 brightness = 0x1F;
503#endif // FASTLED_USE_GLOBAL_BRIGHTNESS
504 *out_s0 = s0;
505 *out_s1 = s1;
506 *out_s2 = s2;
507 *out_brightness = static_cast<fl::u8>(brightness);
508#endif // FASTLED_HD_COLOR_MIXING
509 }
APA102 controller class.
Definition chipsets.h:399
#define MAX(a, b)
Definition math_macros.h:37

References brightness(), PixelController< RGB_ORDER, LANES, MASK >::loadAndScaleRGB(), MAX, and x.

Referenced by showPixelsDefault().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: