umya_spreadsheet/structs/drawing/spreadsheet/
non_visual_connection_shape_properties.rs

1// xdr:nvCxnSpPr
2use super::NonVisualConnectorShapeDrawingProperties;
3use super::NonVisualDrawingProperties;
4use crate::reader::driver::*;
5use crate::writer::driver::*;
6use quick_xml::events::{BytesStart, Event};
7use quick_xml::Reader;
8use quick_xml::Writer;
9use std::io::Cursor;
10
11#[derive(Clone, Default, Debug)]
12pub struct NonVisualConnectionShapeProperties {
13    non_visual_drawing_properties: NonVisualDrawingProperties,
14    non_visual_connector_shape_drawing_properties: NonVisualConnectorShapeDrawingProperties,
15}
16
17impl NonVisualConnectionShapeProperties {
18    #[inline]
19    pub fn get_non_visual_drawing_properties(&self) -> &NonVisualDrawingProperties {
20        &self.non_visual_drawing_properties
21    }
22
23    #[inline]
24    pub fn get_non_visual_drawing_properties_mut(&mut self) -> &mut NonVisualDrawingProperties {
25        &mut self.non_visual_drawing_properties
26    }
27
28    #[inline]
29    pub fn set_non_visual_drawing_properties(
30        &mut self,
31        value: NonVisualDrawingProperties,
32    ) -> &mut NonVisualConnectionShapeProperties {
33        self.non_visual_drawing_properties = value;
34        self
35    }
36
37    #[inline]
38    pub fn get_non_visual_connector_shape_drawing_properties(
39        &self,
40    ) -> &NonVisualConnectorShapeDrawingProperties {
41        &self.non_visual_connector_shape_drawing_properties
42    }
43
44    #[inline]
45    pub fn get_non_visual_connector_shape_drawing_properties_mut(
46        &mut self,
47    ) -> &mut NonVisualConnectorShapeDrawingProperties {
48        &mut self.non_visual_connector_shape_drawing_properties
49    }
50
51    #[inline]
52    pub fn set_non_visual_connector_shape_drawing_properties(
53        &mut self,
54        value: NonVisualConnectorShapeDrawingProperties,
55    ) -> &mut NonVisualConnectionShapeProperties {
56        self.non_visual_connector_shape_drawing_properties = value;
57        self
58    }
59
60    pub(crate) fn set_attributes<R: std::io::BufRead>(
61        &mut self,
62        reader: &mut Reader<R>,
63        _e: &BytesStart,
64    ) {
65        xml_read_loop!(
66            reader,
67            Event::Start(ref e) => {
68                if e.name().into_inner() == b"xdr:cNvCxnSpPr" {
69                    self.non_visual_connector_shape_drawing_properties
70                        .set_attributes(reader, e);
71                }
72            },
73            Event::Empty(ref e) => {
74                if e.name().into_inner() == b"xdr:cNvPr" {
75                    self.non_visual_drawing_properties
76                        .set_attributes(reader, e, true);
77                }
78            },
79            Event::End(ref e) => {
80                if e.name().into_inner() == b"xdr:nvCxnSpPr" {
81                    return
82                }
83            },
84            Event::Eof => panic!("Error: Could not find {} end element", "xdr:nvCxnSpPr")
85        );
86    }
87
88    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
89        // xdr:nvCxnSpPr
90        write_start_tag(writer, "xdr:nvCxnSpPr", vec![], false);
91
92        // xdr:cNvPr
93        self.non_visual_drawing_properties.write_to(writer, &0);
94
95        // xdr:cNvCxnSpPr
96        self.non_visual_connector_shape_drawing_properties
97            .write_to(writer);
98
99        write_end_tag(writer, "xdr:nvCxnSpPr");
100    }
101}