ui_layout/
style.rs

1#[derive(Debug, Clone, Copy)]
2pub enum Display {
3    Flex { flex_direction: FlexDirection },
4    Block,
5    None,
6}
7
8impl Default for Display {
9    fn default() -> Self {
10        Display::Flex {
11            flex_direction: FlexDirection::Column,
12        }
13    }
14}
15
16#[derive(Debug, Clone, Copy, Default)]
17pub enum FlexDirection {
18    Row,
19    #[default]
20    Column,
21}
22
23#[derive(Debug, Clone, Copy, Default)]
24pub struct ItemStyle {
25    pub flex_grow: f32,
26    pub flex_basis: Option<f32>,
27    pub align_self: Option<AlignItems>,
28}
29
30#[derive(Debug, Clone, Copy, Default)]
31pub struct SizeStyle {
32    pub width: Option<f32>,
33    pub height: Option<f32>,
34    pub min_width: Option<f32>,
35    pub max_width: Option<f32>,
36    pub min_height: Option<f32>,
37    pub max_height: Option<f32>,
38}
39
40#[derive(Debug, Clone, Copy, Default)]
41pub struct Spacing {
42    pub margin_top: f32,
43    pub margin_bottom: f32,
44    pub margin_left: f32,
45    pub margin_right: f32,
46    pub padding_top: f32,
47    pub padding_bottom: f32,
48    pub padding_left: f32,
49    pub padding_right: f32,
50}
51
52#[derive(Debug, Clone, Copy, Default)]
53pub enum JustifyContent {
54    #[default]
55    Start,
56    Center,
57    End,
58    SpaceBetween,
59    SpaceAround,
60    SpaceEvenly,
61}
62
63#[derive(Debug, Clone, Copy, Default)]
64pub enum AlignItems {
65    Start,
66    Center,
67    End,
68    #[default]
69    Stretch,
70}
71
72#[derive(Debug, Clone, Copy, Default)]
73pub struct Style {
74    pub display: Display,
75    pub item_style: ItemStyle,
76    pub size: SizeStyle,
77    pub spacing: Spacing,
78
79    pub justify_content: JustifyContent,
80    pub align_items: AlignItems,
81    pub column_gap: f32,
82    pub row_gap: f32,
83}