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
use super::border::Border;

#[derive(Default, Debug, Clone)]
pub struct Borders {
    left: Border,
    right: Border,
    top: Border,
    bottom: Border,
    diagonal: Border,
    diagonal_direction: usize,
    all_borders: Border,
    outline: Border,
    inside: Border,
    vertical: Border,
    horizontal: Border,
}
impl Borders {
    // Diagonal directions

    pub const DIAGONAL_NONE: usize = 0;
    pub const DIAGONAL_UP: usize = 1;
    pub const DIAGONAL_DOWN: usize = 2;
    pub const DIAGONAL_BOTH: usize = 3;

    pub fn get_left(&self)-> &Border {
        &self.left
    }
    pub fn get_left_mut(&mut self)-> &mut Border {
        &mut self.left
    }
    pub(crate) fn set_left(&mut self, value:Border) {
        self.left = value;
    }
    pub fn get_right(&self)-> &Border {
        &self.right
    }
    pub fn get_right_mut(&mut self)-> &mut Border {
        &mut self.right
    }
    pub(crate) fn set_right(&mut self, value:Border) {
        self.right = value;
    }
    pub fn get_top(&self)-> &Border {
        &self.top
    }
    pub fn get_top_mut(&mut self)-> &mut Border {
        &mut self.top
    }
    pub(crate) fn set_top(&mut self, value:Border) {
        self.top = value;
    }
    pub fn get_bottom(&self)-> &Border {
        &self.bottom
    }
    pub fn get_bottom_mut(&mut self)-> &mut Border {
        &mut self.bottom
    }
    pub(crate) fn set_bottom(&mut self, value:Border) {
        self.bottom = value;
    }
    pub fn get_diagonal(&self)-> &Border {
        &self.diagonal
    }
    pub fn get_diagonal_mut(&mut self)-> &mut Border {
        &mut self.diagonal
    }
    pub(crate) fn set_diagonal(&mut self, value:Border) {
        self.diagonal = value;
    }
    pub fn get_diagonal_direction(&self)-> &usize {
        &self.diagonal_direction
    }
    pub(crate) fn set_diagonal_direction(&mut self, value:usize) {
        self.diagonal_direction = value;
    }
    pub(crate) fn get_defalut_value() -> Borders {
        let def = Borders::default();
        def
    }
    pub(crate) fn get_hash_code(&self)-> String {
        format!("{:x}", md5::compute(format!("{}{}{}{}{}{}",
            &self.get_left().get_hash_code(),
            &self.get_right().get_hash_code(),
            &self.get_top().get_hash_code(),
            &self.get_bottom().get_hash_code(),
            &self.get_diagonal().get_hash_code(),
            &self.get_diagonal_direction()
        )))
    }
}