umya_spreadsheet/structs/drawing/spreadsheet/
non_visual_picture_properties.rs

1//xdr:nvPicPr
2use super::NonVisualDrawingProperties;
3use super::NonVisualPictureDrawingProperties;
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 NonVisualPictureProperties {
13    non_visual_drawing_properties: NonVisualDrawingProperties,
14    non_visual_picture_drawing_properties: NonVisualPictureDrawingProperties,
15}
16
17impl NonVisualPictureProperties {
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(&mut self, value: NonVisualDrawingProperties) {
30        self.non_visual_drawing_properties = value;
31    }
32
33    #[inline]
34    pub fn get_non_visual_picture_drawing_properties(&self) -> &NonVisualPictureDrawingProperties {
35        &self.non_visual_picture_drawing_properties
36    }
37
38    #[inline]
39    pub fn get_non_visual_picture_drawing_properties_mut(
40        &mut self,
41    ) -> &mut NonVisualPictureDrawingProperties {
42        &mut self.non_visual_picture_drawing_properties
43    }
44
45    #[inline]
46    pub fn set_non_visual_picture_drawing_properties(
47        &mut self,
48        value: NonVisualPictureDrawingProperties,
49    ) {
50        self.non_visual_picture_drawing_properties = value;
51    }
52
53    pub(crate) fn set_attributes<R: std::io::BufRead>(
54        &mut self,
55        reader: &mut Reader<R>,
56        _e: &BytesStart,
57    ) {
58        xml_read_loop!(
59            reader,
60            Event::Start(ref e) => {
61                match e.name().into_inner() {
62                    b"xdr:cNvPicPr" => {
63                        self.non_visual_picture_drawing_properties
64                            .set_attributes(reader, e, false);
65                        }
66                    b"xdr:cNvPr" => {
67                        self.non_visual_drawing_properties
68                            .set_attributes(reader, e, false);
69                        }
70                    _ => (),
71                }
72            },
73            Event::Empty(ref e) => {
74                match e.name().into_inner() {
75                    b"xdr:cNvPicPr" => {
76                        self.non_visual_picture_drawing_properties
77                            .set_attributes(reader, e, true);
78                        }
79                    b"xdr:cNvPr" => {
80                        self.non_visual_drawing_properties
81                            .set_attributes(reader, e, true);
82                        }
83                    _ => (),
84                }
85            },
86            Event::End(ref e) => {
87                if e.name().into_inner() == b"xdr:nvPicPr" {
88                    return;
89                }
90            },
91            Event::Eof => panic!("Error: Could not find {} end element", "xdr:nvPicPr")
92        );
93    }
94
95    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
96        // xdr:nvPicPr
97        write_start_tag(writer, "xdr:nvPicPr", vec![], false);
98
99        // xdr:cNvPr
100        self.non_visual_drawing_properties.write_to(writer, &0);
101
102        // xdr:cNvPicPr
103        self.non_visual_picture_drawing_properties.write_to(writer);
104
105        write_end_tag(writer, "xdr:nvPicPr");
106    }
107}