/// Copies RGB565 (u16) -> RGBA8888 (u8[4]) to the pixels frame. /// Pixels format: RGBA8. pub fn draw_rgb565_to_rgba8(src: &[u16], dst_rgba: &mut [u8]) { for (i, &px) in src.iter().enumerate() { let (r8, g8, b8) = rgb565_to_rgb888(px); let o = i * 4; dst_rgba[o] = r8; dst_rgba[o + 1] = g8; dst_rgba[o + 2] = b8; dst_rgba[o + 3] = 0xFF; } } /// Expands RGB565 to RGB888 (high bit replication). #[inline(always)] pub fn rgb565_to_rgb888(px: u16) -> (u8, u8, u8) { let r5 = ((px >> 11) & 0x1F) as u8; let g6 = ((px >> 5) & 0x3F) as u8; let b5 = (px & 0x1F) as u8; let r8 = (r5 << 3) | (r5 >> 2); let g8 = (g6 << 2) | (g6 >> 4); let b8 = (b5 << 3) | (b5 >> 2); (r8, g8, b8) }