Module kas_core::layout

source ·
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 and SingleSetter are trivial implementations for single-child parents
  • RowSolver and RowSetter set out a row or column of children. These are parametrised over S: RowStorage allowing both efficient operation on a small fixed number of children with FixedRowStorage and operation on a over a Vec with DynRowStorage.
  • GridSolver and GridSetter 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 layout
RulesSolver 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