LPD6803 over a colour-managed channel's 16-bit drives, quantized once to the chip's 5 bits per channel (B3).
Same framing as encodeLPD6803: four zero bytes, 1rrrrrgggggbbbbb per LED in wire order, then n / 32 dwords of FF 00 00 00.
Definition at line 605 of file pixel_iterator.h.
605 {
606 for (int i = 0; i < 4; ++i) {
607 *back_ins++ = 0x00;
608 }
611 u16 w[3];
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)));
617 }
618 *back_ins++ =
static_cast<u8>(command >> 8);
619 *back_ins++ =
static_cast<u8>(command & 0xFF);
622 ++num_leds;
623 }
624 const fl::size end_dwords = num_leds / 32;
625 for (
fl::size i = 0; i < end_dwords; ++i) {
626 *back_ins++ = 0xFF;
627 *back_ins++ = 0x00;
628 *back_ins++ = 0x00;
629 *back_ins++ = 0x00;
630 }
631 }
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 advanceData(), fl::FL_NO_EXCEPT, has(), loadAndScaleRGB16(), and stepDithering().