use image::Rgba;
use crate::render::screen::Color;
pub fn color_to_rgba(color: Color, is_foreground: bool) -> Rgba<u8> {
match color {
Color::Default => {
if is_foreground {
Rgba([255, 255, 255, 255])
} else {
Rgba([0, 0, 0, 255])
}
}
Color::Indexed(idx) => COLOR_256[idx as usize],
Color::Rgb(r, g, b) => Rgba([r, g, b, 255]),
}
}
pub static COLOR_256: [Rgba<u8>; 256] = [
Rgba([0, 0, 0, 255]),
Rgba([128, 0, 0, 255]),
Rgba([0, 128, 0, 255]),
Rgba([128, 128, 0, 255]),
Rgba([0, 0, 128, 255]),
Rgba([128, 0, 128, 255]),
Rgba([0, 128, 128, 255]),
Rgba([192, 192, 192, 255]),
Rgba([128, 128, 128, 255]),
Rgba([255, 0, 0, 255]),
Rgba([0, 255, 0, 255]),
Rgba([255, 255, 0, 255]),
Rgba([0, 0, 255, 255]),
Rgba([255, 0, 255, 255]),
Rgba([0, 255, 255, 255]),
Rgba([255, 255, 255, 255]),
Rgba([0, 0, 0, 255]),
Rgba([0, 0, 95, 255]),
Rgba([0, 0, 135, 255]),
Rgba([0, 0, 175, 255]),
Rgba([0, 0, 215, 255]),
Rgba([0, 0, 255, 255]),
Rgba([0, 95, 0, 255]),
Rgba([0, 95, 95, 255]),
Rgba([0, 95, 135, 255]),
Rgba([0, 95, 175, 255]),
Rgba([0, 95, 215, 255]),
Rgba([0, 95, 255, 255]),
Rgba([0, 135, 0, 255]),
Rgba([0, 135, 95, 255]),
Rgba([0, 135, 135, 255]),
Rgba([0, 135, 175, 255]),
Rgba([0, 135, 215, 255]),
Rgba([0, 135, 255, 255]),
Rgba([0, 175, 0, 255]),
Rgba([0, 175, 95, 255]),
Rgba([0, 175, 135, 255]),
Rgba([0, 175, 175, 255]),
Rgba([0, 175, 215, 255]),
Rgba([0, 175, 255, 255]),
Rgba([0, 215, 0, 255]),
Rgba([0, 215, 95, 255]),
Rgba([0, 215, 135, 255]),
Rgba([0, 215, 175, 255]),
Rgba([0, 215, 215, 255]),
Rgba([0, 215, 255, 255]),
Rgba([0, 255, 0, 255]),
Rgba([0, 255, 95, 255]),
Rgba([0, 255, 135, 255]),
Rgba([0, 255, 175, 255]),
Rgba([0, 255, 215, 255]),
Rgba([0, 255, 255, 255]),
Rgba([95, 0, 0, 255]),
Rgba([95, 0, 95, 255]),
Rgba([95, 0, 135, 255]),
Rgba([95, 0, 175, 255]),
Rgba([95, 0, 215, 255]),
Rgba([95, 0, 255, 255]),
Rgba([95, 95, 0, 255]),
Rgba([95, 95, 95, 255]),
Rgba([95, 95, 135, 255]),
Rgba([95, 95, 175, 255]),
Rgba([95, 95, 215, 255]),
Rgba([95, 95, 255, 255]),
Rgba([95, 135, 0, 255]),
Rgba([95, 135, 95, 255]),
Rgba([95, 135, 135, 255]),
Rgba([95, 135, 175, 255]),
Rgba([95, 135, 215, 255]),
Rgba([95, 135, 255, 255]),
Rgba([95, 175, 0, 255]),
Rgba([95, 175, 95, 255]),
Rgba([95, 175, 135, 255]),
Rgba([95, 175, 175, 255]),
Rgba([95, 175, 215, 255]),
Rgba([95, 175, 255, 255]),
Rgba([95, 215, 0, 255]),
Rgba([95, 215, 95, 255]),
Rgba([95, 215, 135, 255]),
Rgba([95, 215, 175, 255]),
Rgba([95, 215, 215, 255]),
Rgba([95, 215, 255, 255]),
Rgba([95, 255, 0, 255]),
Rgba([95, 255, 95, 255]),
Rgba([95, 255, 135, 255]),
Rgba([95, 255, 175, 255]),
Rgba([95, 255, 215, 255]),
Rgba([95, 255, 255, 255]),
Rgba([135, 0, 0, 255]),
Rgba([135, 0, 95, 255]),
Rgba([135, 0, 135, 255]),
Rgba([135, 0, 175, 255]),
Rgba([135, 0, 215, 255]),
Rgba([135, 0, 255, 255]),
Rgba([135, 95, 0, 255]),
Rgba([135, 95, 95, 255]),
Rgba([135, 95, 135, 255]),
Rgba([135, 95, 175, 255]),
Rgba([135, 95, 215, 255]),
Rgba([135, 95, 255, 255]),
Rgba([135, 135, 0, 255]),
Rgba([135, 135, 95, 255]),
Rgba([135, 135, 135, 255]),
Rgba([135, 135, 175, 255]),
Rgba([135, 135, 215, 255]),
Rgba([135, 135, 255, 255]),
Rgba([135, 175, 0, 255]),
Rgba([135, 175, 95, 255]),
Rgba([135, 175, 135, 255]),
Rgba([135, 175, 175, 255]),
Rgba([135, 175, 215, 255]),
Rgba([135, 175, 255, 255]),
Rgba([135, 215, 0, 255]),
Rgba([135, 215, 95, 255]),
Rgba([135, 215, 135, 255]),
Rgba([135, 215, 175, 255]),
Rgba([135, 215, 215, 255]),
Rgba([135, 215, 255, 255]),
Rgba([135, 255, 0, 255]),
Rgba([135, 255, 95, 255]),
Rgba([135, 255, 135, 255]),
Rgba([135, 255, 175, 255]),
Rgba([135, 255, 215, 255]),
Rgba([135, 255, 255, 255]),
Rgba([175, 0, 0, 255]),
Rgba([175, 0, 95, 255]),
Rgba([175, 0, 135, 255]),
Rgba([175, 0, 175, 255]),
Rgba([175, 0, 215, 255]),
Rgba([175, 0, 255, 255]),
Rgba([175, 95, 0, 255]),
Rgba([175, 95, 95, 255]),
Rgba([175, 95, 135, 255]),
Rgba([175, 95, 175, 255]),
Rgba([175, 95, 215, 255]),
Rgba([175, 95, 255, 255]),
Rgba([175, 135, 0, 255]),
Rgba([175, 135, 95, 255]),
Rgba([175, 135, 135, 255]),
Rgba([175, 135, 175, 255]),
Rgba([175, 135, 215, 255]),
Rgba([175, 135, 255, 255]),
Rgba([175, 175, 0, 255]),
Rgba([175, 175, 95, 255]),
Rgba([175, 175, 135, 255]),
Rgba([175, 175, 175, 255]),
Rgba([175, 175, 215, 255]),
Rgba([175, 175, 255, 255]),
Rgba([175, 215, 0, 255]),
Rgba([175, 215, 95, 255]),
Rgba([175, 215, 135, 255]),
Rgba([175, 215, 175, 255]),
Rgba([175, 215, 215, 255]),
Rgba([175, 215, 255, 255]),
Rgba([175, 255, 0, 255]),
Rgba([175, 255, 95, 255]),
Rgba([175, 255, 135, 255]),
Rgba([175, 255, 175, 255]),
Rgba([175, 255, 215, 255]),
Rgba([175, 255, 255, 255]),
Rgba([215, 0, 0, 255]),
Rgba([215, 0, 95, 255]),
Rgba([215, 0, 135, 255]),
Rgba([215, 0, 175, 255]),
Rgba([215, 0, 215, 255]),
Rgba([215, 0, 255, 255]),
Rgba([215, 95, 0, 255]),
Rgba([215, 95, 95, 255]),
Rgba([215, 95, 135, 255]),
Rgba([215, 95, 175, 255]),
Rgba([215, 95, 215, 255]),
Rgba([215, 95, 255, 255]),
Rgba([215, 135, 0, 255]),
Rgba([215, 135, 95, 255]),
Rgba([215, 135, 135, 255]),
Rgba([215, 135, 175, 255]),
Rgba([215, 135, 215, 255]),
Rgba([215, 135, 255, 255]),
Rgba([215, 175, 0, 255]),
Rgba([215, 175, 95, 255]),
Rgba([215, 175, 135, 255]),
Rgba([215, 175, 175, 255]),
Rgba([215, 175, 215, 255]),
Rgba([215, 175, 255, 255]),
Rgba([215, 215, 0, 255]),
Rgba([215, 215, 95, 255]),
Rgba([215, 215, 135, 255]),
Rgba([215, 215, 175, 255]),
Rgba([215, 215, 215, 255]),
Rgba([215, 215, 255, 255]),
Rgba([215, 255, 0, 255]),
Rgba([215, 255, 95, 255]),
Rgba([215, 255, 135, 255]),
Rgba([215, 255, 175, 255]),
Rgba([215, 255, 215, 255]),
Rgba([215, 255, 255, 255]),
Rgba([255, 0, 0, 255]),
Rgba([255, 0, 95, 255]),
Rgba([255, 0, 135, 255]),
Rgba([255, 0, 175, 255]),
Rgba([255, 0, 215, 255]),
Rgba([255, 0, 255, 255]),
Rgba([255, 95, 0, 255]),
Rgba([255, 95, 95, 255]),
Rgba([255, 95, 135, 255]),
Rgba([255, 95, 175, 255]),
Rgba([255, 95, 215, 255]),
Rgba([255, 95, 255, 255]),
Rgba([255, 135, 0, 255]),
Rgba([255, 135, 95, 255]),
Rgba([255, 135, 135, 255]),
Rgba([255, 135, 175, 255]),
Rgba([255, 135, 215, 255]),
Rgba([255, 135, 255, 255]),
Rgba([255, 175, 0, 255]),
Rgba([255, 175, 95, 255]),
Rgba([255, 175, 135, 255]),
Rgba([255, 175, 175, 255]),
Rgba([255, 175, 215, 255]),
Rgba([255, 175, 255, 255]),
Rgba([255, 215, 0, 255]),
Rgba([255, 215, 95, 255]),
Rgba([255, 215, 135, 255]),
Rgba([255, 215, 175, 255]),
Rgba([255, 215, 215, 255]),
Rgba([255, 215, 255, 255]),
Rgba([255, 255, 0, 255]),
Rgba([255, 255, 95, 255]),
Rgba([255, 255, 135, 255]),
Rgba([255, 255, 175, 255]),
Rgba([255, 255, 215, 255]),
Rgba([255, 255, 255, 255]),
Rgba([8, 8, 8, 255]),
Rgba([18, 18, 18, 255]),
Rgba([28, 28, 28, 255]),
Rgba([38, 38, 38, 255]),
Rgba([48, 48, 48, 255]),
Rgba([58, 58, 58, 255]),
Rgba([68, 68, 68, 255]),
Rgba([78, 78, 78, 255]),
Rgba([88, 88, 88, 255]),
Rgba([98, 98, 98, 255]),
Rgba([108, 108, 108, 255]),
Rgba([118, 118, 118, 255]),
Rgba([128, 128, 128, 255]),
Rgba([138, 138, 138, 255]),
Rgba([148, 148, 148, 255]),
Rgba([158, 158, 158, 255]),
Rgba([168, 168, 168, 255]),
Rgba([178, 178, 178, 255]),
Rgba([188, 188, 188, 255]),
Rgba([198, 198, 198, 255]),
Rgba([208, 208, 208, 255]),
Rgba([218, 218, 218, 255]),
Rgba([228, 228, 228, 255]),
Rgba([238, 238, 238, 255]),
];