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

1use super::super::super::widget::image;
2use vek::Rgba;
3
4/// Container Border
5#[derive(Clone, Copy)]
6pub enum Border {
7    DoubleCornerless {
8        inner: Rgba<u8>,
9        outer: Rgba<u8>,
10    },
11    Image {
12        corner: image::Handle,
13        edge: image::Handle,
14    },
15    None,
16}
17
18/// Background of the container
19#[derive(Clone, Copy, Default)]
20pub enum Style {
21    Image(image::Handle, Rgba<u8>),
22    Color(Rgba<u8>, Border),
23    #[default]
24    None,
25}
26
27impl Style {
28    /// Shorthand for common case where the color of the image is not modified
29    pub fn image(image: image::Handle) -> Self { Self::Image(image, Rgba::broadcast(255)) }
30
31    /// Shorthand for a color background with no border
32    pub fn color(color: Rgba<u8>) -> Self { Self::Color(color, Border::None) }
33
34    /// Shorthand for a color background with a cornerless border
35    pub fn color_with_double_cornerless_border(
36        color: Rgba<u8>,
37        inner: Rgba<u8>,
38        outer: Rgba<u8>,
39    ) -> Self {
40        Self::Color(color, Border::DoubleCornerless { inner, outer })
41    }
42
43    /// Shorthand for a color background with image borders where the corners
44    /// are inset
45    pub fn color_with_image_border(
46        color: Rgba<u8>,
47        corner: image::Handle,
48        edge: image::Handle,
49    ) -> Self {
50        Self::Color(color, Border::Image { corner, edge })
51    }
52}