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}