use super::super::image::*;
use std::io::{self, Write};
#[derive(Clone, Copy, Debug)]
pub enum Code {
Char(char),
Integer(i32),
}
impl Code {
pub fn write<WriteT>(&self, mut writer: WriteT) -> io::Result<()>
where
WriteT: Write,
{
match self {
Self::Char(char_) => write!(writer, "{}", char_),
Self::Integer(integer) => write!(writer, "{}", integer.to_string()),
}
}
}
impl From<char> for Code {
fn from(char_: char) -> Self {
Self::Char(char_)
}
}
impl From<i32> for Code {
fn from(integer: i32) -> Self {
Self::Integer(integer)
}
}
impl From<usize> for Code {
fn from(integer: usize) -> Self {
(integer as i32).into()
}
}
impl From<ImageFormat> for Code {
fn from(format: ImageFormat) -> Self {
Self::Integer(match format {
ImageFormat::PNG => 100,
ImageFormat::RGB => 24,
ImageFormat::RGBA => 32,
})
}
}