layout/stack.go
Functions
func Compute
func (s *StackLayout) Compute(tree LayoutTree, root NodeID, available geometry.Size) Result {
switch s.Direction {
case StackVertical:
return s.computeVStack(tree, root, available)
case StackHorizontal:
return s.computeHStack(tree, root, available)
case StackZ:
return s.computeZStack(tree, root, available)
default:
return Result{}
}
}
func Compute
Compute performs ZStack layout.
func (z *ZStackLayout) Compute(tree LayoutTree, root NodeID, available geometry.Size) Result {
return computeZStackCommon(tree, root, available, z.alignChild)
}
func Name
Name returns the algorithm name based on direction.
func (s *StackLayout) Name() string {
switch s.Direction {
case StackVertical:
return stackVStackStr
case StackHorizontal:
return stackHStackStr
case StackZ:
return stackZStackStr
default:
return "stack"
}
}
func Name
Name returns "zstack".
func (z *ZStackLayout) Name() string {
return stackZStackStr
}
func String
String returns a string representation of stack alignment.
func (a StackAlignment) String() string {
switch a {
case StackAlignStart:
return alignStrStart
case StackAlignCenter:
return alignStrCenter
case StackAlignEnd:
return alignStrEnd
case StackAlignStretch:
return alignStrStretch
default:
return alignStrUnknown
}
}
Structs
type StackLayout struct
StackLayout implements VStack, HStack, and ZStack layouts.
StackLayout arranges children in a single direction with spacing,
or overlays them on top of each other for ZStack.
type StackLayout struct {
// Direction specifies the stack direction.
Direction StackDirection
// Alignment specifies cross-axis alignment (or position for ZStack).
Alignment StackAlignment
// Spacing is the gap between children (not used for ZStack).
Spacing float32
}
type ZStackLayout struct
ZStackLayout implements overlay stack with 9-position alignment.
type ZStackLayout struct {
Alignment ZStackAlignment
}
Compute performs stack layout on the tree starting at root.