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
use types::{Appearance, PropertyValue};
use properties::Color;

impl_union_into_appearance!(BorderStyle);

#[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize)]
pub struct BorderRadius {
    pub bottom_right: i32,
    pub bottom_left: i32,
    pub top_right: i32,
    pub top_left: i32,
}

#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Border {
    pub style: BorderStyle,
    pub color: Color,
    pub width: f32,
}

impl Default for Border {
    fn default() -> Border {
        Border {
            style: BorderStyle::None,
            color: Color::transparent(),
            width: 0.0,
        }
    }
}

#[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize)]
pub struct BorderStyles {
    pub bottom: Border,
    pub right: Border,
    pub left: Border,
    pub top: Border,
}

#[derive(Debug, PartialEq, Copy, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum BorderStyle {
    None,
    Solid,
    Double,
    Dotted,
    Dashed,
    Hidden,
    Groove,
    Ridge,
    Inset,
    Outset,
}