umya_spreadsheet/structs/drawing/
glow.rs1use super::super::super::Int64Value;
3use super::SchemeColor;
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 Glow {
13 radius: Int64Value,
14 scheme_color: Option<Box<SchemeColor>>,
15}
16
17impl Glow {
18 #[inline]
19 pub fn get_radius(&self) -> &i64 {
20 self.radius.get_value()
21 }
22
23 #[inline]
24 pub fn set_radius(&mut self, value: i64) -> &mut Glow {
25 self.radius.set_value(value);
26 self
27 }
28
29 #[inline]
30 pub fn get_scheme_color(&self) -> Option<&SchemeColor> {
31 self.scheme_color.as_deref()
32 }
33
34 #[inline]
35 pub fn set_scheme_color(&mut self, value: SchemeColor) {
36 self.scheme_color = Some(Box::new(value));
37 }
38
39 pub(crate) fn set_attributes<R: std::io::BufRead>(
40 &mut self,
41 reader: &mut Reader<R>,
42 e: &BytesStart,
43 ) {
44 self.radius
45 .set_value_string(get_attribute(e, b"rad").unwrap());
46
47 xml_read_loop!(
48 reader,
49 Event::Start(ref e) => {
50 if e.name().into_inner() == b"a:schemeClr" {
51 let mut obj = SchemeColor::default();
52 obj.set_attributes(reader, e, false);
53 self.set_scheme_color(obj);
54 }
55 },
56 Event::End(ref e) => {
57 if e.name().into_inner() == b"a:glow" {
58 return;
59 }
60 },
61 Event::Eof => panic!("Error: Could not find {} end element", "a:glow")
62 );
63 }
64
65 pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
66 write_start_tag(
68 writer,
69 "a:glow",
70 vec![("rad", &self.radius.get_value_string())],
71 false,
72 );
73
74 if let Some(v) = &self.scheme_color {
76 v.write_to(writer);
77 }
78
79 write_end_tag(writer, "a:glow");
80 }
81}