FastLED 3.9.15
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]]×N[End:⌈N/32⌉×32b 0xFF]

Definition at line 223 of file pixel_iterator.h.

223 {
224 auto back_ins = fl::back_inserter(*out);
225
226 #if FASTLED_HD_COLOR_MIXING
227 if (hd_gamma) {
228 // HD gamma mode: per-LED brightness
229 auto pixel_range = makeScaledPixelRangeRGB(this);
230 auto brightness_range = makeScaledBrightnessRange(this);
231 encodeAPA102_HD(pixel_range.first, pixel_range.second,
232 brightness_range.first, back_ins);
233 return;
234 }
235 #endif
236
237 #if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
238 // Global brightness mode: extract from first pixel
239 auto pixel_range = makeScaledPixelRangeRGB(this);
240 encodeAPA102_AutoBrightness(pixel_range.first, pixel_range.second,
241 back_ins);
242 #else
243 // Full brightness mode
244 auto pixel_range = makeScaledPixelRangeRGB(this);
245 encodeAPA102(pixel_range.first, pixel_range.second,
246 back_ins, 31);
247 #endif
248 }
pair< detail::ScaledPixelIteratorRGB, detail::ScaledPixelIteratorRGB > makeScaledPixelRangeRGB(PixelIterator *pixels) FL_NOEXCEPT
Create RGB input iterator range from PixelIterator.
void encodeAPA102(InputIterator first, InputIterator last, OutputIterator out, u8 global_brightness=31) FL_NOEXCEPT
Encode pixel data in APA102 format with global brightness.
Definition apa102.h:45
back_insert_iterator< Container > back_inserter(Container &c) FL_NOEXCEPT
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_NOEXCEPT
Encode pixel data in APA102 format (auto-detected brightness from first pixel)
Definition apa102.h:131
pair< detail::ScaledPixelIteratorBrightness, detail::ScaledPixelIteratorBrightness > makeScaledBrightnessRange(PixelIterator *pixels) FL_NOEXCEPT
Create brightness input iterator range from PixelIterator.
void encodeAPA102_HD(InputIterator first, InputIterator last, BrightnessIterator brightness_first, OutputIterator out) FL_NOEXCEPT
Encode pixel data in APA102 format with per-LED brightness.
Definition apa102.h:86

References fl::back_inserter(), fl::encodeAPA102(), fl::encodeAPA102_AutoBrightness(), fl::encodeAPA102_HD(), FL_NOEXCEPT, fl::makeScaledBrightnessRange(), and fl::makeScaledPixelRangeRGB().

Referenced by fl::Channel::showPixels().

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