Documentation
use buffy::{Buffer, Color};
use crossterm::{queue, Result, style, terminal, cursor};
use std::io::{stdout, Write};

fn main() -> Result<()> {
    let mut writer = stdout();
    let (w, h) = terminal::size()?;
    let (w, h) = (w as usize, h as usize);
    let mut buf = Buffer::new(w, h-1, ' ', Color::White, Color::Rgb{r: 0, g: 134, b: 134});
    let text = "CrossTerm is awesome!";
    buf.replace_char(w/2, h/3, '|', Color::Red, Color::Cyan);
    buf.replace_line(w/2 - text.len()/2, h/2, text, Color::White, Color::Green);
    queue!(&mut writer, terminal::Clear(terminal::ClearType::All), cursor::SavePosition)?;
    for q in buf.queue() {
        for (i, c) in q.cells.iter().enumerate() {
            queue!(
                &mut writer,
                cursor::MoveTo(q.x + i as u16, q.y),
                style::SetColors(style::Colors::new(q.color[i].0.into(), q.color[i].1.into())),
                style::Print(c)
            )?;
        }
    }
    queue!(&mut writer, cursor::RestorePosition)?;
    Ok(())
}