use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum PaperSize {
Mm40,
Mm44,
Mm58,
Mm72,
Mm80,
Mm104,
}
impl PaperSize {
pub const DEFAULT: PaperSize = PaperSize::Mm80;
pub fn chars_per_line(&self) -> i32 {
match self {
PaperSize::Mm40 => 21,
PaperSize::Mm44 => 24,
PaperSize::Mm58 => 32,
PaperSize::Mm72 => 42,
PaperSize::Mm80 => 48,
PaperSize::Mm104 => 62,
}
}
pub fn pixels_width(&self) -> i32 {
match self {
PaperSize::Mm40 => 256,
PaperSize::Mm44 => 288,
PaperSize::Mm58 => 384,
PaperSize::Mm72 => 512,
PaperSize::Mm80 => 576,
PaperSize::Mm104 => 752,
}
}
pub fn from_string(size: &str) -> Self {
match size.to_lowercase().as_str() {
"40mm" | "40" => PaperSize::Mm40,
"44mm" | "44" => PaperSize::Mm44,
"58mm" | "58" | "small" => PaperSize::Mm58,
"72mm" | "72" => PaperSize::Mm72,
"80mm" | "80" | "normal" | "default" => PaperSize::Mm80,
"104mm" | "104" | "wide" => PaperSize::Mm104,
_ => PaperSize::Mm80,
}
}
}