48template<
typename PixelControllerT>
51 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
52 pc->loadAndScaleRGBW(
rgbw, b0_out, b1_out, b2_out, b3_out);
59 u8* b0_out,
u8* b1_out,
u8* b2_out,
61 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
62 pc->loadAndScaleRGBWW(rgbww, b0_out, b1_out, b2_out, b3_out, b4_out);
70 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
71 pc->loadAndScaleRGBWUnordered(
rgbw, r_out, g_out, b_out, w_out);
74 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
75 pc->loadAndScaleRGBWWUnordered(rgbww, r_out, g_out, b_out, ww_out, wc_out);
83 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
84 raw[0] = pc->mData[0];
85 raw[1] = pc->mData[1];
86 raw[2] = pc->mData[2];
87 premix[0] = pc->mColorAdjustment.premixed.r;
88 premix[1] = pc->mColorAdjustment.premixed.g;
89 premix[2] = pc->mColorAdjustment.premixed.b;
92 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
93 pc->loadAndScaleRGB(r_out, g_out, b_out);
96#if !FL_PLATFORM_HAS_TINY_MEMORY
105 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
106 pc->loadAndScaleRGB16(r_out, g_out, b_out);
114 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
119 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
124 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
128 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
133 #if FASTLED_HD_COLOR_MIXING
135 PixelControllerT* pc =
static_cast<PixelControllerT*
>(pixel_controller);
136 pc->loadRGBScaleAndBrightness(c0, c1, c2,
brightness);
141 loadRGBScaleAndBrightness(pixel_controller, c0, c1, c2,
brightness);
149#if !FL_PLATFORM_HAS_TINY_MEMORY
157template <
typename T,
typename =
void>
165 static_cast<u16*>(nullptr),
166 static_cast<u16*>(nullptr),
167 static_cast<u16*>(nullptr))))> {
194template <
typename T,
typename =
void>
201#if defined(FL_IS_AVR)
203struct RgbwLoadBinder<T, typename detail::OnlyIf<(T::kColorOrder == RGB)>::type> {
225template <
typename T,
typename =
void>
230#if !defined(FL_IS_AVR)
255 template<
typename PixelControllerT>
296#if !FL_PLATFORM_HAS_TINY_MEMORY
303 mSize = &Vtable::size;
305 #if FASTLED_HD_COLOR_MIXING
306 mLoadRGBScaleAndBrightness = &Vtable::loadRGBScaleAndBrightness;
307 mGetHdScale = &Vtable::getHdScale;
318 for (
int i = 0; i < 3; ++i) {
319 mOrder[i] =
static_cast<u8>((
static_cast<int>(order) >> (3 * (2 - i))) & 0x3);
329 for (
int i = 0; i < 3; ++i) {
355 premix[0], premix[1], premix[2],
356 &c[0], &c[1], &c[2], &w);
358 c[
mWireOrder[2]], w, b0_out, b1_out, b2_out, w_out);
361#if defined(FL_IS_AVR)
370 b0_out, b1_out, b2_out, w_out);
389 *b0_out = *b1_out = *b2_out = *b3_out = *b4_out = 0;
392#if defined(FL_IS_AVR)
399 b0_out, b1_out, b2_out, b3_out, b4_out);
416#if !FL_PLATFORM_HAS_TINY_MEMORY
458 #if FASTLED_HD_COLOR_MIXING
470 loadRGBScaleAndBrightness(c0, c1, c2,
brightness);
474 template <
typename CONTAINER_UIN8_T>
482 }
else if (
mRgbw.active()) {
492 template <
typename CONTAINER_UIN8_T>
500 template <
typename CONTAINER_UIN8_T>
511 template <
typename CONTAINER_UIN8_T>
516 #if FASTLED_HD_COLOR_MIXING
527 #if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
544 template <
typename CONTAINER_UIN8_T>
549 #if FASTLED_HD_COLOR_MIXING
560 #if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
573#if !FL_PLATFORM_HAS_TINY_MEMORY
580 template <
typename OutputIterator>
582 fl::size num_leds = 0;
586 for (
int c = 0; c < 3; ++c) {
587 const u32 code = (
static_cast<u32
>(w[c]) * 127u + 32767u) / 65535u;
588 *back_ins++ =
static_cast<u8>(0x80 | code);
594 const fl::size latch = (num_leds * 3 + 63) / 64;
595 for (fl::size i = 0; i < latch; ++i) {
604 template <
typename OutputIterator>
606 for (
int i = 0; i < 4; ++i) {
609 fl::size num_leds = 0;
613 u16 command = 0x8000;
614 for (
int c = 0; c < 3; ++c) {
615 const u32 code = (
static_cast<u32
>(w[c]) * 31u + 32767u) / 65535u;
616 command =
static_cast<u16
>(command | (code << (10 - 5 * c)));
618 *back_ins++ =
static_cast<u8>(command >> 8);
619 *back_ins++ =
static_cast<u8>(command & 0xFF);
624 const fl::size end_dwords = num_leds / 32;
625 for (fl::size i = 0; i < end_dwords; ++i) {
634#if FASTLED_HD_COLOR_MIXING && !FL_PLATFORM_HAS_TINY_MEMORY
640 template <
typename OutputIterator>
641 void writeFiveBitWide(OutputIterator back_ins,
u8 min_field)
FL_NO_EXCEPT {
642 for (
int i = 0; i < 4; ++i) {
645 fl::size num_leds = 0;
652 *back_ins++ =
static_cast<u8>(0xE0 | (field & 0x1F));
653 *back_ins++ = codes.raw[0];
654 *back_ins++ = codes.raw[1];
655 *back_ins++ = codes.raw[2];
660 const fl::size end_dwords = (num_leds / 32) + 1;
661 for (
fl::size i = 0; i < end_dwords * 4; ++i) {
674 template <
typename CONTAINER_UIN8_T>
678 encodeWS2801(pixel_range.first, pixel_range.second, back_ins);
685 template <
typename CONTAINER_UIN8_T>
689 encodeWS2803(pixel_range.first, pixel_range.second, back_ins);
695 template <
typename CONTAINER_UIN8_T>
699 encodeP9813(pixel_range.first, pixel_range.second, back_ins);
705 template <
typename CONTAINER_UIN8_T>
709 encodeLPD8806(pixel_range.first, pixel_range.second, back_ins);
715 template <
typename CONTAINER_UIN8_T>
719 encodeLPD6803(pixel_range.first, pixel_range.second, back_ins);
725 template <
typename CONTAINER_UIN8_T>
729 encodeSM16716(pixel_range.first, pixel_range.second, back_ins);
739 template <
typename CONTAINER_UIN8_T>
763#if FL_PLATFORM_HAS_TINY_MEMORY
767 for (
int i = 0; i < 8; i++) {
774 fl::size num_leds = 0;
777#if !FL_PLATFORM_HAS_TINY_MEMORY
798 *back_ins++ =
static_cast<u8>(r16 >> 8);
799 *back_ins++ =
static_cast<u8>(r16 & 0xFF);
800 *back_ins++ =
static_cast<u8>(g16 >> 8);
801 *back_ins++ =
static_cast<u8>(g16 & 0xFF);
802 *back_ins++ =
static_cast<u8>(b16 >> 8);
803 *back_ins++ =
static_cast<u8>(b16 & 0xFF);
808 const fl::size latch = num_leds / 2 + 4;
809 for (fl::size i = 0; i < latch; i++) {
829#if !FL_PLATFORM_HAS_TINY_MEMORY
841 #if FASTLED_HD_COLOR_MIXING
865 mPixels->loadAndScaleRGB(&b0, &b1, &b2);
884 mPixels->loadAndScaleRGBW(&b0, &b1, &b2, &b3);
902 u8 b0, b1, b2, b3, b4;
903 mPixels->loadAndScaleRGBWW(&b0, &b1, &b2, &b3, &b4);
913#if FASTLED_HD_COLOR_MIXING
920inline void ScaledPixelIteratorBrightness::load()
FL_NO_EXCEPT {
928 mPixels->loadRGBScaleAndBrightness(&r, &
g, &b, &
brightness);
960#if !FL_PLATFORM_HAS_TINY_MEMORY
968 mPixels->loadAndScaleRGB16(&r16, &g16, &b16);
973 mPixels->loadAndScaleRGB(&b0, &b1, &b2);
fl::UISlider brightness("Brightness", BRIGHTNESS, 0, 255)
void writeHD108(CONTAINER_UIN8_T *out, bool managed=false) FL_NO_EXCEPT
Encode pixels in HD108 format (zero allocation)
void writeLPD6803(CONTAINER_UIN8_T *out) FL_NO_EXCEPT
Encode pixels in LPD6803 format (zero allocation)
loadAndScaleRGBWWUnorderedFunction mLoadAndScaleRGBWWUnordered
void writeSM16716(CONTAINER_UIN8_T *out) FL_NO_EXCEPT
Encode pixels in SM16716 format (zero allocation)
void writeWS2803(CONTAINER_UIN8_T *out) FL_NO_EXCEPT
Encode pixels in WS2803 format (zero allocation)
void writeTM1908(CONTAINER_UIN8_T *out) FL_NO_EXCEPT
Encode RGB pixels with the required TM1908 command prefix.
Rgbw get_rgbw() const FL_NO_EXCEPT
void advanceData() FL_NO_EXCEPT
detail::RgbwConvertFn mRgbwConvert
void writeTM1812RGBWW(CONTAINER_UIN8_T *out) FL_NO_EXCEPT
Encode RGBWW pixels into 12-channel TM1812 IC frames.
loadAndScaleRGBWUnorderedFunction mLoadAndScaleRGBWUnordered
loadRawPremixedFunction mLoadRawPremixed
void loadAndScaleRGBWW(u8 *b0_out, u8 *b1_out, u8 *b2_out, u8 *b3_out, u8 *b4_out) FL_NO_EXCEPT
void loadAndScaleRGB(u8 *r_out, u8 *g_out, u8 *b_out) FL_NO_EXCEPT
stepDitheringFunction mStepDithering
void loadAndScaleRGB16(u16 *r_out, u16 *g_out, u16 *b_out) FL_NO_EXCEPT
One pixel at the source's own precision, wire-ordered.
advanceDataFunction mAdvanceData
void writeWS2812(CONTAINER_UIN8_T *out) FL_NO_EXCEPT
void writeLPD6803Wide(OutputIterator back_ins) FL_NO_EXCEPT
LPD6803 over a colour-managed channel's 16-bit drives, quantized once to the chip's 5 bits per channe...
void writeWS2801(CONTAINER_UIN8_T *out) FL_NO_EXCEPT
Encode pixels in WS2801 format (zero allocation)
detail::RgbwwConvertFn mRgbwwConvert
bool has(int n) FL_NO_EXCEPT
loadAndScaleRGBWWFunction mLoadAndScaleRGBWW
void writeAPA102(CONTAINER_UIN8_T *out, bool hd_gamma=false) FL_NO_EXCEPT
Encode pixels in APA102/DOTSTAR format (zero allocation)
loadAndScaleRGBFunction mLoadAndScaleRGB
void set_rgbww(Rgbww rgbww) FL_NO_EXCEPT
void setColorOrder(EOrder order) FL_NO_EXCEPT
Wire colour order, applied here rather than by instantiating a PixelController per order.
loadAndScaleRGB16Function mLoadAndScaleRGB16
void set_rgbw(const Rgbw &rgbw) FL_NO_EXCEPT
void writeLPD8806(CONTAINER_UIN8_T *out) FL_NO_EXCEPT
Encode pixels in LPD8806 format (zero allocation)
void loadAndScaleRGBW(u8 *b0_out, u8 *b1_out, u8 *b2_out, u8 *w_out) FL_NO_EXCEPT
loadAndScaleRGBWFunction mLoadAndScaleRGBW
void writeP9813(CONTAINER_UIN8_T *out) FL_NO_EXCEPT
Encode pixels in P9813 format (zero allocation)
PixelIterator(PixelControllerT *pc, const Rgbw &rgbw, Rgbww rgbww=RgbwwInvalid::value()) FL_NO_EXCEPT
Rgbww get_rgbww() const FL_NO_EXCEPT
void refreshWireOrder() FL_NO_EXCEPT
Recompute the cached source channel of each wire RGB byte: this iterator's order on top of the source...
void stepDithering() FL_NO_EXCEPT
void writeSK9822(CONTAINER_UIN8_T *out, bool hd_gamma=false) FL_NO_EXCEPT
Encode pixels in SK9822 format (zero allocation)
void writeLPD8806Wide(OutputIterator back_ins) FL_NO_EXCEPT
LPD8806 over a colour-managed channel's 16-bit drives, quantized once to the chip's 7 bits (B3: one f...
A fixed-size array implementation similar to std::array.
void advance() FL_NO_EXCEPT
Advance to next pixel (or mark as end)
PixelIterator * mPixels
Underlying PixelIterator.
array< u16, 3 > mCurrent
Current pixel value (cached, wire order, 16-bit)
bool mHasValue
true if current pixel is valid
PixelIterator * mPixels
Underlying PixelIterator.
array< u8, 3 > mCurrent
Current pixel value (cached, wire order)
void advance() FL_NO_EXCEPT
Advance to next pixel (or mark as end)
bool mHasValue
true if current pixel is valid
array< u8, 4 > mCurrent
Current pixel value (cached, wire order)
void advance() FL_NO_EXCEPT
Advance to next pixel (or mark as end)
bool mHasValue
true if current pixel is valid
PixelIterator * mPixels
Underlying PixelIterator.
void advance() FL_NO_EXCEPT
#define FL_DEPRECATED(msg)
APA102/DOTSTAR SPI chipset encoder.
HD108 SPI chipset encoder.
P9813 SPI chipset encoder.
SM16716 SPI chipset encoder.
WS2801/WS2803 SPI chipset encoder.
Declares functions for five-bit gamma correction.
Functions for red, green, blue, white (RGBW) output.
Integer mapping functions between different integer sizes.
u16 map8_to_16(u8 x) FL_NO_EXCEPT
LPD6803 SPI chipset encoder.
LPD8806 SPI chipset encoder.
void(*)(const Rgbw &rgbw, const u8(&raw)[3], const u8(&premix)[3], const u8(&order)[3], u8 *b0, u8 *b1, u8 *b2, u8 *b3) RgbwConvertFn
Per-pixel RGBW conversion: raw source-order RGB + premixed scale -> 4 wire bytes.
void(*)(const Rgbww &rgbww, const fl::u8(&raw)[3], const fl::u8(&premix)[3], const fl::u8(&order)[3], fl::u8 *b0, fl::u8 *b1, fl::u8 *b2, fl::u8 *b3, fl::u8 *b4) RgbwwConvertFn
RgbwwConvertFn rgbww_conversion() FL_NO_EXCEPT
void five_bit_hd_solve16(u16 r16, u16 g16, u16 b16, u8 min_field, CRGB *out, u8 *out_field) FL_NO_EXCEPT
RgbwConvertFn rgbw_conversion() FL_NO_EXCEPT
Null until enable_rgbw_conversion() has run.
Compile-time linker keep-alive hook for a single fl::Bus.
type exists only when B is true: a self-contained enable_if so the binder below can key on a constant...
back_insert_iterator< Container > back_inserter(Container &c) FL_NO_EXCEPT
Helper function to create a back_insert_iterator.
void encodeP9813(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in P9813 format.
void encodeTM1812_RGBWW(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Pack 5-channel RGBCCT pixels into TM1812 12-channel frames.
void encodeLPD8806(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in LPD8806 format.
void rgbww_partial_reorder(EOrderWW ww_placement, u8 b0, u8 b1, u8 b2, u8 ww, u8 wc, u8 *out_b0, u8 *out_b1, u8 *out_b2, u8 *out_b3, u8 *out_b4) FL_NO_EXCEPT
Dispatch RGB->RGBWW for a given mode.
u8 u8 fract8 blur_amount FL_NO_EXCEPT
void(* loadAndScaleRGBWUnorderedFunction)(void *pixel_controller, const Rgbw &rgbw, u8 *r_out, u8 *g_out, u8 *b_out, u8 *w_out)
void rgb_2_rgbw_null_white_pixel(u16 w_color_temperature, u8 r, u8 g, u8 b, u8 r_scale, u8 g_scale, u8 b_scale, u8 *out_r, u8 *out_g, u8 *out_b, u8 *out_w) FL_NO_EXCEPT
Converts RGB to RGBW with the W channel set to black, always.
void hd108BrightnessHeader(u8 brightness_8bit, u8 *f0_out, u8 *f1_out) FL_NO_EXCEPT
Generate HD108 per-channel gain header bytes.
void(* stepDitheringFunction)(void *pixel_controller)
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)
void encodeWS2812_RGBWW(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode 5-byte pixel data in WS2812 format (issue #2558, RGBWW).
add_rvalue_reference< T >::type declval() FL_NO_EXCEPT
void encodeWS2812_RGBW(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode 4-byte pixel data in WS2812 format.
void(* loadAndScaleRGBWWUnorderedFunction)(void *pixel_controller, Rgbww rgbww, u8 *r_out, u8 *g_out, u8 *b_out, u8 *ww_out, u8 *wc_out)
void encodeWS2803(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in WS2803 format (alias for WS2801)
int(* sizeFunction)(void *pixel_controller)
void(* loadAndScaleRGBWFunction)(void *pixel_controller, const Rgbw &rgbw, u8 *b0_out, u8 *b1_out, u8 *b2_out, u8 *b3_out)
void encodeSM16716(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in SM16716 format.
void encodeTM1908(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode one complete TM1908 frame.
void rgbw_partial_reorder(EOrderW w_placement, u8 b0, u8 b1, u8 b2, u8 w, u8 *out_b0, u8 *out_b1, u8 *out_b2, u8 *out_b3) FL_NO_EXCEPT
void encodeLPD6803(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in LPD6803 format.
void(* loadRawPremixedFunction)(void *pixel_controller, u8 *raw, u8 *premix)
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.
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.
void encodeWS2801(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode pixel data in WS2801/WS2803 format.
pair< detail::ScaledPixelIteratorRGBW, detail::ScaledPixelIteratorRGBW > makeScaledPixelRangeRGBW(PixelIterator *pixels) FL_NO_EXCEPT
Create RGBW input iterator range from PixelIterator.
void(* getHdScaleFunction)(void *pixel_controller, u8 *c0, u8 *c1, u8 *c2, u8 *brightness)
bool(* hasFunction)(void *pixel_controller, int n)
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)
void(* loadAndScaleRGBFunction)(void *pixel_controller, u8 *r_out, u8 *g_out, u8 *b_out)
EOrder
RGB color channel orderings, used when instantiating controllers to determine what order the controll...
void encodeWS2812_RGB(InputIterator first, InputIterator last, OutputIterator out) FL_NO_EXCEPT
Encode 3-byte pixel data in WS2812 format.
void(* loadAndScaleRGBWWFunction)(void *pixel_controller, Rgbww rgbww, u8 *b0_out, u8 *b1_out, u8 *b2_out, u8 *b3_out, u8 *b4_out)
u8(* globalBrightness)(void *pixel_controller)
u16 hd108GammaCorrect(u8 value) FL_NO_EXCEPT
Convert 8-bit color to HD108 16-bit gamma-corrected value (gamma 2.8)
void(* advanceDataFunction)(void *pixel_controller)
void(* loadRGBScaleAndBrightnessFunction)(void *pixel_controller, u8 *c0, u8 *c1, u8 *c2, u8 *brightness)
void encodeAPA102(InputIterator first, InputIterator last, OutputIterator out, u8 global_brightness=31) FL_NO_EXCEPT
Encode pixel data in APA102 format with global brightness.
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.
pair< detail::ScaledPixelIteratorRGBWW, detail::ScaledPixelIteratorRGBWW > makeScaledPixelRangeRGBWW(PixelIterator *pixels) FL_NO_EXCEPT
Create RGBWW input iterator range from PixelIterator (issue #2558)
void(* loadAndScaleRGB16Function)(void *pixel_controller, u16 *r_out, u16 *g_out, u16 *b_out)
Base definition for an LED controller.
Adapter layer bridging PixelIterator to encoder input iterators.
5-channel RGB + warm-W + cool-W (RGBWW / RGBCCT) configuration types (issue #2558,...
SK9822 SPI chipset encoder.
static int size(void *pixel_controller) FL_NO_EXCEPT
static void loadAndScaleRGBWW(void *pixel_controller, Rgbww rgbww, u8 *b0_out, u8 *b1_out, u8 *b2_out, u8 *b3_out, u8 *b4_out) FL_NO_EXCEPT
static bool has(void *pixel_controller, int n) FL_NO_EXCEPT
static void advanceData(void *pixel_controller) FL_NO_EXCEPT
static void loadAndScaleRGB(void *pixel_controller, u8 *r_out, u8 *g_out, u8 *b_out) FL_NO_EXCEPT
static void loadRawPremixed(void *pixel_controller, u8 *raw, u8 *premix) FL_NO_EXCEPT
Raw source-order pixel plus premixed scale: everything the RGBW/RGBWW conversion reads,...
static void loadAndScaleRGBWUnordered(void *pixel_controller, const Rgbw &rgbw, u8 *r_out, u8 *g_out, u8 *b_out, u8 *w_out) FL_NO_EXCEPT
static void stepDithering(void *pixel_controller) FL_NO_EXCEPT
static void loadAndScaleRGB16(void *pixel_controller, u16 *r_out, u16 *g_out, u16 *b_out) FL_NO_EXCEPT
static void loadAndScaleRGBW(void *pixel_controller, const Rgbw &rgbw, u8 *b0_out, u8 *b1_out, u8 *b2_out, u8 *b3_out) FL_NO_EXCEPT
static void loadAndScaleRGBWWUnordered(void *pixel_controller, Rgbww rgbww, u8 *r_out, u8 *g_out, u8 *b_out, u8 *ww_out, u8 *wc_out) FL_NO_EXCEPT
static EOrder order() FL_NO_EXCEPT
static loadRawPremixedFunction get() FL_NO_EXCEPT
static loadRawPremixedFunction get() FL_NO_EXCEPT
static EOrder order() FL_NO_EXCEPT
Raw-pixel thunk + the source's own colour order, for PixelController sources on non-AVR targets.
static loadAndScaleRGBWWFunction orderedWW() FL_NO_EXCEPT
static loadAndScaleRGBWUnorderedFunction unordered() FL_NO_EXCEPT
static loadAndScaleRGBWWUnorderedFunction unorderedWW() FL_NO_EXCEPT
static loadAndScaleRGBWFunction ordered() FL_NO_EXCEPT
static loadAndScaleRGBWWFunction orderedWW() FL_NO_EXCEPT
static loadAndScaleRGBWFunction ordered() FL_NO_EXCEPT
static loadAndScaleRGBWUnorderedFunction unordered() FL_NO_EXCEPT
static loadAndScaleRGBWWUnorderedFunction unorderedWW() FL_NO_EXCEPT
Per-type RGBW/RGBWW thunks.
static Rgbww value() FL_NO_EXCEPT
static loadAndScaleRGB16Function get() FL_NO_EXCEPT
static loadAndScaleRGB16Function get() FL_NO_EXCEPT
Binds the wide thunk only when T declares loadAndScaleRGB16.
TM1812 12-channel encoder for two RGBWW pixels per IC.
TM1908 mode/current command prefix and RGB pixel encoder.
WS2803 SPI chipset encoder (WS2801 alias)
WS2812/WS2812B/WS2813/NeoPixel encoder.