1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// devela/src/ui/layout/_.rs
//
// public
//!
//! Layout types express positions, extents, regions, and spatial assignment
//! in a backend-independent logical space.
//!
//! [`Lunit`] is the fixed-point scalar underlying the module's spatial types.
//! The [`UiPos`], [`UiExt`], [`UiStride`], and [`UiRect`] aliases specialize
//! general geometric types for UI layout.
//!
//! ```text
//! Lunit ── specializes ──┬── UiPos
//! ├── UiExt
//! ├── UiStride
//! └── UiRect
//!
//! UiRect ── consumed incrementally by ──> UiStack
//!
//! available + used ── recorded by ──> Layout1d
//! UiId + UiRect ── recorded by ──> LayoutReceipt
//! ```
//!
//! - [`UiRect`] provides deterministic region operations
//! such as insetting and cutting from individual sides.
//! - [`UiStack`] builds on those operations as a cursor-like helper that
//! takes consecutive regions while retaining the unassigned remainder.
//! - [`Layout1d`] records available and consumed space along one axis.
//! - [`LayoutReceipt`] associates a resolved identity with its assigned region.
//!
//! # Boundaries
//!
//! This module assigns space in logical UI coordinates.
//!
//! - Resolved identity comes from [`ui::frame`][crate::ui::frame].
//! - General spatial forms come from [`geom::metric`][crate::geom::metric].
//! - Interaction routing may consume regions through [`ui::route`][crate::ui::route].
//! - Projection into terminal cells, physical pixels, or other output units
//! belongs to [`ui::view`][crate::ui::view] and its consumers.
//!
//! These types do not imply a layout tree, constraint solver, styling system,
//! intrinsic measurement protocol, or retained layout engine.
//
cratemods_in!
cratemods_out!