1use serde::{Deserialize, Serialize};
6
7use super::common::{AttrValString, XlsxExtLst, XlsxInnerXml};
8
9#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
16#[serde(rename = "a:theme")]
17pub struct XlsxTheme {
18 #[serde(rename = "@xmlns:a", default)]
19 pub xmlns_a: Option<String>,
20 #[serde(rename = "@xmlns:r", default)]
21 pub xmlns_r: Option<String>,
22 #[serde(rename = "@name", default)]
23 pub name: String,
24 #[serde(rename = "a:themeElements", default)]
25 pub theme_elements: XlsxBaseStyles,
26 #[serde(rename = "a:objectDefaults", default)]
27 pub object_defaults: XlsxInnerXml,
28 #[serde(rename = "a:extraClrSchemeLst", default)]
29 pub extra_clr_scheme_lst: XlsxInnerXml,
30 #[serde(rename = "a:custClrLst", default)]
31 pub cust_clr_lst: Option<XlsxInnerXml>,
32 #[serde(rename = "a:extLst", default)]
33 pub ext_lst: Option<XlsxExtLst>,
34}
35
36#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
38#[serde(rename = "a:themeElements")]
39pub struct XlsxBaseStyles {
40 #[serde(rename = "a:clrScheme", default)]
41 pub clr_scheme: XlsxColorScheme,
42 #[serde(rename = "a:fontScheme", default)]
43 pub font_scheme: XlsxFontScheme,
44 #[serde(rename = "a:fmtScheme", default)]
45 pub fmt_scheme: XlsxStyleMatrix,
46 #[serde(rename = "a:extLst", default)]
47 pub ext_lst: Option<XlsxExtLst>,
48}
49
50#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
53pub struct XlsxCtColor {
54 #[serde(rename = "a:scrgbClr", default)]
55 pub scrgb_clr: Option<XlsxInnerXml>,
56 #[serde(rename = "a:srgbClr", default)]
57 pub srgb_clr: Option<AttrValString>,
58 #[serde(rename = "a:hslClr", default)]
59 pub hsl_clr: Option<XlsxInnerXml>,
60 #[serde(rename = "a:sysClr", default)]
61 pub sys_clr: Option<XlsxSysClr>,
62 #[serde(rename = "a:schemeClr", default)]
63 pub scheme_clr: Option<XlsxInnerXml>,
64 #[serde(rename = "a:prstClr", default)]
65 pub prst_clr: Option<XlsxInnerXml>,
66}
67
68#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
70#[serde(rename = "a:clrScheme")]
71pub struct XlsxColorScheme {
72 #[serde(rename = "@name", default)]
73 pub name: String,
74 #[serde(rename = "a:dk1", default)]
75 pub dk1: XlsxCtColor,
76 #[serde(rename = "a:lt1", default)]
77 pub lt1: XlsxCtColor,
78 #[serde(rename = "a:dk2", default)]
79 pub dk2: XlsxCtColor,
80 #[serde(rename = "a:lt2", default)]
81 pub lt2: XlsxCtColor,
82 #[serde(rename = "a:accent1", default)]
83 pub accent1: XlsxCtColor,
84 #[serde(rename = "a:accent2", default)]
85 pub accent2: XlsxCtColor,
86 #[serde(rename = "a:accent3", default)]
87 pub accent3: XlsxCtColor,
88 #[serde(rename = "a:accent4", default)]
89 pub accent4: XlsxCtColor,
90 #[serde(rename = "a:accent5", default)]
91 pub accent5: XlsxCtColor,
92 #[serde(rename = "a:accent6", default)]
93 pub accent6: XlsxCtColor,
94 #[serde(rename = "a:hlink", default)]
95 pub hlink: XlsxCtColor,
96 #[serde(rename = "a:folHlink", default)]
97 pub fol_hlink: XlsxCtColor,
98 #[serde(rename = "a:extLst", default)]
99 pub ext_lst: Option<XlsxExtLst>,
100}
101
102#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
105pub struct XlsxCtSupplementalFont {
106 #[serde(rename = "@script", default)]
107 pub script: String,
108 #[serde(rename = "@typeface", default)]
109 pub typeface: String,
110}
111
112#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
114pub struct XlsxFontCollection {
115 #[serde(rename = "a:latin", default)]
116 pub latin: Option<XlsxCtTextFont>,
117 #[serde(rename = "a:ea", default)]
118 pub ea: Option<XlsxCtTextFont>,
119 #[serde(rename = "a:cs", default)]
120 pub cs: Option<XlsxCtTextFont>,
121 #[serde(rename = "a:font", default)]
122 pub font: Vec<XlsxCtSupplementalFont>,
123 #[serde(rename = "a:extLst", default)]
124 pub ext_lst: Option<XlsxExtLst>,
125}
126
127#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
129#[serde(rename = "a:fontScheme")]
130pub struct XlsxFontScheme {
131 #[serde(rename = "@name", default)]
132 pub name: String,
133 #[serde(rename = "a:majorFont", default)]
134 pub major_font: XlsxFontCollection,
135 #[serde(rename = "a:minorFont", default)]
136 pub minor_font: XlsxFontCollection,
137 #[serde(rename = "a:extLst", default)]
138 pub ext_lst: Option<XlsxExtLst>,
139}
140
141#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
144#[serde(rename = "a:fmtScheme")]
145pub struct XlsxStyleMatrix {
146 #[serde(rename = "@name", default)]
147 pub name: Option<String>,
148 #[serde(rename = "a:fillStyleLst", default)]
149 pub fill_style_lst: XlsxInnerXml,
150 #[serde(rename = "a:lnStyleLst", default)]
151 pub ln_style_lst: XlsxInnerXml,
152 #[serde(rename = "a:effectStyleLst", default)]
153 pub effect_style_lst: XlsxInnerXml,
154 #[serde(rename = "a:bgFillStyleLst", default)]
155 pub bg_fill_style_lst: XlsxInnerXml,
156}
157
158#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
160#[serde(rename = "a:sysClr")]
161pub struct XlsxSysClr {
162 #[serde(rename = "@val", default)]
163 pub val: String,
164 #[serde(rename = "@lastClr", default)]
165 pub last_clr: String,
166}
167
168#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
170pub struct XlsxCtTextFont {
171 #[serde(rename = "@typeface", default)]
172 pub typeface: String,
173 #[serde(rename = "@panose", default)]
174 pub panose: Option<String>,
175 #[serde(rename = "@pitchFamily", default)]
176 pub pitch_family: Option<String>,
177 #[serde(rename = "@Charset", default)]
178 pub charset: Option<String>,
179}
180
181#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
187#[serde(rename = "theme")]
188pub struct DecodeTheme {
189 #[serde(rename = "@name", default)]
190 pub name: String,
191 #[serde(rename = "themeElements", default)]
192 pub theme_elements: DecodeBaseStyles,
193 #[serde(rename = "objectDefaults", default)]
194 pub object_defaults: XlsxInnerXml,
195 #[serde(rename = "extraClrSchemeLst", default)]
196 pub extra_clr_scheme_lst: XlsxInnerXml,
197 #[serde(rename = "custClrLst", default)]
198 pub cust_clr_lst: Option<XlsxInnerXml>,
199 #[serde(rename = "extLst", default)]
200 pub ext_lst: Option<XlsxExtLst>,
201}
202
203#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
205#[serde(rename = "themeElements")]
206pub struct DecodeBaseStyles {
207 #[serde(rename = "clrScheme", default)]
208 pub clr_scheme: DecodeColorScheme,
209 #[serde(rename = "fontScheme", default)]
210 pub font_scheme: DecodeFontScheme,
211 #[serde(rename = "fmtScheme", default)]
212 pub fmt_scheme: DecodeStyleMatrix,
213 #[serde(rename = "extLst", default)]
214 pub ext_lst: Option<XlsxExtLst>,
215}
216
217#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
219#[serde(rename = "clrScheme")]
220pub struct DecodeColorScheme {
221 #[serde(rename = "@name", default)]
222 pub name: String,
223 #[serde(rename = "dk1", default)]
224 pub dk1: DecodeCtColor,
225 #[serde(rename = "lt1", default)]
226 pub lt1: DecodeCtColor,
227 #[serde(rename = "dk2", default)]
228 pub dk2: DecodeCtColor,
229 #[serde(rename = "lt2", default)]
230 pub lt2: DecodeCtColor,
231 #[serde(rename = "accent1", default)]
232 pub accent1: DecodeCtColor,
233 #[serde(rename = "accent2", default)]
234 pub accent2: DecodeCtColor,
235 #[serde(rename = "accent3", default)]
236 pub accent3: DecodeCtColor,
237 #[serde(rename = "accent4", default)]
238 pub accent4: DecodeCtColor,
239 #[serde(rename = "accent5", default)]
240 pub accent5: DecodeCtColor,
241 #[serde(rename = "accent6", default)]
242 pub accent6: DecodeCtColor,
243 #[serde(rename = "hlink", default)]
244 pub hlink: DecodeCtColor,
245 #[serde(rename = "folHlink", default)]
246 pub fol_hlink: DecodeCtColor,
247 #[serde(rename = "extLst", default)]
248 pub ext_lst: Option<XlsxExtLst>,
249}
250
251#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
253pub struct DecodeCtColor {
254 #[serde(rename = "scrgbClr", default)]
255 pub scrgb_clr: Option<XlsxInnerXml>,
256 #[serde(rename = "srgbClr", default)]
257 pub srgb_clr: Option<AttrValString>,
258 #[serde(rename = "hslClr", default)]
259 pub hsl_clr: Option<XlsxInnerXml>,
260 #[serde(rename = "sysClr", default)]
261 pub sys_clr: Option<XlsxSysClr>,
262 #[serde(rename = "schemeClr", default)]
263 pub scheme_clr: Option<XlsxInnerXml>,
264 #[serde(rename = "prstClr", default)]
265 pub prst_clr: Option<XlsxInnerXml>,
266}
267
268#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
270#[serde(rename = "fontScheme")]
271pub struct DecodeFontScheme {
272 #[serde(rename = "@name", default)]
273 pub name: String,
274 #[serde(rename = "majorFont", default)]
275 pub major_font: DecodeFontCollection,
276 #[serde(rename = "minorFont", default)]
277 pub minor_font: DecodeFontCollection,
278 #[serde(rename = "extLst", default)]
279 pub ext_lst: Option<XlsxExtLst>,
280}
281
282#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
284pub struct DecodeFontCollection {
285 #[serde(rename = "latin", default)]
286 pub latin: Option<XlsxCtTextFont>,
287 #[serde(rename = "ea", default)]
288 pub ea: Option<XlsxCtTextFont>,
289 #[serde(rename = "cs", default)]
290 pub cs: Option<XlsxCtTextFont>,
291 #[serde(rename = "font", default)]
292 pub font: Vec<XlsxCtSupplementalFont>,
293 #[serde(rename = "extLst", default)]
294 pub ext_lst: Option<XlsxExtLst>,
295}
296
297#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
299#[serde(rename = "fmtScheme")]
300pub struct DecodeStyleMatrix {
301 #[serde(rename = "@name", default)]
302 pub name: Option<String>,
303 #[serde(rename = "fillStyleLst", default)]
304 pub fill_style_lst: XlsxInnerXml,
305 #[serde(rename = "lnStyleLst", default)]
306 pub ln_style_lst: XlsxInnerXml,
307 #[serde(rename = "effectStyleLst", default)]
308 pub effect_style_lst: XlsxInnerXml,
309 #[serde(rename = "bgFillStyleLst", default)]
310 pub bg_fill_style_lst: XlsxInnerXml,
311}