termgpu 0.1.0

A GPU-accelerated terminal graphics engine for Rust, enabling real-time 3D rendering in the terminal.
pub mod prelude {
    pub use super::Size;
}

pub mod macros;

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Size {
    Renderer(u32, u32),
    Terminal(u16, u16),
}

impl Size {
    pub fn new_renderer(width: u32, height: u32) -> Self {
        Size::Renderer(width, height)
    }

    pub fn new_terminal(cols: u16, rows: u16) -> Self {
        Size::Terminal(cols, rows)
    }

    pub fn to_renderer(&self) -> Size {
        match self {
            Size::Renderer(_, _) => *self,
            Size::Terminal(cols, rows) => Size::Renderer(*cols as u32, *rows as u32 * 2),
        }
    }

    pub fn to_terminal(&self) -> Size {
        match self {
            Size::Renderer(w, h) => Size::Terminal(*w as u16, *h as u16 / 2),
            Size::Terminal(_, _) => *self,
        }
    }
}