1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#[derive(Default, Debug, Clone)]
pub struct Anchor {
    left_column: usize,
    left_offset: usize,
    top_row: usize,
    top_offset: usize,
    right_column: usize,
    right_offset: usize,
    bottom_row: usize,
    bottom_offset: usize,
}
impl Anchor {
    pub fn get_left_column(&self)->&usize {
        &self.left_column
    }

    pub fn set_left_column(&mut self, value:usize) {
        self.left_column = value;
    }
    
    pub fn get_left_offset(&self)->&usize {
        &self.left_offset
    }

    pub fn set_left_offset(&mut self, value:usize) {
        self.left_offset = value;
    }

    pub fn get_top_row(&self)->&usize {
        &self.top_row
    }

    pub fn set_top_row(&mut self, value:usize) {
        self.top_row = value;
    }

    pub fn get_top_offset(&self)->&usize {
        &self.top_offset
    }

    pub fn set_top_offset(&mut self, value:usize) {
        self.top_offset = value;
    }

    pub fn get_right_column(&self)->&usize {
        &self.right_column
    }

    pub fn set_right_column(&mut self, value:usize) {
        self.right_column = value;
    }

    pub fn get_right_offset(&self)->&usize {
        &self.right_offset
    }

    pub fn set_right_offset(&mut self, value:usize) {
        self.right_offset = value;
    }

    pub fn get_bottom_row(&self)->&usize {
        &self.bottom_row
    }

    pub fn set_bottom_row(&mut self, value:usize) {
        self.bottom_row = value;
    }

    pub fn get_bottom_offset(&self)->&usize {
        &self.bottom_offset
    }

    pub fn set_bottom_offset(&mut self, value:usize) {
        self.bottom_offset = value.into();
    }

    pub(crate) fn adjustment_insert_row(&mut self, num_rows:&usize) {
        self.top_row += num_rows;
        self.bottom_row += num_rows;
    }

    pub(crate) fn adjustment_insert_colmun(&mut self, num_cols:&usize) {
        self.left_column += num_cols;
        self.right_column += num_cols;
    }

    pub(crate) fn adjustment_remove_row(&mut self, num_rows:&usize) {
        self.top_row = if &self.top_row > num_rows { self.top_row - num_rows } else { 1 };
        self.bottom_row = if &self.bottom_row > num_rows { self.bottom_row - num_rows } else { 1 };
    }

    pub(crate) fn adjustment_remove_colmun(&mut self, num_cols:&usize) {
        self.left_column = if &self.left_column > num_cols { self.left_column - num_cols } else { 1 };
        self.right_column = if &self.right_column > num_cols { self.right_column - num_cols } else { 1 };
    }
}