kittyfb 0.1.1

renders pictures to a kitty terminal
Documentation
use io::Write;
use std::io;

pub fn display_chunks(buf: &[u8], size: (usize, usize), bits_per_pixel: usize) -> io::Result<()> {
    let stdout = std::io::stdout();
    let mut handle = stdout.lock();

    for k in 0..(buf.len() / 4096 + 1) {
        let from = k * 4096;
        let to = ((k + 1) * 4096).min(buf.len());
        let m = to < buf.len();

        let cmd = if k == 0 {
            format!(
                "\x1b_Gf={},s={},v={},a=T,m={};",
                bits_per_pixel,
                size.0,
                size.1,
                if m { 1 } else { 0 }
            )
        } else if m {
            "\x1b_Gm=1;".into()
        } else {
            "\x1b_Gm=0;".into()
        };

        handle.write_all(&cmd.as_bytes())?;
        handle.write_all(&base64::encode(&buf[from..to]).as_bytes())?;
        handle.write_all(b"\x1b\\")?;
        handle.flush()?;
    }

    Ok(())
}