umya_spreadsheet/structs/drawing/charts/
manual_layout.rs

1// c:manualLayout
2use super::Height;
3use super::HeightMode;
4use super::LayoutTarget;
5use super::Left;
6use super::LeftMode;
7use super::Top;
8use super::TopMode;
9use super::Width;
10use super::WidthMode;
11use crate::writer::driver::*;
12use crate::xml_read_loop;
13use quick_xml::events::{BytesStart, Event};
14use quick_xml::Reader;
15use quick_xml::Writer;
16use std::io::Cursor;
17
18#[derive(Clone, Default, Debug)]
19pub struct ManualLayout {
20    height: Option<Height>,
21    height_mode: Option<HeightMode>,
22    layout_target: Option<LayoutTarget>,
23    left: Option<Left>,
24    left_mode: Option<LeftMode>,
25    top: Option<Top>,
26    top_mode: Option<TopMode>,
27    width: Option<Width>,
28    width_mode: Option<WidthMode>,
29}
30
31impl ManualLayout {
32    pub fn get_height(&self) -> Option<&Height> {
33        self.height.as_ref()
34    }
35
36    pub fn get_height_mut(&mut self) -> Option<&mut Height> {
37        self.height.as_mut()
38    }
39
40    pub fn set_height(&mut self, value: Height) -> &mut ManualLayout {
41        self.height = Some(value);
42        self
43    }
44
45    pub fn get_height_mode(&self) -> Option<&HeightMode> {
46        self.height_mode.as_ref()
47    }
48
49    pub fn get_height_mode_mut(&mut self) -> Option<&mut HeightMode> {
50        self.height_mode.as_mut()
51    }
52
53    pub fn set_height_mode(&mut self, value: HeightMode) -> &mut ManualLayout {
54        self.height_mode = Some(value);
55        self
56    }
57
58    pub fn get_layout_target(&self) -> Option<&LayoutTarget> {
59        self.layout_target.as_ref()
60    }
61
62    pub fn get_layout_target_mut(&mut self) -> Option<&mut LayoutTarget> {
63        self.layout_target.as_mut()
64    }
65
66    pub fn set_layout_target(&mut self, value: LayoutTarget) -> &mut ManualLayout {
67        self.layout_target = Some(value);
68        self
69    }
70
71    pub fn get_left(&self) -> Option<&Left> {
72        self.left.as_ref()
73    }
74
75    pub fn get_left_mut(&mut self) -> Option<&mut Left> {
76        self.left.as_mut()
77    }
78
79    pub fn set_left(&mut self, value: Left) -> &mut ManualLayout {
80        self.left = Some(value);
81        self
82    }
83
84    pub fn get_left_mode(&self) -> Option<&LeftMode> {
85        self.left_mode.as_ref()
86    }
87
88    pub fn get_left_mode_mut(&mut self) -> Option<&mut LeftMode> {
89        self.left_mode.as_mut()
90    }
91
92    pub fn set_left_mode(&mut self, value: LeftMode) -> &mut ManualLayout {
93        self.left_mode = Some(value);
94        self
95    }
96
97    pub fn get_top(&self) -> Option<&Top> {
98        self.top.as_ref()
99    }
100
101    pub fn get_top_mut(&mut self) -> Option<&mut Top> {
102        self.top.as_mut()
103    }
104
105    pub fn set_top(&mut self, value: Top) -> &mut ManualLayout {
106        self.top = Some(value);
107        self
108    }
109
110    pub fn get_top_mode(&self) -> Option<&TopMode> {
111        self.top_mode.as_ref()
112    }
113
114    pub fn get_top_mode_mut(&mut self) -> Option<&mut TopMode> {
115        self.top_mode.as_mut()
116    }
117
118    pub fn set_top_mode(&mut self, value: TopMode) -> &mut ManualLayout {
119        self.top_mode = Some(value);
120        self
121    }
122
123    pub fn get_width(&self) -> Option<&Width> {
124        self.width.as_ref()
125    }
126
127    pub fn get_width_mut(&mut self) -> Option<&mut Width> {
128        self.width.as_mut()
129    }
130
131    pub fn set_width(&mut self, value: Width) -> &mut ManualLayout {
132        self.width = Some(value);
133        self
134    }
135
136    pub fn get_width_mode(&self) -> Option<&WidthMode> {
137        self.width_mode.as_ref()
138    }
139
140    pub fn get_width_mode_mut(&mut self) -> Option<&mut WidthMode> {
141        self.width_mode.as_mut()
142    }
143
144    pub fn set_width_mode(&mut self, value: WidthMode) -> &mut ManualLayout {
145        self.width_mode = Some(value);
146        self
147    }
148
149    pub fn is_empty(&self) -> bool {
150        self.height.is_none()
151            && self.height_mode.is_none()
152            && self.layout_target.is_none()
153            && self.left.is_none()
154            && self.left_mode.is_none()
155            && self.top.is_none()
156            && self.top_mode.is_none()
157            && self.width.is_none()
158            && self.width_mode.is_none()
159    }
160
161    pub(crate) fn set_attributes<R: std::io::BufRead>(
162        &mut self,
163        reader: &mut Reader<R>,
164        _e: &BytesStart,
165    ) {
166        xml_read_loop!(
167            reader,
168            Event::Empty(ref e) => match e.name().0 {
169                b"c:h" => {
170                    let mut obj = Height::default();
171                    obj.set_attributes(reader, e);
172                    self.set_height(obj);
173                }
174                b"c:hMode" => {
175                    let mut obj = HeightMode::default();
176                    obj.set_attributes(reader, e);
177                    self.set_height_mode(obj);
178                }
179                b"c:layoutTarget" => {
180                    let mut obj = LayoutTarget::default();
181                    obj.set_attributes(reader, e);
182                    self.set_layout_target(obj);
183                }
184                b"c:x" => {
185                    let mut obj = Left::default();
186                    obj.set_attributes(reader, e);
187                    self.set_left(obj);
188                }
189                b"c:xMode" => {
190                    let mut obj = LeftMode::default();
191                    obj.set_attributes(reader, e);
192                    self.set_left_mode(obj);
193                }
194                b"c:y" => {
195                    let mut obj = Top::default();
196                    obj.set_attributes(reader, e);
197                    self.set_top(obj);
198                }
199                b"c:yMode" => {
200                    let mut obj = TopMode::default();
201                    obj.set_attributes(reader, e);
202                    self.set_top_mode(obj);
203                }
204                b"c:w" => {
205                    let mut obj = Width::default();
206                    obj.set_attributes(reader, e);
207                    self.set_width(obj);
208                }
209                b"c:wMode" => {
210                    let mut obj = WidthMode::default();
211                    obj.set_attributes(reader, e);
212                    self.set_width_mode(obj);
213                }
214                _ => (),
215            },
216            Event::End(ref e) => {
217                if e.name().0 == b"c:manualLayout" {
218                    return;
219                }
220            },
221            Event::Eof => panic!("Error: Could not find {} end element", "c:manualLayout"),
222        );
223    }
224
225    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
226        // c:manualLayout
227        write_start_tag(writer, "c:manualLayout", vec![], false);
228
229        // c:hMode
230        if let Some(v) = &self.height_mode {
231            v.write_to(writer);
232        }
233
234        // c:xMode
235        if let Some(v) = &self.left_mode {
236            v.write_to(writer);
237        }
238
239        // c:yMode
240        if let Some(v) = &self.top_mode {
241            v.write_to(writer);
242        }
243
244        // c:wMode
245        if let Some(v) = &self.width_mode {
246            v.write_to(writer);
247        }
248
249        // c:h
250        if let Some(v) = &self.height {
251            v.write_to(writer);
252        }
253
254        // c:x
255        if let Some(v) = &self.left {
256            v.write_to(writer);
257        }
258
259        // c:y
260        if let Some(v) = &self.top {
261            v.write_to(writer);
262        }
263
264        // c:w
265        if let Some(v) = &self.width {
266            v.write_to(writer);
267        }
268
269        // c:layoutTarget
270        if let Some(v) = &self.layout_target {
271            v.write_to(writer);
272        }
273
274        write_end_tag(writer, "c:manualLayout");
275    }
276}