cursive-image 0.0.6

Image view for the Cursive TUI library
Documentation
use super::super::image::*;

use std::io::{self, Write};

//
// Code
//

/// Kitty protocol control code.
#[derive(Clone, Copy, Debug)]
pub enum Code {
    /// Character.
    Char(char),

    /// Integer.
    Integer(i32),
}

impl Code {
    /// Write.
    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,
        })
    }
}