Expand description
Layout utilities
For documentation of layout resolution, see the Layout
trait.
Size units are physical (real) pixels. This applies to most of KAS.
Data types
SizeRules
is the “heart” of widget layout, used to specify a widget’s
size requirements. It provides various methods to compute derived rules
and SizeRules::solve_seq
, the “muscle” of the layout engine.
AxisInfo
, Margins
and Stretch
are auxilliary data types.
Solvers
The RulesSolver
and RulesSetter
traits define interfaces for
layout engines:
SingleSolver
andSingleSetter
are trivial implementations for single-child parentsRowSolver
andRowSetter
set out a row or column of children. These are parametrised overS: RowStorage
allowing both efficient operation on a small fixed number of children withFixedRowStorage
and operation on a over aVec
withDynRowStorage
.GridSolver
andGridSetter
set out children assigned to grid cells with optional cell-spans. This is the most powerful and flexible layout engine.
RowPositionSolver
may be used with widgets set out by RowSetter
to quickly locate children from a coord
or rect
.
Structs
- Partial alignment information provided by the parent
- Provides alignment information on both axes along with ideal size
- Information on which axis is being resized
- Variable-length grid storage
- Variable-length row storage
- Fixed-length grid storage
- Fixed-length row storage
- Frame size rules
- Layout storage for frame layout
- Per-child information
- Grid dimensions
- A
RulesSetter
for grids supporting cell-spans - A
RulesSolver
for grids supporting cell-spans - Logical (pre-scaling) pixel size
- Margin sizes
- Layout storage for alignment
- Control over scaling
- Allows efficient implementations of
draw
/ event handlers based on the layout representation. - A
RulesSetter
for rows (and, without loss of generality, for columns). - A
RulesSolver
for rows (and, without loss of generality, for columns). RulesSetter
implementation for a fixed single-child layoutRulesSolver
implementation for a fixed single-child layout- Widget sizing information
- Size solver
Enums
- Alignment of contents
- Priority for stretching widgets beyond ideal size
Traits
- Implementation generated by use of
layout = ..
property of#[widget]
- Bound on
GridSolver
type parameters - Requirements of grid solver storage type
- Requirements of row solver storage type
- Temporary storage type.
- Resolves a
RulesSolver
solution for each child - A
SizeRules
solver for layouts
Functions
- Solve size rules for a widget