umya_spreadsheet/structs/
page_margins.rs1use crate::structs::DoubleValue;
2
3use crate::reader::driver::*;
4use crate::writer::driver::*;
5use quick_xml::events::BytesStart;
6use quick_xml::Reader;
7use quick_xml::Writer;
8use std::io::Cursor;
9
10#[derive(Clone, Default, Debug)]
11pub struct PageMargins {
12 left: DoubleValue,
13 right: DoubleValue,
14 top: DoubleValue,
15 bottom: DoubleValue,
16 header: DoubleValue,
17 footer: DoubleValue,
18}
19impl PageMargins {
20 #[inline]
21 pub fn get_left(&self) -> &f64 {
22 self.left.get_value()
23 }
24
25 #[inline]
26 pub fn set_left(&mut self, value: f64) -> &mut Self {
27 self.left.set_value(value);
28 self
29 }
30
31 #[inline]
32 pub fn get_right(&self) -> &f64 {
33 self.right.get_value()
34 }
35
36 #[inline]
37 pub fn set_right(&mut self, value: f64) -> &mut Self {
38 self.right.set_value(value);
39 self
40 }
41
42 #[inline]
43 pub fn get_top(&self) -> &f64 {
44 self.top.get_value()
45 }
46
47 #[inline]
48 pub fn set_top(&mut self, value: f64) -> &mut Self {
49 self.top.set_value(value);
50 self
51 }
52
53 #[inline]
54 pub fn get_bottom(&self) -> &f64 {
55 self.bottom.get_value()
56 }
57
58 #[inline]
59 pub fn set_bottom(&mut self, value: f64) -> &mut Self {
60 self.bottom.set_value(value);
61 self
62 }
63
64 #[inline]
65 pub fn get_header(&self) -> &f64 {
66 self.header.get_value()
67 }
68
69 #[inline]
70 pub fn set_header(&mut self, value: f64) -> &mut Self {
71 self.header.set_value(value);
72 self
73 }
74
75 #[inline]
76 pub fn get_footer(&self) -> &f64 {
77 self.footer.get_value()
78 }
79
80 #[inline]
81 pub fn set_footer(&mut self, value: f64) -> &mut Self {
82 self.footer.set_value(value);
83 self
84 }
85
86 pub(crate) fn set_attributes<R: std::io::BufRead>(
87 &mut self,
88 _reader: &mut Reader<R>,
89 e: &BytesStart,
90 ) {
91 self.left
92 .set_value_string(get_attribute(e, b"left").unwrap());
93 self.right
94 .set_value_string(get_attribute(e, b"right").unwrap());
95 self.top.set_value_string(get_attribute(e, b"top").unwrap());
96 self.bottom
97 .set_value_string(get_attribute(e, b"bottom").unwrap());
98 self.header
99 .set_value_string(get_attribute(e, b"header").unwrap());
100 self.footer
101 .set_value_string(get_attribute(e, b"footer").unwrap());
102 }
103
104 pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
105 let mut attributes: Vec<(&str, &str)> = Vec::new();
107 let left = self.left.get_value_string();
108 attributes.push(("left", &left));
109 let right = self.right.get_value_string();
110 attributes.push(("right", &right));
111 let top = self.top.get_value_string();
112 attributes.push(("top", &top));
113 let bottom = self.bottom.get_value_string();
114 attributes.push(("bottom", &bottom));
115 let header = self.header.get_value_string();
116 attributes.push(("header", &header));
117 let footer = self.footer.get_value_string();
118 attributes.push(("footer", &footer));
119 write_start_tag(writer, "pageMargins", attributes, true);
120 }
121}