Skip to main content

sequoia_layout/
lib.rs

1//! Layout engine for the Sequoia GUI framework.
2//!
3//! Resolves sizes and positions for the view tree: flex distribution, grid
4//! tracks, docked panels, wrapping, and text measurement through
5//! [`LayoutCtx`].
6//!
7//! - [`box_model`] — padding, margin, insets, and aspect-ratio helpers.
8//! - [`container`] — axes, alignment, justification, and container styles.
9//! - [`ctx`] — text measurement used during layout.
10//! - [`dock`] — docking sides, thickness, and preview rectangles.
11//! - [`flex`] — flex grow/shrink distribution and justification.
12//! - [`grid`] — grid tracks, placement, and auto flow.
13//! - [`masonry`] — waterfall columns with variable item heights.
14//! - [`overflow`] — overflow and scrolling modes.
15//! - [`resolve`] — length resolution and main-axis distribution.
16//! - [`style`] — per-view layout styles and sanitizers.
17//! - [`wrap`] — wrapping lines for flow containers.
18
19#![forbid(unsafe_code)]
20
21pub mod box_model;
22pub mod container;
23pub mod ctx;
24pub mod dock;
25pub mod flex;
26pub mod grid;
27pub mod masonry;
28pub mod overflow;
29pub mod resolve;
30pub mod style;
31pub mod wrap;
32
33pub use box_model::{
34    ShrinkAxis, apply_aspect_ratio, inset_rect, shrink_by_margin, shrink_by_padding,
35};
36pub use container::{Align, Axis, ContainerStyle, Justify};
37pub use ctx::LayoutCtx;
38pub use dock::{
39    Dock, DockStyle, dock_layout_order, dock_preview_rect, dock_thickness, effective_dock,
40    resolve_dock, sanitize_frac, sanitize_gap, sanitize_preview_frac, split_axis_for_dock,
41};
42pub use flex::{FlexItem, distribute_flex, justify_layout};
43pub use grid::{
44    GridFlow, GridPlacement, GridStyle, Track, auto_cells, resolve_tracks, resolve_tracks_clamped,
45    track_offsets,
46};
47pub use masonry::{MasonryPlacement, MasonryStyle, masonry_assign, masonry_column_width};
48pub use overflow::Overflow;
49pub use resolve::{
50    clamp_to, distribute_main, distribute_main_clamped, resolve_cross, resolve_flex_basis,
51    resolve_main,
52};
53pub use style::{
54    Indents, Inset, LayoutStyle, Position, sanitize_flex, sanitize_indent, sanitize_ratio,
55    sanitize_shrink,
56};
57pub use wrap::{WrapStyle, wrap_lines};