umya_spreadsheet/structs/vml/spreadsheet/
comment_row_target.rs1use 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 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}