umya_spreadsheet/structs/drawing/spreadsheet/
non_visual_group_shape_drawing_properties.rs1use super::super::GroupShapeLocks;
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 NonVisualGroupShapeDrawingProperties {
13 group_shape_locks: Option<GroupShapeLocks>,
14}
15
16impl NonVisualGroupShapeDrawingProperties {
17 #[inline]
18 pub fn get_group_shape_locks(&self) -> Option<&GroupShapeLocks> {
19 self.group_shape_locks.as_ref()
20 }
21
22 #[inline]
23 pub fn get_group_shape_locks_mut(&mut self) -> Option<&mut GroupShapeLocks> {
24 self.group_shape_locks.as_mut()
25 }
26
27 #[inline]
28 pub fn set_group_shape_locks(&mut self, value: GroupShapeLocks) -> &mut Self {
29 self.group_shape_locks = Some(value);
30 self
31 }
32
33 pub(crate) fn set_attributes<R: std::io::BufRead>(
34 &mut self,
35 reader: &mut Reader<R>,
36 _e: &BytesStart,
37 empty_flg: bool,
38 ) {
39 if empty_flg {
40 return;
41 }
42
43 xml_read_loop!(
44 reader,
45 Event::Empty(ref e) => {
46 if e.name().into_inner() == b"a:grpSpLocks" {
47 let mut obj = GroupShapeLocks::default();
48 obj.set_attributes(reader, e);
49 self.set_group_shape_locks(obj);
50 }
51 },
52 Event::End(ref e) => {
53 if e.name().into_inner() == b"xdr:cNvGrpSpPr" {
54 return;
55 }
56 },
57 Event::Eof => panic!("Error: Could not find {} end element", "xdr:cNvGrpSpPr")
58 );
59 }
60
61 pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
62 let is_empty = self.group_shape_locks.is_none();
63 write_start_tag(writer, "xdr:cNvGrpSpPr", vec![], is_empty);
65
66 match &self.group_shape_locks {
68 Some(v) => {
69 v.write_to(writer);
70 }
71 None => {}
72 }
73
74 if !is_empty {
75 write_end_tag(writer, "xdr:cNvGrpSpPr");
76 }
77 }
78}