tauri_plugin_thermal_printer/models/
paper_size.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub enum PaperSize {
5 Mm40,
7 Mm44,
9 Mm58,
11 Mm72,
13 Mm80,
15 Mm104,
17}
18
19impl PaperSize {
20 pub const DEFAULT: PaperSize = PaperSize::Mm80;
22
23 pub fn chars_per_line(&self) -> i32 {
25 match self {
26 PaperSize::Mm40 => 21,
27 PaperSize::Mm44 => 24,
28 PaperSize::Mm58 => 32,
29 PaperSize::Mm72 => 42,
30 PaperSize::Mm80 => 48,
31 PaperSize::Mm104 => 62,
32 }
33 }
34
35 pub fn pixels_width(&self) -> i32 {
37 match self {
38 PaperSize::Mm40 => 256,
39 PaperSize::Mm44 => 288,
40 PaperSize::Mm58 => 384,
41 PaperSize::Mm72 => 512,
42 PaperSize::Mm80 => 576,
43 PaperSize::Mm104 => 752,
44 }
45 }
46
47 pub fn from_string(size: &str) -> Self {
49 match size.to_lowercase().as_str() {
50 "40mm" | "40" => PaperSize::Mm40,
51 "44mm" | "44" => PaperSize::Mm44,
52 "58mm" | "58" | "small" => PaperSize::Mm58,
53 "72mm" | "72" => PaperSize::Mm72,
54 "80mm" | "80" | "normal" | "default" => PaperSize::Mm80,
55 "104mm" | "104" | "wide" => PaperSize::Mm104,
56 _ => PaperSize::Mm80,
57 }
58 }
59}