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

◆ rgb_2_rgbw_white_boosted()

void 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 78 of file rgbw.cpp.

81 {
82 (void)w_color_temperature;
83 r = scale8(r, r_scale);
84 g = scale8(g, g_scale);
85 b = scale8(b, b_scale);
86 uint8_t min_component = min3(r, g, b);
87 uint8_t w;
88 bool is_min = true;
89 if (min_component <= 84) {
90 w = 3 * min_component;
91 } else {
92 w = 255;
93 is_min = false;
94 }
95 uint8_t r_prime;
96 uint8_t g_prime;
97 uint8_t b_prime;
98 if (is_min) {
99 r_prime = r - min_component;
100 g_prime = g - min_component;
101 b_prime = b - min_component;
102 } else {
103 uint8_t w3 = divide_by_3(w);
104 r_prime = r - w3;
105 g_prime = g - w3;
106 b_prime = b - w3;
107 }
108
109 *out_r = r_prime;
110 *out_g = g_prime;
111 *out_b = b_prime;
112 *out_w = w;
113}
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:34
uint8_t min3(uint8_t a, uint8_t b, uint8_t c)
Definition rgbw.cpp:15
uint8_t divide_by_3(uint8_t x)
Definition rgbw.cpp:31

References scale8().

Referenced by rgb_2_rgbw().

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