umya_spreadsheet/structs/drawing/
source_rectangle.rs1use 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 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}