veloren_voxygen/ui/ice/renderer/style/
checkbox.rs

1use super::super::super::widget::image;
2
3#[derive(Clone, Copy)]
4struct Background {
5    default: image::Handle,
6    hover: image::Handle,
7    checked: image::Handle,
8    hover_checked: image::Handle,
9}
10
11impl Background {
12    fn new(image: image::Handle) -> Self {
13        Self {
14            default: image,
15            hover: image,
16            checked: image,
17            hover_checked: image,
18        }
19    }
20}
21
22#[derive(Clone, Copy, Default)]
23pub struct Style {
24    background: Option<Background>,
25    check: Option<image::Handle>,
26}
27
28impl Style {
29    pub fn new(image: image::Handle, check: image::Handle) -> Self {
30        Self {
31            background: Some(Background::new(image)),
32            check: Some(check),
33        }
34    }
35
36    #[must_use]
37    pub fn bg_hover_image(mut self, image: image::Handle) -> Self {
38        self.background = Some(match self.background {
39            Some(mut background) => {
40                background.hover = image;
41                background
42            },
43            None => Background::new(image),
44        });
45        self
46    }
47
48    #[must_use]
49    pub fn bg_checked_image(mut self, image: image::Handle) -> Self {
50        self.background = Some(match self.background {
51            Some(mut background) => {
52                background.checked = image;
53                background
54            },
55            None => Background::new(image),
56        });
57        self
58    }
59
60    #[must_use]
61    pub fn bg_hover_checked_image(mut self, image: image::Handle) -> Self {
62        self.background = Some(match self.background {
63            Some(mut background) => {
64                background.hover_checked = image;
65                background
66            },
67            None => Background::new(image),
68        });
69        self
70    }
71
72    pub fn check(&self) -> Option<image::Handle> { self.check }
73
74    pub fn bg_checked(&self) -> Option<image::Handle> {
75        self.background.as_ref().map(|b| b.checked)
76    }
77
78    pub fn bg_hover(&self) -> Option<image::Handle> { self.background.as_ref().map(|b| b.hover) }
79
80    pub fn bg_hover_checked(&self) -> Option<image::Handle> {
81        self.background.as_ref().map(|b| b.hover_checked)
82    }
83
84    pub fn bg_default(&self) -> Option<image::Handle> {
85        self.background.as_ref().map(|b| b.default)
86    }
87}