umya_spreadsheet/structs/drawing/
space_after.rs1use 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 write_start_tag(writer, "a:spcAft", vec![], false);
63
64 if let Some(v) = &self.spacing_percent {
66 v.write_to(writer);
67 }
68
69 write_end_tag(writer, "a:spcAft");
70 }
71}