use crate::units::{Dimension, LengthPercentage};
#[derive(Debug, Clone, PartialEq)]
pub struct FlexStyle {
pub direction: FlexDirection,
pub wrap: FlexWrap,
pub justify_content: JustifyContent,
pub align_items: AlignItems,
pub align_self: AlignSelf,
pub align_content: AlignContent,
pub flex_grow: f64,
pub flex_shrink: f64,
pub flex_basis: Dimension,
pub column_gap: LengthPercentage,
pub row_gap: LengthPercentage,
pub order: i32,
}
impl Default for FlexStyle {
fn default() -> Self {
Self {
direction: FlexDirection::Row,
wrap: FlexWrap::NoWrap,
justify_content: JustifyContent::FlexStart,
align_items: AlignItems::Stretch,
align_self: AlignSelf::Auto,
align_content: AlignContent::Stretch,
flex_grow: 0.0,
flex_shrink: 1.0,
flex_basis: Dimension::Auto,
column_gap: LengthPercentage::ZERO,
row_gap: LengthPercentage::ZERO,
order: 0,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum FlexDirection {
#[default]
Row,
RowReverse,
Column,
ColumnReverse,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum FlexWrap {
#[default]
NoWrap,
Wrap,
WrapReverse,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum JustifyContent {
#[default]
FlexStart,
FlexEnd,
Center,
SpaceBetween,
SpaceAround,
SpaceEvenly,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum AlignItems {
FlexStart,
FlexEnd,
Center,
Baseline,
#[default]
Stretch,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum AlignSelf {
#[default]
Auto,
FlexStart,
FlexEnd,
Center,
Baseline,
Stretch,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum AlignContent {
FlexStart,
FlexEnd,
Center,
SpaceBetween,
SpaceAround,
#[default]
Stretch,
}