umya_spreadsheet/structs/
row_reference.rs1use 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}