use bevy::reflect::Reflect;
#[derive(Default, Reflect, Copy, Clone, PartialEq, Eq, Debug)]
pub enum WidgetDisplay {
Block,
#[default]
Flex,
Grid,
None,
}
impl From<WidgetDisplay> for taffy::Display {
fn from(val: WidgetDisplay) -> taffy::Display {
match val {
WidgetDisplay::Block => taffy::Display::Block,
WidgetDisplay::Flex => taffy::Display::Flex,
WidgetDisplay::Grid => taffy::Display::Grid,
WidgetDisplay::None => taffy::Display::None,
}
}
}
#[derive(Default, Reflect, Copy, Clone, PartialEq, Eq, Debug)]
pub enum WidgetVisibility {
#[default]
Visible,
Hidden,
}
#[derive(Copy, Reflect, Clone, PartialEq, Eq, Debug, Default)]
pub enum WidgetOverflow {
#[default]
Visible,
Clip,
Hidden,
Scroll,
}
impl From<WidgetOverflow> for taffy::Overflow {
fn from(val: WidgetOverflow) -> taffy::Overflow {
match val {
WidgetOverflow::Visible => taffy::Overflow::Visible,
WidgetOverflow::Clip => taffy::Overflow::Clip,
WidgetOverflow::Hidden => taffy::Overflow::Hidden,
WidgetOverflow::Scroll => taffy::Overflow::Scroll,
}
}
}
#[derive(Default, Reflect, Copy, Clone, PartialEq, Eq, Debug)]
pub enum WidgetPosition {
#[default]
Relative,
Absolute,
Fixed,
}
impl From<WidgetPosition> for taffy::Position {
fn from(val: WidgetPosition) -> taffy::Position {
match val {
WidgetPosition::Relative => taffy::Position::Relative,
WidgetPosition::Absolute => taffy::Position::Absolute,
_ => taffy::Position::Absolute,
}
}
}
impl From<super::Units> for taffy::Dimension {
fn from(val: super::Units) -> taffy::Dimension {
match val {
super::Units::Pixels(pixels) => taffy::Dimension::Length(pixels),
super::Units::Percentage(percentage) => taffy::Dimension::Percent(percentage / 100.0),
super::Units::Auto => taffy::Dimension::Auto,
}
}
}
impl From<super::Units> for taffy::LengthPercentageAuto {
fn from(val: super::Units) -> taffy::LengthPercentageAuto {
match val {
super::Units::Pixels(pixels) => taffy::LengthPercentageAuto::Length(pixels),
super::Units::Percentage(percentage) => {
taffy::LengthPercentageAuto::Percent(percentage / 100.0)
}
super::Units::Auto => taffy::LengthPercentageAuto::Auto,
}
}
}
impl From<super::Units> for taffy::LengthPercentage {
fn from(val: super::Units) -> taffy::LengthPercentage {
match val {
super::Units::Pixels(pixels) => taffy::LengthPercentage::Length(pixels),
super::Units::Percentage(percentage) => {
taffy::LengthPercentage::Percent(percentage / 100.0)
}
super::Units::Auto => taffy::LengthPercentage::Percent(1.0),
}
}
}
impl From<super::Edge> for taffy::Rect<taffy::LengthPercentageAuto> {
fn from(val: super::Edge) -> taffy::Rect<taffy::LengthPercentageAuto> {
taffy::Rect {
left: val.left.into(),
right: val.right.into(),
top: val.top.into(),
bottom: val.bottom.into(),
}
}
}
impl From<super::Edge> for taffy::Rect<taffy::LengthPercentage> {
fn from(val: super::Edge) -> taffy::Rect<taffy::LengthPercentage> {
taffy::Rect {
left: val.left.into(),
right: val.right.into(),
top: val.top.into(),
bottom: val.bottom.into(),
}
}
}
#[derive(Default, Reflect, Copy, Clone, PartialEq, Eq, Debug)]
pub enum WidgetAlignItems {
Start,
End,
#[default]
FlexStart,
FlexEnd,
Center,
Baseline,
Stretch,
}
impl From<WidgetAlignItems> for taffy::AlignItems {
fn from(val: WidgetAlignItems) -> taffy::AlignItems {
match val {
WidgetAlignItems::Start => taffy::AlignItems::Start,
WidgetAlignItems::End => taffy::AlignItems::End,
WidgetAlignItems::FlexStart => taffy::AlignItems::FlexStart,
WidgetAlignItems::FlexEnd => taffy::AlignItems::FlexEnd,
WidgetAlignItems::Center => taffy::AlignItems::Center,
WidgetAlignItems::Baseline => taffy::AlignItems::Baseline,
WidgetAlignItems::Stretch => taffy::AlignItems::Stretch,
}
}
}
pub type WidgetAlignSelf = WidgetAlignItems;
#[derive(Default, Reflect, Copy, Clone, PartialEq, Eq, Debug)]
pub enum WidgetAlignContent {
Start,
End,
#[default]
FlexStart,
FlexEnd,
Center,
Stretch,
SpaceBetween,
SpaceEvenly,
SpaceAround,
}
impl From<WidgetAlignContent> for taffy::AlignContent {
fn from(val: WidgetAlignContent) -> taffy::AlignContent {
match val {
WidgetAlignContent::Start => taffy::AlignContent::Start,
WidgetAlignContent::End => taffy::AlignContent::End,
WidgetAlignContent::FlexStart => taffy::AlignContent::FlexStart,
WidgetAlignContent::FlexEnd => taffy::AlignContent::FlexEnd,
WidgetAlignContent::Center => taffy::AlignContent::Center,
WidgetAlignContent::Stretch => taffy::AlignContent::Stretch,
WidgetAlignContent::SpaceBetween => taffy::AlignContent::SpaceBetween,
WidgetAlignContent::SpaceEvenly => taffy::AlignContent::SpaceEvenly,
WidgetAlignContent::SpaceAround => taffy::AlignContent::SpaceAround,
}
}
}
pub type WidgetJustifyContent = WidgetAlignContent;
pub type WidgetJustifyItems = WidgetAlignItems;
pub type WidgetJustifySelf = WidgetAlignItems;
#[derive(Default, Reflect, Copy, Clone, PartialEq, Eq, Debug)]
pub enum WidgetFlexDirection {
#[default]
Row,
Column,
RowReverse,
ColumnReverse,
}
impl From<WidgetFlexDirection> for taffy::FlexDirection {
fn from(val: WidgetFlexDirection) -> taffy::FlexDirection {
match val {
WidgetFlexDirection::Row => taffy::FlexDirection::Row,
WidgetFlexDirection::Column => taffy::FlexDirection::Column,
WidgetFlexDirection::RowReverse => taffy::FlexDirection::RowReverse,
WidgetFlexDirection::ColumnReverse => taffy::FlexDirection::ColumnReverse,
}
}
}
#[derive(Default, Reflect, Copy, Clone, PartialEq, Eq, Debug)]
pub enum WidgetFlexWrap {
#[default]
NoWrap,
Wrap,
WrapReverse,
}
impl From<WidgetFlexWrap> for taffy::FlexWrap {
fn from(val: WidgetFlexWrap) -> taffy::FlexWrap {
match val {
WidgetFlexWrap::NoWrap => taffy::FlexWrap::NoWrap,
WidgetFlexWrap::Wrap => taffy::FlexWrap::Wrap,
WidgetFlexWrap::WrapReverse => taffy::FlexWrap::WrapReverse,
}
}
}