FastLED 3.9.15
Loading...
Searching...
No Matches

◆ rgb_2_rgbw_white_boosted()

void fl::rgb_2_rgbw_white_boosted ( uint16_t w_color_temperature,
uint8_t r,
uint8_t g,
uint8_t b,
uint8_t r_scale,
uint8_t g_scale,
uint8_t b_scale,
uint8_t * out_r,
uint8_t * out_g,
uint8_t * out_b,
uint8_t * out_w )

Converts RGB to RGBW with a boosted white channel.

Definition at line 79 of file rgbw.cpp.

82 {
83 (void)w_color_temperature;
84 r = scale8(r, r_scale);
85 g = scale8(g, g_scale);
86 b = scale8(b, b_scale);
87 uint8_t min_component = min3(r, g, b);
88 uint8_t w;
89 bool is_min = true;
90 if (min_component <= 84) {
91 w = 3 * min_component;
92 } else {
93 w = 255;
94 is_min = false;
95 }
96 uint8_t r_prime;
97 uint8_t g_prime;
98 uint8_t b_prime;
99 if (is_min) {
100 r_prime = r - min_component;
101 g_prime = g - min_component;
102 b_prime = b - min_component;
103 } else {
104 uint8_t w3 = divide_by_3(w);
105 r_prime = r - w3;
106 g_prime = g - w3;
107 b_prime = b - w3;
108 }
109
110 *out_r = r_prime;
111 *out_g = g_prime;
112 *out_b = b_prime;
113 *out_w = w;
114}
LIB8STATIC_ALWAYS_INLINE uint8_t scale8(uint8_t i, fract8 scale)
Scale one byte by a second one, which is treated as the numerator of a fraction whose denominator is ...
Definition scale8.h:44
uint8_t divide_by_3(uint8_t x)
Definition rgbw.cpp:32

References scale8().

Referenced by rgb_2_rgbw().

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