FastLED 3.10.6
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 429 of file pixel_iterator.h.

429 {
430 FL_UNUSED(hd_gamma); // only read under FASTLED_HD_COLOR_MIXING
431 auto back_ins = fl::back_inserter(*out);
432
433 #if FASTLED_HD_COLOR_MIXING
434 if (hd_gamma) {
435 // HD gamma mode: per-LED brightness
436 auto pixel_range = makeScaledPixelRangeRGB(this);
437 auto brightness = makeScaledBrightness(this);
438 encodeSK9822_HD(pixel_range.first, pixel_range.second,
439 brightness, back_ins);
440 return;
441 }
442 #endif
443
444 #if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
445 // Global brightness mode: extract from first pixel
446 auto pixel_range = makeScaledPixelRangeRGB(this);
447 encodeSK9822_AutoBrightness(pixel_range.first, pixel_range.second,
448 back_ins);
449 #else
450 // Full brightness mode
451 auto pixel_range = makeScaledPixelRangeRGB(this);
452 encodeSK9822(pixel_range.first, pixel_range.second,
453 back_ins, 31);
454 #endif
455 }
fl::UISlider brightness("Brightness", BRIGHTNESS, 0, 255)
#define FL_UNUSED(x)
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

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: