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-spansA
RulesSolver
for grids supporting cell-spansLogical (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 layoutWidget sizing information
Size solver
Enums
Traits
Implementation generated by use of
layout = ..
property of #[widget]
Bound on
GridSolver
type parametersRequirements of grid solver storage type
Requirements of row solver storage type
Temporary storage type.
Resolves a
RulesSolver
solution for each childA
SizeRules
solver for layoutsFunctions
Solve size rules for a widget