cega 0.1.1

CGA and EGA binary image file processing library
Documentation
use crate::color::Color;

pub type Palette<T> = Vec<T>;
pub type ColorPalette = Vec<Color>;
pub type CharPalette = Vec<char>;

pub type CGAColorPalette = [Color; 4];
pub type CGACharPalette = [char; 4];
pub type EGAColorPalette = [Color; 16];

pub const CGA0: CGAColorPalette = [
    Color::Black(false),
    Color::Cyan(true),
    Color::Magenta(true),
    Color::White(true),
];
pub const CGA0I: CGAColorPalette = [
    Color::Black(false),
    Color::Green(true),
    Color::Red(true),
    Color::Brown(true),
];
pub const CGA1: CGAColorPalette = [
    Color::Black(false),
    Color::Cyan(false),
    Color::Magenta(false),
    Color::White(false),
];
pub const CGA1I: CGAColorPalette = [
    Color::Black(false),
    Color::Cyan(true),
    Color::Magenta(true),
    Color::White(true),
];

pub const EGA0: EGAColorPalette = [
    Color::Black(false),
    Color::Blue(false),
    Color::Green(false),
    Color::Cyan(false),
    Color::Red(false),
    Color::Magenta(false),
    Color::Brown(false),
    Color::White(false),
    Color::Black(true),
    Color::Blue(true),
    Color::Green(true),
    Color::Cyan(true),
    Color::Red(true),
    Color::Magenta(true),
    Color::Brown(true),
    Color::White(true),
];

pub const CGACHAR: CGACharPalette = [' ', '*', '+', ''];

pub fn palette_from_abbr(name: &str) -> ColorPalette {
    match name {
        "e" => EGA0.to_vec(),
        "0" => CGA0.to_vec(),
        "0i" => CGA0I.to_vec(),
        "1i" => CGA1I.to_vec(),
        "1" | _ => CGA1.to_vec(),
    }
}

pub fn cga_char_palette() -> Palette<char> {
    CGACHAR.to_vec()
}