1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
extern crate serde;

use serde::{Serialize, Deserialize};

/// Possible character sets
#[derive(Serialize, Deserialize, Clone, Debug)]
pub enum Charset {
    /// United states of america
    USA,
    /// France
    France,
    /// Germany
    Germany,
    /// United Kingdom
    UK,
    /// 1st possibility for Denmark
    Denmark1,
    /// Sweden
    Sweden,
    /// Italy
    Italy,
    /// 1st possibility for Spain
    Spain1,
    /// Japan
    Japan,
    /// Norway
    Norway,
    /// 2nd possibility for Denmark
    Denmark2,
    /// 2nd possibility for Spain
    Spain2,
    /// Latin America
    LatinAmerica,
    /// Korea
    Korea,
    /// Slovenia or Croatia
    SloveniaCroatia,
    /// China
    China,
    /// Vietnam
    Vietnam,
    /// Arabia
    Arabia
}

impl Charset {
    /// Returns the byte representation of the esc/pos command
    pub fn as_bytes(&self) -> Vec<u8> {
        match self {
            Charset::USA => vec![0x00],
            Charset::France => vec![0x01],
            Charset::Germany => vec![0x02],
            Charset::UK => vec![0x03],
            Charset::Denmark1 => vec![0x04],
            Charset::Sweden => vec![0x05],
            Charset::Italy => vec![0x06],
            Charset::Spain1 => vec![0x07],
            Charset::Japan => vec![0x08],
            Charset::Norway => vec![0x09],
            Charset::Denmark2 => vec![0x0a],
            Charset::Spain2 => vec![0x0b],
            Charset::LatinAmerica => vec![0x0c],
            Charset::Korea => vec![0x0d],
            Charset::SloveniaCroatia => vec![0x0e],
            Charset::China => vec![0x0f],
            Charset::Vietnam => vec![0x10],
            Charset::Arabia => vec![0x11]
        }
    }
}