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