Skip to main content

winprint_ext/ticket/
predefined_media_name.rs

1use super::{document::NS_PSK, PredefinedName};
2use std::str::FromStr;
3use strum::EnumString;
4use xml::name::OwnedName;
5
6#[derive(EnumString, Debug, PartialEq, Eq, Hash, Clone, Copy)]
7#[allow(missing_docs)]
8/// Represents a predefined media name.
9pub enum PredefinedMediaName {
10    BusinessCard,
11    CreditCard,
12    ISOA0,
13    ISOA1,
14    ISOA10,
15    ISOA2,
16    ISOA3,
17    ISOA3Extra,
18    ISOA3Rotated,
19    ISOA4,
20    ISOA4Extra,
21    ISOA4Rotated,
22    ISOA5,
23    ISOA5Extra,
24    ISOA5Rotated,
25    ISOA6,
26    ISOA6Rotated,
27    ISOA7,
28    ISOA8,
29    ISOA9,
30    ISOB0,
31    ISOB1,
32    ISOB10,
33    ISOB2,
34    ISOB3,
35    ISOB4,
36    ISOB4Envelope,
37    ISOB5Envelope,
38    ISOB5Extra,
39    ISOB7,
40    ISOB8,
41    ISOB9,
42    ISOC0,
43    ISOC1,
44    ISOC10,
45    ISOC2,
46    ISOC3,
47    ISOC3Envelope,
48    ISOC4,
49    ISOC4Envelope,
50    ISOC5,
51    ISOC5Envelope,
52    ISOC6,
53    ISOC6C5Envelope,
54    ISOC6Envelope,
55    ISOC7,
56    ISOC8,
57    ISOC9,
58    ISODLEnvelope,
59    ISODLEnvelopeRotated,
60    ISOSRA3,
61    JISB0,
62    JISB1,
63    JISB10,
64    JISB2,
65    JISB3,
66    JISB4,
67    JISB4Rotated,
68    JISB5,
69    JISB5Rotated,
70    JISB6,
71    JISB6Rotated,
72    JISB7,
73    JISB8,
74    JISB9,
75    Japan2LPhoto,
76    JapanChou3Envelope,
77    JapanChou3EnvelopeRotated,
78    JapanChou4Envelope,
79    JapanChou4EnvelopeRotated,
80    JapanDoubleHagakiPostcard,
81    JapanDoubleHagakiPostcardRotated,
82    JapanHagakiPostcard,
83    JapanHagakiPostcardRotated,
84    JapanKaku2Envelope,
85    JapanKaku2EnvelopeRotated,
86    JapanKaku3Envelope,
87    JapanKaku3EnvelopeRotated,
88    JapanLPhoto,
89    JapanQuadrupleHagakiPostcard,
90    JapanYou1Envelope,
91    JapanYou2Envelope,
92    JapanYou3Envelope,
93    JapanYou4Envelope,
94    JapanYou4EnvelopeRotated,
95    JapanYou6Envelope,
96    JapanYou6EnvelopeRotated,
97    NorthAmerica10x11,
98    NorthAmerica10x12,
99    NorthAmerica10x14,
100    NorthAmerica11x17,
101    NorthAmerica14x17,
102    NorthAmerica4x6,
103    NorthAmerica4x8,
104    NorthAmerica5x7,
105    NorthAmerica8x10,
106    NorthAmerica9x11,
107    NorthAmericaArchitectureASheet,
108    NorthAmericaArchitectureBSheet,
109    NorthAmericaArchitectureCSheet,
110    NorthAmericaArchitectureDSheet,
111    NorthAmericaArchitectureESheet,
112    NorthAmericaCSheet,
113    NorthAmericaDSheet,
114    NorthAmericaESheet,
115    NorthAmericaExecutive,
116    NorthAmericaGermanLegalFanfold,
117    NorthAmericaGermanStandardFanfold,
118    NorthAmericaLegal,
119    NorthAmericaLegalExtra,
120    NorthAmericaLetter,
121    NorthAmericaLetterExtra,
122    NorthAmericaLetterPlus,
123    NorthAmericaLetterRotated,
124    NorthAmericaMonarchEnvelope,
125    NorthAmericaNote,
126    NorthAmericaNumber10Envelope,
127    NorthAmericaNumber10EnvelopeRotated,
128    NorthAmericaNumber11Envelope,
129    NorthAmericaNumber12Envelope,
130    NorthAmericaNumber14Envelope,
131    NorthAmericaNumber9Envelope,
132    NorthAmericaPersonalEnvelope,
133    NorthAmericaQuarto,
134    NorthAmericaStatement,
135    NorthAmericaSuperA,
136    NorthAmericaSuperB,
137    NorthAmericaTabloid,
138    NorthAmericaTabloidExtra,
139    OtherMetricA3Plus,
140    OtherMetricA4Plus,
141    OtherMetricFolio,
142    OtherMetricInviteEnvelope,
143    OtherMetricItalianEnvelope,
144    PRC10Envelope,
145    PRC10EnvelopeRotated,
146    PRC16K,
147    PRC16KRotated,
148    PRC1Envelope,
149    PRC1EnvelopeRotated,
150    PRC2Envelope,
151    PRC2EnvelopeRotated,
152    PRC32K,
153    PRC32KBig,
154    PRC32KRotated,
155    PRC3Envelope,
156    PRC3EnvelopeRotated,
157    PRC4Envelope,
158    PRC4EnvelopeRotated,
159    PRC5Envelope,
160    PRC5EnvelopeRotated,
161    PRC6Envelope,
162    PRC6EnvelopeRotated,
163    PRC7Envelope,
164    PRC7EnvelopeRotated,
165    PRC8Envelope,
166    PRC8EnvelopeRotated,
167    PRC9Envelope,
168    PRC9EnvelopeRotated,
169    Roll04Inch,
170    Roll06Inch,
171    Roll08Inch,
172    Roll12Inch,
173    Roll15Inch,
174    Roll18Inch,
175    Roll22Inch,
176    Roll24Inch,
177    Roll30Inch,
178    Roll36Inch,
179    Roll54Inch,
180}
181
182impl PredefinedName for PredefinedMediaName {
183    /// Get predefined media name from the given name.
184    fn from_name(name: &OwnedName) -> Option<Self> {
185        if name.namespace_ref() == Some(NS_PSK) {
186            Self::from_str(name.local_name.as_str()).ok()
187        } else {
188            None
189        }
190    }
191}