MoonBit port of the Rust crate taffy (v0.5.x)
///|
test {
let taffy : @Milky2018/moon_taffy.TaffyTree[Unit] = @Milky2018/moon_taffy.TaffyTree::new()
let child = taffy.new_leaf(@Milky2018/moon_taffy.Style::default())
let root = taffy.new_with_children(
@Milky2018/moon_taffy.Style::default().with_size(
@Milky2018/moon_taffy.Size::new(
width=@Milky2018/moon_taffy.length(100.0),
height=@Milky2018/moon_taffy.length(100.0),
),
),
[child],
)
taffy.compute_layout(root, @Milky2018/moon_taffy.Size::max_content())
let layout = taffy.layout(root)
assert_eq(layout.size.width, 100.0)
assert_eq(layout.size.height, 100.0)
}#alias(JustifyContent)
pub enum AlignContent {
AlignStart
AlignEnd
AlignFlexStart
AlignFlexEnd
AlignCenter
AlignStretch
AlignSpaceBetween
AlignSpaceEvenly
AlignSpaceAround
}#alias(JustifyItems)
#alias(AlignSelf)
#alias(JustifySelf)
pub enum AlignItems {
ItemsStart
ItemsEnd
ItemsFlexStart
ItemsFlexEnd
ItemsCenter
ItemsBaseline
ItemsStretch
}pub enum AvailableSpace {
AvailDefinite(Double)
AvailMinContent
AvailMaxContent
}pub enum GridPlacement {
PlaceAuto
PlaceLine(Int)
PlaceSpan(Int)
}pub enum GridTrackRepetition {
RepeatCount(Int)
RepeatAutoFill
RepeatAutoFit
}pub struct Line[T] {
start : T
end : T
}pub struct Point[T] {
x : T
y : T
}pub struct Rect[T] {
left : T
right : T
top : T
bottom : T
}pub struct Size[T] {
width : T
height : T
}pub struct Style {
display : Display
overflow : Point[Overflow]
scrollbar_width : Double
position : Position
inset : Rect[Dimension]
size : Size[Dimension]
min_size : Size[Dimension]
max_size : Size[Dimension]
aspect_ratio : Double?
margin : Rect[Dimension]
padding : Rect[Dimension]
border : Rect[Dimension]
align_items : AlignItems?
align_self : AlignItems?
justify_items : AlignItems?
justify_self : AlignItems?
align_content : AlignContent?
justify_content : AlignContent?
gap : Size[Dimension]
flex_direction : FlexDirection
flex_wrap : FlexWrap
flex_basis : Dimension
flex_grow : Double
flex_shrink : Double
grid_template_rows : Array[Dimension]
grid_template_columns : Array[Dimension]
grid_auto_rows : Array[Dimension]
grid_auto_columns : Array[Dimension]
grid_auto_flow : GridAutoFlow
grid_row : Line[GridPlacement]
grid_column : Line[GridPlacement]
grid_row_start : Int?
grid_column_start : Int?
}pub struct TaffyTree[C] {
// private fields
}fn[C] TaffyTree::compute_layout(self : TaffyTree[C], root : Int, available_space : Size[AvailableSpace]) -> Unit raise TaffyErrorfn[C] TaffyTree::compute_layout_with_measure(self : TaffyTree[C], root : Int, available_space : Size[AvailableSpace], measure_function : (Size[Double?], Size[AvailableSpace], Int, C?, Style) -> Size[Double]) -> Unit raise TaffyErrorfn[C] TaffyTree::remove_child(self : TaffyTree[C], parent : Int, child : Int) -> Int raise TaffyErrorfn[C] TaffyTree::set_children(self : TaffyTree[C], parent : Int, children : Array[Int]) -> Unit raise TaffyErrorfn[C] TaffyTree::set_node_context(self : TaffyTree[C], node : Int, context : C) -> Unit raise TaffyErrorMoonBit port of the Rust crate taffy (v0.5.x)