Expand description
Layout primitives and solvers.
This crate provides layout components for terminal UIs:
Flex- 1D constraint-based layout (rows or columns)Grid- 2D constraint-based layout with cell spanningConstraint- Size constraints (Fixed, Percentage, Min, Max, Ratio, FitContent)debug- Layout constraint debugging and introspectioncache- Layout result caching for memoization
§Role in FrankenTUI
ftui-layout is the geometry solver for widgets and screens. It converts
constraints into concrete rectangles, with support for intrinsic sizing and
caching to keep layout deterministic and fast.
§How it fits in the system
The runtime and widgets call into this crate to split a Rect into nested
regions. Those regions are then passed to widgets or custom renderers, which
ultimately draw into ftui-render frames.
§Intrinsic Sizing
The layout system supports content-aware sizing via LayoutSizeHint and
Flex::split_with_measurer:
ⓘ
use ftui_layout::{Flex, Constraint, LayoutSizeHint};
let flex = Flex::horizontal()
.constraints([Constraint::FitContent, Constraint::Fill]);
let rects = flex.split_with_measurer(area, |idx, available| {
match idx {
0 => LayoutSizeHint { min: 5, preferred: 20, max: None },
_ => LayoutSizeHint::ZERO,
}
});Re-exports§
pub use cache::CoherenceCache;pub use cache::CoherenceId;pub use cache::LayoutCache;pub use cache::LayoutCacheKey;pub use cache::LayoutCacheStats;pub use direction::FlowDirection;pub use direction::LogicalAlignment;pub use direction::LogicalSides;pub use direction::mirror_rects_horizontal;pub use grid::Grid;pub use grid::GridArea;pub use grid::GridLayout;pub use responsive::Responsive;pub use responsive_layout::ResponsiveLayout;pub use responsive_layout::ResponsiveSplit;pub use visibility::Visibility;
Modules§
- cache
- Layout cache for memoizing layout computation results.
- debug
- Layout constraint debugging utilities.
- direction
- RTL layout mirroring and logical direction support (bd-ic6i.3).
- grid
- 2D Grid layout system for dashboard-style positioning.
- responsive
- Responsive value mapping: apply different values based on breakpoint.
- responsive_
layout - Responsive layout switching: different
Flexconfigurations per breakpoint. - visibility
- Breakpoint-based visibility helpers.
Structs§
- Breakpoints
- Breakpoint thresholds for responsive layouts.
- Flex
- A flexible layout container.
- Layout
Size Hint - Size hint returned by measurer callbacks for intrinsic sizing.
- Measurement
- Size negotiation hints for layout.
- Rect
- A rectangle for scissor regions, layout bounds, and hit testing.
- Sides
- Sides for padding/margin.
- Size
- A 2D size in terminal cells.
Enums§
- Alignment
- Alignment of items within the layout.
- Breakpoint
- Responsive breakpoint tiers for terminal widths.
- Constraint
- A constraint on the size of a layout area.
- Direction
- The direction to layout items.
Functions§
- round_
layout_ stable - Round real-valued layout targets to integer cells with exact sum conservation.
Type Aliases§
- Previous
Allocation - Previous frame’s allocation, used as tie-breaker for temporal stability.