178 switch (cfg.rgbww_mode) {
179 case RGBWW_MODE::kRGBWWInvalid:
181 *out_r = *out_g = *out_b = *out_ww = *out_wc = 0;
183 case RGBWW_MODE::kRGBWWColorimetric:
184 rgb_2_rgbww_colorimetric(cfg, r, g, b, r_scale, g_scale, b_scale,
185 out_r, out_g, out_b, out_ww, out_wc);
187 case RGBWW_MODE::kRGBWWColorimetricBoosted:
188 rgb_2_rgbww_colorimetric_boosted(cfg, r, g, b, r_scale, g_scale, b_scale,
189 out_r, out_g, out_b, out_ww, out_wc);
191 case RGBWW_MODE::kRGBWWUserFunction:
192 rgb_2_rgbww_user_function(cfg, r, g, b, r_scale, g_scale, b_scale,
193 out_r, out_g, out_b, out_ww, out_wc);
196 *out_r = *out_g = *out_b = *out_ww = *out_wc = 0;
void rgb_2_rgbww_colorimetric_boosted(const Rgbww &cfg, 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_ww, u8 *out_wc) FL_NOEXCEPT
Colorimetric white-overdrive solver for RGBWW (wx_lp_legacy + RGBCCT layered blend).
const colorimetric_detail::RgbcctProfile kRgbwwDefaultProfile
EOrderWW
White-byte ordering for 5-channel RGBWW output.
@ WcWwEnd
RGB followed by cool-W, warm-W.
@ WwWcEnd
RGB followed by warm-W, cool-W.
@ WcWwStart
cool-W, warm-W, then RGB
@ WwWcStart
warm-W, cool-W, then RGB
void set_rgb_2_rgbww_function(rgb_2_rgbww_function func) FL_NOEXCEPT
void rgb_2_rgbww_user_function(const Rgbww &cfg, 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_ww, u8 *out_wc) FL_NOEXCEPT
User-installable RGB->RGBWW function.
void rgb_2_rgbww_colorimetric(const Rgbww &cfg, 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_ww, u8 *out_wc) FL_NOEXCEPT
Colorimetric strict sub-gamut solver for RGBWW (gist sec 5 + sec 11-12, using solve_rgbcct from rgbw_...
FASTLED_FORCE_INLINE void rgb_2_rgbww(const Rgbww &cfg, fl::u8 r, fl::u8 g, fl::u8 b, fl::u8 r_scale, fl::u8 g_scale, fl::u8 b_scale, fl::u8 *out_r, fl::u8 *out_g, fl::u8 *out_b, fl::u8 *out_ww, fl::u8 *out_wc) FL_NOEXCEPT
void(* rgb_2_rgbww_function)(const Rgbww &cfg, fl::u8 r, fl::u8 g, fl::u8 b, fl::u8 r_scale, fl::u8 g_scale, fl::u8 b_scale, fl::u8 *out_r, fl::u8 *out_g, fl::u8 *out_b, fl::u8 *out_ww, fl::u8 *out_wc)
void set_rgbww_colorimetric_profile(const colorimetric_detail::RgbcctProfile *profile) FL_NOEXCEPT
const colorimetric_detail::RgbcctProfile * get_rgbww_colorimetric_profile() FL_NOEXCEPT
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_NOEXCEPT
Dispatch RGB->RGBWW for a given mode.
RGBWW_MODE
RGB -> RGBWW conversion modes (issue #2558, Phase 3 of #2545).
@ kRGBWWColorimetricBoosted
Base definition for an LED controller.
#define FASTLED_FORCE_INLINE
FASTLED_FORCE_INLINE bool active() const FL_NOEXCEPT
Rgbww(fl::u16 warm=kRGBWWDefaultWarmCct, fl::u16 cool=kRGBWWDefaultCoolCct, RGBWW_MODE mode=RGBWW_MODE::kRGBWWColorimetric, EOrderWW placement=EOrderWW::WWDefault) FL_NOEXCEPT
const colorimetric_detail::RgbcctProfile * profile
Optional override for the diode profile (warm + cool W chromaticity + luminance).
RgbwwDefault() FL_NOEXCEPT
static Rgbww value() FL_NOEXCEPT
Per-strip RGBWW configuration.
RgbwwInvalid() FL_NOEXCEPT
static Rgbww value() FL_NOEXCEPT