umya_spreadsheet/structs/drawing/spreadsheet/
non_visual_graphic_frame_properties.rs

1// xdr:nvGraphicFramePr
2use super::NonVisualDrawingProperties;
3use super::NonVisualGraphicFrameDrawingProperties;
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 NonVisualGraphicFrameProperties {
13    non_visual_drawing_properties: NonVisualDrawingProperties,
14    non_visual_graphic_frame_drawing_properties: NonVisualGraphicFrameDrawingProperties,
15}
16
17impl NonVisualGraphicFrameProperties {
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 NonVisualGraphicFrameProperties {
33        self.non_visual_drawing_properties = value;
34        self
35    }
36
37    #[inline]
38    pub fn get_non_visual_graphic_frame_drawing_properties(
39        &self,
40    ) -> &NonVisualGraphicFrameDrawingProperties {
41        &self.non_visual_graphic_frame_drawing_properties
42    }
43
44    #[inline]
45    pub fn get_non_visual_graphic_frame_drawing_properties_mut(
46        &mut self,
47    ) -> &mut NonVisualGraphicFrameDrawingProperties {
48        &mut self.non_visual_graphic_frame_drawing_properties
49    }
50
51    #[inline]
52    pub fn set_non_visual_graphic_frame_drawing_properties(
53        &mut self,
54        value: NonVisualGraphicFrameDrawingProperties,
55    ) -> &mut NonVisualGraphicFrameProperties {
56        self.non_visual_graphic_frame_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::Empty(ref e) => {
68                match e.name().into_inner() {
69                    b"xdr:cNvPr" => {
70                        self.non_visual_drawing_properties
71                            .set_attributes(reader, e, true);
72                    },
73                    b"xdr:cNvGraphicFramePr" => {
74                        self.non_visual_graphic_frame_drawing_properties
75                            .set_attributes(reader, e);
76                    },
77                    _ => (),
78                }
79            },
80            Event::Start(ref e) => {
81                if e.name().into_inner() == b"xdr:cNvPr" {
82                    self.non_visual_drawing_properties
83                        .set_attributes(reader, e, false);
84                }
85            },
86            Event::End(ref e) => {
87                if e.name().into_inner() == b"xdr:nvGraphicFramePr" {
88                    return
89                }
90            },
91            Event::Eof => panic!("Error: Could not find {} end element", "xdr:nvGraphicFramePr")
92        );
93    }
94
95    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
96        // xdr:nvGraphicFramePr
97        write_start_tag(writer, "xdr:nvGraphicFramePr", vec![], false);
98
99        // xdr:cNvPr
100        self.non_visual_drawing_properties.write_to(writer, &0);
101
102        // xdr:cNvGraphicFramePr
103        self.non_visual_graphic_frame_drawing_properties
104            .write_to(writer);
105
106        write_end_tag(writer, "xdr:nvGraphicFramePr");
107    }
108}