Skip to main content

Module layout

Module layout 

Source
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 DocumentLayoutView

No separate LayoutTree. Taffy’s trait implementations (LayoutPartialTree, CacheTree, etc.) are on DocumentLayoutView which wraps &mut Document + &LayoutContext.

§Module structure

ModulePurpose
node_dataPer-node layout data (style, cache, layout results)
document_layoutTaffy trait impls on Document, resolve pipeline
fragmentImmutable output flowing up
resultAlgorithm output wrapper
algo::sharedComputedValues → taffy::Style conversion
inlineText measurement, font system
hit_testFragment 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.