use crate::Canvas;
use std::io::{Result, Write};
pub fn encode_canvas(canvas: &Canvas, w: &mut dyn Write) -> Result<()> {
encode_buffer(canvas.buffer(), canvas.width(), canvas.height(), w)
}
pub fn encode_buffer(buffer: &[u32], width: usize, height: usize, w: &mut dyn Write) -> Result<()> {
#[allow(clippy::uninlined_format_args)]
writeln!(w, "P6 {} {} 255", width, height)?;
let mut tmp_buffer = vec![0u8; 6144];
for chunk in buffer.chunks(2048) {
chunk
.iter()
.flat_map(|p| p.to_be_bytes().into_iter().skip(1))
.enumerate()
.for_each(|(i, b)| tmp_buffer[i] = b);
w.write_all(&tmp_buffer)?;
}
Ok(())
}