FastLED 3.10.6
Loading...
Searching...
No Matches

◆ encodeUCS7604_16bit_RGB_wide()

template<typename OutputIterator>
void fl::encodeUCS7604_16bit_RGB_wide ( PixelIterator & pixels,
OutputIterator out )

Wide RGB straight off the iterator, with no adapter (P8, #4042 / #4326).

TINY only: PixelIterator::loadAndScaleRGB16 is itself compiled out on parts with <=1KB SRAM, which carry no colour pipeline and so have nothing wider than the 8-bit pixel to load. pixels is a concrete PixelIterator&, not a dependent type, so that call is looked up when this template is defined rather than when it is instantiated – leaving the body visible on TINY is a hard compile error even though no caller ever selects it. Hence the guard here, and the matching one around the wide_source branch in encodeUCS7604.

Deliberately a plain loop over PixelIterator rather than a second makeScaledPixelRange* range. fl::Channel::showPixels keeps every writeUCS7604(...) statically reachable, so whatever this path instantiates is linked into sketches that never touch UCS7604 – routing it through ScaledPixelIteratorRGB16 cost 988 B on an ESP32-S3 Blink build that binds no profile. This does what that adapter does, in the same order, without the iterator-pair templates.

No gamma by construction: the source has already quantized its device drive once, to 16 bits, and a curve on top of that is the second shaping stage B1 and section 6 of the spec forbid after the device solve.

Definition at line 191 of file ucs7604.h.

191 {
192 while (pixels.has(1)) {
193 u16 r16, g16, b16;
194 pixels.loadAndScaleRGB16(&r16, &g16, &b16);
195 *out++ = r16 >> 8;
196 *out++ = r16 & 0xFF;
197 *out++ = g16 >> 8;
198 *out++ = g16 & 0xFF;
199 *out++ = b16 >> 8;
200 *out++ = b16 & 0xFF;
201 pixels.stepDithering();
202 pixels.advanceData();
203 }
204}
void advanceData() FL_NO_EXCEPT
void loadAndScaleRGB16(u16 *r_out, u16 *g_out, u16 *b_out) FL_NO_EXCEPT
One pixel at the source's own precision, wire-ordered.
bool has(int n) FL_NO_EXCEPT
void stepDithering() FL_NO_EXCEPT

References FL_NO_EXCEPT.

Referenced by encodeUCS7604().

+ Here is the caller graph for this function: