umya_spreadsheet/structs/drawing/
source_rectangle.rs

1// a:srcRect
2use crate::reader::driver::*;
3use crate::writer::driver::*;
4use crate::StringValue;
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 SourceRectangle {
12    t: StringValue,
13    l: StringValue,
14    r: StringValue,
15    b: StringValue,
16}
17impl SourceRectangle {
18    #[inline]
19    pub fn set_t<S: Into<String>>(&mut self, value: S) {
20        self.t.set_value(value);
21    }
22
23    #[inline]
24    pub fn get_t(&self) -> Option<&str> {
25        self.t.get_value()
26    }
27
28    #[inline]
29    pub fn set_l<S: Into<String>>(&mut self, value: S) {
30        self.l.set_value(value);
31    }
32
33    #[inline]
34    pub fn get_l(&self) -> Option<&str> {
35        self.l.get_value()
36    }
37
38    #[inline]
39    pub fn set_r<S: Into<String>>(&mut self, value: S) {
40        self.r.set_value(value);
41    }
42
43    #[inline]
44    pub fn get_r(&self) -> Option<&str> {
45        self.r.get_value()
46    }
47
48    #[inline]
49    pub fn set_b<S: Into<String>>(&mut self, value: S) {
50        self.b.set_value(value);
51    }
52
53    #[inline]
54    pub fn get_b(&self) -> Option<&str> {
55        self.b.get_value()
56    }
57
58    pub(crate) fn set_attributes<R: std::io::BufRead>(
59        &mut self,
60        _reader: &mut Reader<R>,
61        e: &BytesStart,
62    ) {
63        for a in e.attributes().with_checks(false) {
64            if let Ok(attr) = a {
65                match attr.key.0 {
66                    b"t" => self.set_t(get_attribute_value(&attr).unwrap()),
67                    b"l" => self.set_l(get_attribute_value(&attr).unwrap()),
68                    b"r" => self.set_r(get_attribute_value(&attr).unwrap()),
69                    b"b" => self.set_b(get_attribute_value(&attr).unwrap()),
70                    _ => {}
71                }
72            }
73        }
74    }
75
76    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
77        // a:srcRect
78        let mut attributes: Vec<(&str, &str)> = Vec::new();
79
80        if let Some(v) = self.t.get_value() {
81            attributes.push(("t", v))
82        }
83        if let Some(v) = self.l.get_value() {
84            attributes.push(("l", v))
85        }
86        if let Some(v) = self.r.get_value() {
87            attributes.push(("r", v))
88        }
89        if let Some(v) = self.b.get_value() {
90            attributes.push(("b", v))
91        }
92        write_start_tag(writer, "a:srcRect", attributes, true);
93    }
94}