veloren_voxygen/ui/ice/renderer/style/
checkbox.rs1use 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}