Expand description
Layout engine — computes size and position for every element.
Chrome equivalent: blink/renderer/core/layout/ + ng/ (LayoutNG).
§Architecture (DOM IS the layout tree)
DOM Tree (Document) Fragment Tree
─────────────────── ──────────────
Storage<LayoutNodeData> (final positions)
.style (taffy::Style)
.cache (taffy::Cache) ──layout()──► Fragment (Arc, immutable)
.layout_children TextFragment
.unrounded_layout Fragment
Taffy reads/writes LayoutNodeData
directly via DocumentLayoutViewNo separate LayoutTree. Taffy’s trait implementations
(LayoutPartialTree, CacheTree, etc.) are on DocumentLayoutView
which wraps &mut Document + &LayoutContext.
§Module structure
| Module | Purpose |
|---|---|
node_data | Per-node layout data (style, cache, layout results) |
document_layout | Taffy trait impls on Document, resolve pipeline |
fragment | Immutable output flowing up |
result | Algorithm output wrapper |
algo::shared | ComputedValues → taffy::Style conversion |
inline | Text measurement, font system |
hit_test | Fragment tree hit testing |
Re-exports§
pub use context::LayoutContext;pub use fragment::BoxFragmentData;pub use fragment::ChildFragment;pub use fragment::Fragment;pub use fragment::FragmentKind;pub use fragment::LineFragmentData;pub use fragment::OverflowClip;pub use fragment::PhysicalInsets;pub use fragment::TextFragmentData;pub use hit_test::HitTestResult;pub use inline::FontHeight;pub use inline::FontMetrics;pub use inline::TextMeasurer;pub use inline::TextMetrics;pub use inline::resolve_line_height;pub use node_data::LayoutNodeData;pub use result::IntrinsicSizes;pub use result::LayoutResult;
Modules§
- algo
- Layout algorithms — shared utilities and compliance tests.
- box_
model - Shared box model utilities — stacking context detection.
- context
- Layout context — shared state for a layout pass.
- document_
layout - Layout integration — Taffy traits implemented against Document.
- fragment
- Fragment — the immutable output of layout.
- hit_
test - Hit testing — point → DOM element lookup.
- inline
- Inline formatting context — handles text and inline-level elements.
- node_
data - Per-node layout data — stored in Document’s parallel storage.
- result
- Layout result — the output of a layout algorithm.