pub(super) fn rgb_png(width: u32, height: u32, colour: [u8; 3]) -> Vec<u8> {
let mut out = Vec::new();
{
let mut encoder = png::Encoder::new(&mut out, width, height);
encoder.set_color(png::ColorType::Rgb);
encoder.set_depth(png::BitDepth::Eight);
let mut writer = encoder.write_header().expect("png header");
let row: Vec<u8> = colour
.iter()
.copied()
.cycle()
.take(width as usize * 3)
.collect();
let mut data = Vec::with_capacity(row.len() * height as usize);
for _ in 0..height {
data.extend_from_slice(&row);
}
writer.write_image_data(&data).expect("png data");
}
out
}