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)]
20pub enum Style {
21    Image(image::Handle, Rgba<u8>),
22    Color(Rgba<u8>, Border),
23    None,
24}
25
26impl Style {
27    /// Shorthand for common case where the color of the image is not modified
28    pub fn image(image: image::Handle) -> Self { Self::Image(image, Rgba::broadcast(255)) }
29
30    /// Shorthand for a color background with no border
31    pub fn color(color: Rgba<u8>) -> Self { Self::Color(color, Border::None) }
32
33    /// Shorthand for a color background with a cornerless border
34    pub fn color_with_double_cornerless_border(
35        color: Rgba<u8>,
36        inner: Rgba<u8>,
37        outer: Rgba<u8>,
38    ) -> Self {
39        Self::Color(color, Border::DoubleCornerless { inner, outer })
40    }
41
42    /// Shorthand for a color background with image borders where the corners
43    /// are inset
44    pub fn color_with_image_border(
45        color: Rgba<u8>,
46        corner: image::Handle,
47        edge: image::Handle,
48    ) -> Self {
49        Self::Color(color, Border::Image { corner, edge })
50    }
51}
52
53impl Default for Style {
54    fn default() -> Self { Self::None }
55}