umya_spreadsheet/structs/
row_reference.rs1use crate::helper::coordinate::*;
2use crate::traits::AdjustmentValue;
3
4#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
5pub struct RowReference {
6 num: u32,
7 is_lock: bool,
8}
9
10impl Default for RowReference {
11 #[inline]
12 fn default() -> Self {
13 Self {
14 num: 1,
15 is_lock: false,
16 }
17 }
18}
19
20impl RowReference {
21 #[inline]
22 pub fn get_num(&self) -> &u32 {
23 &self.num
24 }
25
26 #[inline]
27 pub fn set_num(&mut self, value: u32) -> &mut Self {
28 self.num = value;
29 self
30 }
31
32 #[inline]
33 pub(crate) fn offset_num(&mut self, value: i32) -> &mut Self {
34 if value > 0 {
35 self.plus_num(value as u32);
36 }
37 if value < 0 {
38 self.minus_num(-value as u32);
39 }
40 self
41 }
42
43 #[inline]
44 pub(crate) fn plus_num(&mut self, value: u32) -> &mut Self {
45 self.num += value;
46 self
47 }
48
49 #[inline]
50 pub(crate) fn minus_num(&mut self, value: u32) -> &mut Self {
51 self.num -= value;
52 self
53 }
54
55 #[inline]
56 pub fn get_is_lock(&self) -> &bool {
57 &self.is_lock
58 }
59
60 #[inline]
61 pub fn set_is_lock(&mut self, value: bool) -> &mut Self {
62 self.is_lock = value;
63 self
64 }
65
66 #[inline]
67 pub fn set_is_lock_usize(&mut self, value: u32) -> &mut Self {
68 self.is_lock = value == 1;
69 self
70 }
71
72 #[inline]
73 pub fn get_coordinate(&self) -> String {
74 format!("{}{}", if self.is_lock { "$" } else { "" }, self.num)
75 }
76}
77impl AdjustmentValue for RowReference {
78 #[inline]
79 fn adjustment_insert_value(&mut self, root_num: &u32, offset_num: &u32) {
80 self.num = adjustment_insert_coordinate(&self.num, root_num, offset_num);
81 }
82
83 #[inline]
84 fn adjustment_remove_value(&mut self, root_num: &u32, offset_num: &u32) {
85 self.num = adjustment_remove_coordinate(&self.num, root_num, offset_num);
86 }
87
88 #[inline]
89 fn is_remove_value(&self, root_num: &u32, offset_num: &u32) -> bool {
90 is_remove_coordinate(&self.num, root_num, offset_num)
91 }
92}