use super::image_mode::ImageMode;
use crate::models::print_sections::Logo as LogoSection;
#[derive(Debug, Clone)]
pub struct Logo {
key_code: u8,
mode: ImageMode,
}
impl Logo {
pub fn new(key_code: u8) -> Self {
Self {
key_code,
mode: ImageMode::Normal,
}
}
pub fn set_mode(mut self, mode: ImageMode) -> Self {
self.mode = mode;
self
}
pub fn get_print_command(&self) -> Vec<u8> {
vec![
0x1C, 0x70, self.key_code, self.mode.value(), ]
}
}
pub fn process_section(logo: &LogoSection) -> Result<Vec<u8>, String> {
let mode = match logo.mode.as_str() {
"normal" => ImageMode::Normal,
"double_width" => ImageMode::DoubleWidth,
"double_height" => ImageMode::DoubleHeight,
"quadruple" => ImageMode::Quadruple,
_ => ImageMode::Normal,
};
let esc_pos_logo = Logo::new(logo.key_code).set_mode(mode);
let mut data = esc_pos_logo.get_print_command();
data.extend_from_slice(b"\n");
Ok(data)
}
impl Logo {
}