umya_spreadsheet/structs/drawing/spreadsheet/
non_visual_shape_properties.rs1use super::NonVisualDrawingProperties;
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 NonVisualShapeProperties {
12    non_visual_drawing_properties: NonVisualDrawingProperties,
13}
14
15impl NonVisualShapeProperties {
16    #[inline]
17    pub fn get_non_visual_drawing_properties(&self) -> &NonVisualDrawingProperties {
18        &self.non_visual_drawing_properties
19    }
20
21    #[inline]
22    pub fn get_non_visual_drawing_properties_mut(&mut self) -> &mut NonVisualDrawingProperties {
23        &mut self.non_visual_drawing_properties
24    }
25
26    #[inline]
27    pub fn set_non_visual_drawing_properties(&mut self, value: NonVisualDrawingProperties) {
28        self.non_visual_drawing_properties = value;
29    }
30
31    pub(crate) fn set_attributes<R: std::io::BufRead>(
32        &mut self,
33        reader: &mut Reader<R>,
34        _e: &BytesStart,
35    ) {
36        xml_read_loop!(
37            reader,
38            Event::Empty(ref e) => {
39                if e.name().into_inner() == b"xdr:cNvPr" {
40                    self.non_visual_drawing_properties
41                        .set_attributes(reader, e, true);
42                }
43            },
44            Event::Start(ref e) => {
45                if e.name().into_inner() == b"xdr:cNvPr" {
46                    self.non_visual_drawing_properties
47                        .set_attributes(reader, e, false);
48                }
49            },
50            Event::End(ref e) => {
51                if e.name().into_inner() == b"xdr:nvSpPr" {
52                    return;
53                }
54            },
55            Event::Eof => panic!("Error: Could not find {} end element", "xdr:nvSpPr")
56        );
57    }
58
59    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>, ole_id: &usize) {
60        write_start_tag(writer, "xdr:nvSpPr", vec![], false);
62
63        self.non_visual_drawing_properties.write_to(writer, ole_id);
65
66        write_start_tag(writer, "xdr:cNvSpPr", vec![], true);
68
69        write_end_tag(writer, "xdr:nvSpPr");
70    }
71}