Skip to main content

presentar_layout/
lib.rs

1#![allow(clippy::missing_const_for_fn)]
2#![allow(clippy::match_same_arms)]
3#![allow(clippy::unwrap_used)]
4#![allow(clippy::disallowed_methods)]
5#![allow(clippy::too_many_lines)]
6#![allow(clippy::needless_pass_by_value)]
7#![allow(clippy::cast_possible_wrap)]
8#![allow(clippy::cast_sign_loss)]
9#![allow(clippy::cast_precision_loss)]
10#![allow(clippy::map_unwrap_or)]
11#![allow(clippy::needless_range_loop)]
12#![allow(clippy::similar_names)]
13#![allow(clippy::uninlined_format_args)]
14#![allow(clippy::module_name_repetitions)]
15#![allow(clippy::manual_let_else)]
16#![allow(clippy::manual_div_ceil)]
17#![allow(clippy::doc_markdown)]
18//! Layout engine for Presentar UI framework.
19//!
20//! Implements Flexbox-inspired and CSS Grid layout with SIMD acceleration.
21//!
22//! # ComputeBlock Grid Compositor
23//!
24//! The `compute_block` module provides a compositor for managing TUI panel layouts:
25//!
26//! - **Intrinsic Sizing**: Widgets report min/preferred/max sizes via `SizeHint`
27//! - **Cell Ownership**: Prevents rendering conflicts via `GridCompositor`
28//! - **Clipping**: Enforces bounds at render time to prevent artifacts
29//!
30//! See `ComputeBlock` and `GridCompositor` for details.
31
32mod cache;
33mod compute_block;
34mod engine;
35mod flex;
36mod grid;
37
38pub use cache::LayoutCache;
39pub use compute_block::{
40    compute_intrinsic_layout, ClipMode, CompositorError, ComputeBlock, FlexConstraint,
41    GridCompositor, IntrinsicSize, Rect, Size, SizeHint,
42};
43pub use engine::LayoutEngine;
44pub use flex::{FlexAlign, FlexDirection, FlexItem, FlexJustify};
45pub use grid::{
46    auto_place_items, compute_grid_layout, GridAlign, GridArea, GridAutoFlow, GridItem, GridLayout,
47    GridTemplate, TrackSize,
48};