umya_spreadsheet/structs/drawing/
rotation.rs

1// a:rot
2use super::super::Int32Value;
3use crate::reader::driver::*;
4use crate::writer::driver::*;
5use quick_xml::events::BytesStart;
6use quick_xml::Reader;
7use quick_xml::Writer;
8use std::io::Cursor;
9
10#[derive(Clone, Default, Debug, Eq, Ord, PartialEq, PartialOrd)]
11pub struct Rotation {
12    latitude: Int32Value,
13    longitude: Int32Value,
14    revolution: Int32Value,
15}
16
17impl Rotation {
18    #[inline]
19    pub fn get_latitude(&self) -> &i32 {
20        self.latitude.get_value()
21    }
22
23    #[inline]
24    pub fn set_latitude(&mut self, value: i32) -> &mut Self {
25        self.latitude.set_value(value);
26        self
27    }
28
29    #[inline]
30    pub fn get_longitude(&self) -> &i32 {
31        self.longitude.get_value()
32    }
33
34    #[inline]
35    pub fn set_longitude(&mut self, value: i32) -> &mut Self {
36        self.longitude.set_value(value);
37        self
38    }
39
40    #[inline]
41    pub fn get_revolution(&self) -> &i32 {
42        self.revolution.get_value()
43    }
44
45    #[inline]
46    pub fn set_revolution(&mut self, value: i32) -> &mut Self {
47        self.revolution.set_value(value);
48        self
49    }
50
51    #[inline]
52    pub(crate) fn set_attributes<R: std::io::BufRead>(
53        &mut self,
54        _reader: &mut Reader<R>,
55        e: &BytesStart,
56    ) {
57        set_string_from_xml!(self, e, latitude, "lat");
58        set_string_from_xml!(self, e, longitude, "lon");
59        set_string_from_xml!(self, e, revolution, "rev");
60    }
61
62    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
63        let mut attributes: Vec<(&str, &str)> = Vec::new();
64        let latitude = self.latitude.get_value_string();
65        if self.latitude.has_value() {
66            attributes.push(("lat", &latitude));
67        }
68        let longitude = self.longitude.get_value_string();
69        if self.longitude.has_value() {
70            attributes.push(("lon", &longitude));
71        }
72        let revolution = self.revolution.get_value_string();
73        if self.latitude.has_value() {
74            attributes.push(("rev", &revolution));
75        }
76        write_start_tag(writer, "a:rot", attributes, true);
77    }
78}