FastLED 3.9.15
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 but end frame uses 0x00 instead of 0xFF

Definition at line 255 of file pixel_iterator.h.

255 {
256 auto back_ins = fl::back_inserter(*out);
257
258 #if FASTLED_HD_COLOR_MIXING
259 if (hd_gamma) {
260 // HD gamma mode: per-LED brightness
261 auto pixel_range = makeScaledPixelRangeRGB(this);
262 auto brightness_range = makeScaledBrightnessRange(this);
263 encodeSK9822_HD(pixel_range.first, pixel_range.second,
264 brightness_range.first, back_ins);
265 return;
266 }
267 #endif
268
269 #if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
270 // Global brightness mode: extract from first pixel
271 auto pixel_range = makeScaledPixelRangeRGB(this);
272 encodeSK9822_AutoBrightness(pixel_range.first, pixel_range.second,
273 back_ins);
274 #else
275 // Full brightness mode
276 auto pixel_range = makeScaledPixelRangeRGB(this);
277 encodeSK9822(pixel_range.first, pixel_range.second,
278 back_ins, 31);
279 #endif
280 }
pair< detail::ScaledPixelIteratorRGB, detail::ScaledPixelIteratorRGB > makeScaledPixelRangeRGB(PixelIterator *pixels) FL_NOEXCEPT
Create RGB input iterator range from PixelIterator.
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 void encodeSK9822_AutoBrightness(InputIterator first, InputIterator last, OutputIterator out) FL_NOEXCEPT
Encode pixel data in SK9822 format (auto-detected brightness from first pixel)
Definition sk9822.h:121
pair< detail::ScaledPixelIteratorBrightness, detail::ScaledPixelIteratorBrightness > makeScaledBrightnessRange(PixelIterator *pixels) FL_NOEXCEPT
Create brightness input iterator range from PixelIterator.
void encodeSK9822_HD(InputIterator first, InputIterator last, BrightnessIterator brightness_first, OutputIterator out) FL_NOEXCEPT
Encode pixel data in SK9822 format with per-LED brightness.
Definition sk9822.h:78
void encodeSK9822(InputIterator first, InputIterator last, OutputIterator out, u8 global_brightness=31) FL_NOEXCEPT
Encode pixel data in SK9822 format with global brightness.
Definition sk9822.h:38

References fl::back_inserter(), fl::encodeSK9822(), fl::encodeSK9822_AutoBrightness(), fl::encodeSK9822_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: