Skip to main content

umya_spreadsheet/structs/drawing/spreadsheet/
non_visual_picture_properties.rs

1// xdr:nvPicPr
2use std::io::Cursor;
3
4use quick_xml::{
5    Reader,
6    Writer,
7    events::{
8        BytesStart,
9        Event,
10    },
11};
12
13use super::{
14    NonVisualDrawingProperties,
15    NonVisualPictureDrawingProperties,
16};
17use crate::{
18    reader::driver::xml_read_loop,
19    writer::driver::{
20        write_end_tag,
21        write_start_tag,
22    },
23};
24
25#[derive(Clone, Default, Debug)]
26pub struct NonVisualPictureProperties {
27    non_visual_drawing_properties:         NonVisualDrawingProperties,
28    non_visual_picture_drawing_properties: NonVisualPictureDrawingProperties,
29}
30
31impl NonVisualPictureProperties {
32    #[inline]
33    #[must_use]
34    pub fn non_visual_drawing_properties(&self) -> &NonVisualDrawingProperties {
35        &self.non_visual_drawing_properties
36    }
37
38    #[inline]
39    #[must_use]
40    #[deprecated(since = "3.0.0", note = "Use non_visual_drawing_properties()")]
41    pub fn get_non_visual_drawing_properties(&self) -> &NonVisualDrawingProperties {
42        self.non_visual_drawing_properties()
43    }
44
45    #[inline]
46    pub fn non_visual_drawing_properties_mut(&mut self) -> &mut NonVisualDrawingProperties {
47        &mut self.non_visual_drawing_properties
48    }
49
50    #[inline]
51    #[deprecated(since = "3.0.0", note = "Use non_visual_drawing_properties_mut()")]
52    pub fn get_non_visual_drawing_properties_mut(&mut self) -> &mut NonVisualDrawingProperties {
53        self.non_visual_drawing_properties_mut()
54    }
55
56    #[inline]
57    pub fn set_non_visual_drawing_properties(&mut self, value: NonVisualDrawingProperties) {
58        self.non_visual_drawing_properties = value;
59    }
60
61    #[inline]
62    #[must_use]
63    pub fn non_visual_picture_drawing_properties(&self) -> &NonVisualPictureDrawingProperties {
64        &self.non_visual_picture_drawing_properties
65    }
66
67    #[inline]
68    #[must_use]
69    #[deprecated(since = "3.0.0", note = "Use non_visual_picture_drawing_properties()")]
70    pub fn get_non_visual_picture_drawing_properties(&self) -> &NonVisualPictureDrawingProperties {
71        self.non_visual_picture_drawing_properties()
72    }
73
74    #[inline]
75    pub fn non_visual_picture_drawing_properties_mut(
76        &mut self,
77    ) -> &mut NonVisualPictureDrawingProperties {
78        &mut self.non_visual_picture_drawing_properties
79    }
80
81    #[inline]
82    #[deprecated(
83        since = "3.0.0",
84        note = "Use non_visual_picture_drawing_properties_mut()"
85    )]
86    pub fn get_non_visual_picture_drawing_properties_mut(
87        &mut self,
88    ) -> &mut NonVisualPictureDrawingProperties {
89        self.non_visual_picture_drawing_properties_mut()
90    }
91
92    #[inline]
93    pub fn set_non_visual_picture_drawing_properties(
94        &mut self,
95        value: NonVisualPictureDrawingProperties,
96    ) {
97        self.non_visual_picture_drawing_properties = value;
98    }
99
100    pub(crate) fn set_attributes<R: std::io::BufRead>(
101        &mut self,
102        reader: &mut Reader<R>,
103        _e: &BytesStart,
104    ) {
105        xml_read_loop!(
106            reader,
107            Event::Start(ref e) => {
108                match e.name().into_inner() {
109                    b"xdr:cNvPicPr" | b"cNvPicPr" => {
110                        self.non_visual_picture_drawing_properties
111                            .set_attributes(reader, e, false);
112                        }
113                    b"xdr:cNvPr" | b"cNvPr" => {
114                        self.non_visual_drawing_properties
115                            .set_attributes(reader, e, false);
116                        }
117                    _ => (),
118                }
119            },
120            Event::Empty(ref e) => {
121                match e.name().into_inner() {
122                    b"xdr:cNvPicPr" | b"cNvPicPr" => {
123                        self.non_visual_picture_drawing_properties
124                            .set_attributes(reader, e, true);
125                        }
126                    b"xdr:cNvPr" | b"cNvPr" => {
127                        self.non_visual_drawing_properties
128                            .set_attributes(reader, e, true);
129                        }
130                    _ => (),
131                }
132            },
133            Event::End(ref e) => {
134                if matches!(e.name().into_inner(), b"xdr:nvPicPr" | b"nvPicPr") {
135                    return;
136                }
137            },
138            Event::Eof => panic!("Error: Could not find {} end element", "nvPicPr")
139        );
140    }
141
142    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
143        // xdr:nvPicPr
144        write_start_tag(writer, "xdr:nvPicPr", vec![], false);
145
146        // xdr:cNvPr
147        self.non_visual_drawing_properties.write_to(writer, 0);
148
149        // xdr:cNvPicPr
150        self.non_visual_picture_drawing_properties.write_to(writer);
151
152        write_end_tag(writer, "xdr:nvPicPr");
153    }
154}