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

◆ writeSK9822()

template<typename CONTAINER_UIN8_T>
void fl::PixelIterator::writeSK9822 ( CONTAINER_UIN8_T * out,
bool hd_gamma = false )
inline

Encode pixels in SK9822 format (zero allocation)

Parameters
outOutput buffer to write encoded bytes
hd_gammaEnable high-definition gamma correction (per-LED brightness)
Note
Protocol: Same as APA102, including the all-ones end clock frame.

Definition at line 545 of file pixel_iterator.h.

545 {
546 FL_UNUSED(hd_gamma); // only read under FASTLED_HD_COLOR_MIXING
547 auto back_ins = fl::back_inserter(*out);
548
549 #if FASTLED_HD_COLOR_MIXING
550 if (hd_gamma) {
551 // HD gamma mode: per-LED brightness
552 auto pixel_range = makeScaledPixelRangeRGB(this);
553 auto brightness = makeScaledBrightness(this);
554 encodeSK9822_HD(pixel_range.first, pixel_range.second,
555 brightness, back_ins);
556 return;
557 }
558 #endif
559
560 #if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
561 // Global brightness mode: extract from first pixel
562 auto pixel_range = makeScaledPixelRangeRGB(this);
563 encodeSK9822_AutoBrightness(pixel_range.first, pixel_range.second,
564 back_ins);
565 #else
566 // Full brightness mode
567 auto pixel_range = makeScaledPixelRangeRGB(this);
568 encodeSK9822(pixel_range.first, pixel_range.second,
569 back_ins, 31);
570 #endif
571 }
fl::UISlider brightness("Brightness", BRIGHTNESS, 0, 255)
back_insert_iterator< Container > back_inserter(Container &c) FL_NO_EXCEPT
Helper function to create a back_insert_iterator.
Definition iterator.h:139
void encodeSK9822_HD(InputIterator first, InputIterator last, BrightnessIterator brightness_first, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in SK9822 format with per-LED brightness.
Definition sk9822.h:79
FL_NO_INLINE_IF_AVR void encodeSK9822_AutoBrightness(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in SK9822 format (auto-detected brightness from first pixel)
Definition sk9822.h:122
pair< detail::ScaledPixelIteratorRGB, detail::ScaledPixelIteratorRGB > makeScaledPixelRangeRGB(PixelIterator *pixels) FL_NO_EXCEPT
Create RGB input iterator range from PixelIterator.
void encodeSK9822(InputIterator first, InputIterator last, OutputIterator out, u8 global_brightness=31) FL_NO_EXCEPT
Encode pixel data in SK9822 format with global brightness.
Definition sk9822.h:37
#define FL_UNUSED(x)

References fl::back_inserter(), brightness, fl::encodeSK9822(), fl::encodeSK9822_AutoBrightness(), fl::encodeSK9822_HD(), fl::FL_NO_EXCEPT, FL_UNUSED, and fl::makeScaledPixelRangeRGB().

+ Here is the call graph for this function: