umya_spreadsheet/structs/drawing/
space_after.rs

1// a:spcAft
2use super::SpacingPercent;
3use crate::reader::driver::*;
4use crate::writer::driver::*;
5use quick_xml::events::{BytesStart, Event};
6use quick_xml::Reader;
7use quick_xml::Writer;
8use std::io::Cursor;
9
10#[derive(Clone, Default, Debug)]
11pub struct SpaceAfter {
12    spacing_percent: Option<SpacingPercent>,
13}
14
15impl SpaceAfter {
16    #[inline]
17    pub fn get_spacing_percent(&self) -> Option<&SpacingPercent> {
18        self.spacing_percent.as_ref()
19    }
20
21    #[inline]
22    pub fn get_spacing_percent_mut(&mut self) -> Option<&mut SpacingPercent> {
23        self.spacing_percent.as_mut()
24    }
25
26    #[inline]
27    pub fn set_spacing_percent(&mut self, value: SpacingPercent) -> &mut Self {
28        self.spacing_percent = Some(value);
29        self
30    }
31
32    #[inline]
33    pub fn remove_spacing_percent(&mut self) {
34        self.spacing_percent = None;
35    }
36
37    pub(crate) fn set_attributes<R: std::io::BufRead>(
38        &mut self,
39        reader: &mut Reader<R>,
40        _e: &BytesStart,
41    ) {
42        xml_read_loop!(
43            reader,
44            Event::Empty(ref e) => {
45                if e.name().into_inner() == b"a:spcPct" {
46                    let mut obj = SpacingPercent::default();
47                    obj.set_attributes(reader, e);
48                    self.set_spacing_percent(obj);
49                }
50            },
51            Event::End(ref e) => {
52                if e.name().into_inner() == b"a:spcAft" {
53                    return;
54                }
55            },
56            Event::Eof => panic!("Error: Could not find {} end element", "a:spcAft")
57        );
58    }
59
60    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
61        // a:spcAft
62        write_start_tag(writer, "a:spcAft", vec![], false);
63
64        // a:spcPct
65        if let Some(v) = &self.spacing_percent {
66            v.write_to(writer);
67        }
68
69        write_end_tag(writer, "a:spcAft");
70    }
71}