Skip to main content

umya_spreadsheet/structs/
row_reference.rs

1use crate::{
2    helper::coordinate::{
3        adjustment_insert_coordinate,
4        adjustment_remove_coordinate,
5        is_remove_coordinate,
6    },
7    traits::AdjustmentValue,
8};
9
10#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
11pub struct RowReference {
12    num:     u32,
13    is_lock: bool,
14}
15
16impl Default for RowReference {
17    #[inline]
18    fn default() -> Self {
19        Self {
20            num:     1,
21            is_lock: false,
22        }
23    }
24}
25
26impl RowReference {
27    #[inline]
28    #[must_use]
29    pub fn num(&self) -> u32 {
30        self.num
31    }
32
33    #[inline]
34    #[must_use]
35    #[deprecated(since = "3.0.0", note = "Use num()")]
36    pub fn get_num(&self) -> u32 {
37        self.num()
38    }
39
40    #[inline]
41    pub fn set_num(&mut self, value: u32) -> &mut Self {
42        self.num = value;
43        self
44    }
45
46    #[inline]
47    pub(crate) fn offset_num(&mut self, value: i32) -> &mut Self {
48        if value > 0 {
49            self.plus_num(value.try_into().unwrap());
50        }
51        if value < 0 {
52            self.minus_num((-value).try_into().unwrap());
53        }
54        self
55    }
56
57    #[inline]
58    pub(crate) fn plus_num(&mut self, value: u32) -> &mut Self {
59        self.num += value;
60        self
61    }
62
63    #[inline]
64    pub(crate) fn minus_num(&mut self, value: u32) -> &mut Self {
65        self.num -= value;
66        self
67    }
68
69    #[inline]
70    #[must_use]
71    pub fn is_lock(&self) -> bool {
72        self.is_lock
73    }
74
75    #[inline]
76    #[must_use]
77    #[deprecated(since = "3.0.0", note = "Use is_lock()")]
78    pub fn get_is_lock(&self) -> bool {
79        self.is_lock()
80    }
81
82    #[inline]
83    pub fn set_is_lock(&mut self, value: bool) -> &mut Self {
84        self.is_lock = value;
85        self
86    }
87
88    #[inline]
89    pub fn set_is_lock_usize(&mut self, value: u32) -> &mut Self {
90        self.is_lock = value == 1;
91        self
92    }
93
94    #[inline]
95    #[must_use]
96    pub fn coordinate(&self) -> String {
97        format!("{}{}", if self.is_lock { "$" } else { "" }, self.num)
98    }
99
100    #[inline]
101    #[must_use]
102    #[deprecated(since = "3.0.0", note = "Use coordinate()")]
103    pub fn get_coordinate(&self) -> String {
104        self.coordinate()
105    }
106}
107impl AdjustmentValue for RowReference {
108    #[inline]
109    fn adjustment_insert_value(&mut self, root_num: u32, offset_num: u32) {
110        self.num = adjustment_insert_coordinate(self.num, root_num, offset_num);
111    }
112
113    #[inline]
114    fn adjustment_remove_value(&mut self, root_num: u32, offset_num: u32) {
115        self.num = adjustment_remove_coordinate(self.num, root_num, offset_num);
116    }
117
118    #[inline]
119    fn is_remove_value(&self, root_num: u32, offset_num: u32) -> bool {
120        is_remove_coordinate(self.num, root_num, offset_num)
121    }
122}