umya_spreadsheet/structs/
column_reference.rs1use crate::helper::coordinate::*;
2use crate::traits::AdjustmentValue;
3
4#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
5pub struct ColumnReference {
6 num: u32,
7 is_lock: bool,
8}
9
10impl Default for ColumnReference {
11 #[inline]
12 fn default() -> Self {
13 Self {
14 num: 1,
15 is_lock: false,
16 }
17 }
18}
19
20impl ColumnReference {
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(crate) fn get_coordinate(&self) -> String {
74 format!(
75 "{}{}",
76 if self.is_lock { "$" } else { "" },
77 string_from_column_index(&self.num),
78 )
79 }
80}
81impl AdjustmentValue for ColumnReference {
82 #[inline]
83 fn adjustment_insert_value(&mut self, root_num: &u32, offset_num: &u32) {
84 self.num = adjustment_insert_coordinate(&self.num, root_num, offset_num);
85 }
86
87 #[inline]
88 fn adjustment_remove_value(&mut self, root_num: &u32, offset_num: &u32) {
89 self.num = adjustment_remove_coordinate(&self.num, root_num, offset_num);
90 }
91
92 #[inline]
93 fn is_remove_value(&self, root_num: &u32, offset_num: &u32) -> bool {
94 is_remove_coordinate(&self.num, root_num, offset_num)
95 }
96}