umya_spreadsheet/structs/vml/spreadsheet/
comment_row_target.rs

1use crate::helper::coordinate::*;
2use crate::reader::driver::*;
3use crate::structs::UInt32Value;
4use crate::traits::AdjustmentValue;
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 CommentRowTarget {
13    value: UInt32Value,
14}
15
16impl CommentRowTarget {
17    #[inline]
18    pub fn get_value(&self) -> &u32 {
19        self.value.get_value()
20    }
21
22    #[inline]
23    pub fn set_value(&mut self, value: u32) -> &mut Self {
24        self.value.set_value(value);
25        self
26    }
27
28    #[inline]
29    pub(crate) fn adjustment_insert_row(&mut self, num_rows: &u32) {
30        let value = self.value.get_value() + num_rows;
31        self.value.set_value(value);
32    }
33
34    #[inline]
35    pub(crate) fn adjustment_remove_row(&mut self, num_row: &u32) {
36        if self.value.get_value() > num_row {
37            let value = self.value.get_value() - num_row;
38            self.value.set_value(value);
39        } else {
40            self.value.set_value(1);
41        }
42    }
43
44    #[inline]
45    pub(crate) fn set_attributes<R: std::io::BufRead>(
46        &mut self,
47        reader: &mut Reader<R>,
48        _e: &BytesStart,
49    ) {
50        xml_read_loop!(
51            reader,
52            Event::Text(e) => {
53                self.value.set_value_string(e.unescape().unwrap());
54            },
55            Event::End(ref e) => {
56                if e.name().0 == b"x:Row" {
57                    return
58                }
59            },
60            Event::Eof => panic!("Error: Could not find {} end element", "x:Row")
61        );
62    }
63
64    #[inline]
65    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
66        // x:Row
67        write_start_tag(writer, "x:Row", vec![], false);
68        write_text_node(writer, self.value.get_value_string());
69        write_end_tag(writer, "x:Row");
70    }
71}
72impl AdjustmentValue for CommentRowTarget {
73    #[inline]
74    fn adjustment_insert_value(&mut self, root_num: &u32, offset_num: &u32) {
75        self.value.set_value(
76            adjustment_insert_coordinate(&(self.value.get_value() + &1), root_num, offset_num) - 1,
77        );
78    }
79
80    #[inline]
81    fn adjustment_remove_value(&mut self, root_num: &u32, offset_num: &u32) {
82        self.value.set_value(
83            adjustment_remove_coordinate(&(self.value.get_value() + &1), root_num, offset_num) - 1,
84        );
85    }
86
87    #[inline]
88    fn is_remove_value(&self, root_num: &u32, offset_num: &u32) -> bool {
89        is_remove_coordinate(&(self.value.get_value() + 1), root_num, offset_num)
90    }
91}