use crate::units::{LengthPercentage, Pt};
#[derive(Debug, Clone, PartialEq)]
pub struct GridStyle {
pub template_columns: Vec<TrackSize>,
pub template_rows: Vec<TrackSize>,
pub auto_columns: TrackSize,
pub auto_rows: TrackSize,
pub auto_flow: GridAutoFlow,
pub column_gap: LengthPercentage,
pub row_gap: LengthPercentage,
pub column_start: GridLine,
pub column_end: GridLine,
pub row_start: GridLine,
pub row_end: GridLine,
}
impl Default for GridStyle {
fn default() -> Self {
Self {
template_columns: Vec::new(),
template_rows: Vec::new(),
auto_columns: TrackSize::Auto,
auto_rows: TrackSize::Auto,
auto_flow: GridAutoFlow::Row,
column_gap: LengthPercentage::ZERO,
row_gap: LengthPercentage::ZERO,
column_start: GridLine::Auto,
column_end: GridLine::Auto,
row_start: GridLine::Auto,
row_end: GridLine::Auto,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Default)]
pub enum TrackSize {
Length(Pt),
Percent(f64),
Fr(f64),
MinContent,
MaxContent,
#[default]
Auto,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum GridAutoFlow {
#[default]
Row,
Column,
RowDense,
ColumnDense,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum GridLine {
#[default]
Auto,
Line(i32),
Span(u32),
}