FastLED 3.10.6
Loading...
Searching...
No Matches

◆ writeAPA102()

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

Encode pixels in APA102/DOTSTAR format (zero allocation)

Parameters
outOutput buffer to write encoded bytes
hd_gammaEnable high-definition gamma correction (per-LED brightness)
Note
Protocol: [Start:32b 0x00][LED:[0xE0|bri5][B][G][R]] x N, then [End: (N/32)+1 x 32b 0xFF]

Definition at line 396 of file pixel_iterator.h.

396 {
397 FL_UNUSED(hd_gamma); // only read under FASTLED_HD_COLOR_MIXING
398 auto back_ins = fl::back_inserter(*out);
399
400 #if FASTLED_HD_COLOR_MIXING
401 if (hd_gamma) {
402 // HD gamma mode: per-LED brightness
403 auto pixel_range = makeScaledPixelRangeRGB(this);
404 auto brightness = makeScaledBrightness(this);
405 encodeAPA102_HD(pixel_range.first, pixel_range.second,
406 brightness, back_ins);
407 return;
408 }
409 #endif
410
411 #if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
412 // Global brightness mode: extract from first pixel
413 auto pixel_range = makeScaledPixelRangeRGB(this);
414 encodeAPA102_AutoBrightness(pixel_range.first, pixel_range.second,
415 back_ins);
416 #else
417 // Full brightness mode
418 auto pixel_range = makeScaledPixelRangeRGB(this);
419 encodeAPA102(pixel_range.first, pixel_range.second,
420 back_ins, 31);
421 #endif
422 }
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
FL_NO_INLINE_IF_AVR FL_OPTIMIZE_O2 void encodeAPA102_AutoBrightness(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in APA102 format (auto-detected brightness from first pixel)
Definition apa102.h:131
void encodeAPA102_HD(InputIterator first, InputIterator last, BrightnessIterator brightness_first, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in APA102 format with per-LED brightness.
Definition apa102.h:86
void encodeAPA102(InputIterator first, InputIterator last, OutputIterator out, u8 global_brightness=31) FL_NO_EXCEPT
Encode pixel data in APA102 format with global brightness.
Definition apa102.h:45
pair< detail::ScaledPixelIteratorRGB, detail::ScaledPixelIteratorRGB > makeScaledPixelRangeRGB(PixelIterator *pixels) FL_NO_EXCEPT
Create RGB input iterator range from PixelIterator.

References fl::back_inserter(), brightness, fl::encodeAPA102(), fl::encodeAPA102_AutoBrightness(), fl::encodeAPA102_HD(), fl::FL_NO_EXCEPT, FL_UNUSED, and fl::makeScaledPixelRangeRGB().

+ Here is the call graph for this function: