Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
Rust
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495//! Hand-directed integration scaffolding, not generated code: box tree construction//! now, fragment tree construction from step 3 on. Built only against `dom`'s//! spec-named accessors, never against Stylo directly (`roadmap.md` -> "DOM layer,//! shaped by Stylo": `dom` is the only crate naming `style::`/`selectors::`).//!//! Box tree and fragment tree are kept separate (`roadmap.md` -> "Decisions"): a box//! can produce many fragments, so fragmentation cannot be expressed in a single tree.
pub mod absolute;pub mod boxtree;pub mod containing_block;pub mod float;pub mod fragment;mod generated;pub mod height;pub mod inline_atomic;pub mod margin;pub mod overflow;pub mod percentage;pub mod relpos;pub mod stacking;pub mod table;pub mod transform;pub mod width;
/// Paint order, back to front, of every element `root` laid out, per CSS 2.1 Appendix E/// (`stacking`, `specs/stacking-order.md`). Reads the fragment tree `fragment::layout`/// already produced rather than re-running layout. Defaults to the admitted candidate/// under `generated/stacking.rs`, the same way `fragment::layout` defaults to the other/// four seams' admitted candidates.pub fn paint_order(document: &dom::Document, root: &fragment::Fragment) -> Vec<dom::node::NodeId> { paint_order_with(document, root, generated::stacking::resolve)}
/// [`paint_order`] with an explicit resolver -- what the generation runner scores a/// candidate through.pub fn paint_order_with( document: &dom::Document, root: &fragment::Fragment, resolver: stacking::StackingResolver,) -> Vec<dom::node::NodeId> { let (inputs, nodes) = stacking::StackingInputs::from_layout(document, root); resolver(&inputs).order.into_iter().map(|id| nodes[id]).collect()}
/// Whether each box laid out under `root` gets a scrollbar on each axis, per CSS 2.1/// §11.1.1 (`overflow`, `specs/overflow-scrollbars.md`). Reads the fragment tree/// `fragment::layout` already produced rather than re-running layout, the same way/// [`paint_order`] does, because this seam decides nothing that feeds back into/// placement. Defaults to the admitted candidate under `generated/overflow.rs`.pub fn scrollbars( document: &dom::Document, root: &fragment::Fragment, viewport: (f64, f64),) -> Vec<(dom::node::NodeId, overflow::OverflowOutputs)> { scrollbars_with(document, root, viewport, generated::overflow::resolve)}
/// [`scrollbars`] with an explicit resolver -- what the generation runner scores a/// candidate through.pub fn scrollbars_with( document: &dom::Document, root: &fragment::Fragment, viewport: (f64, f64), resolver: overflow::OverflowResolver,) -> Vec<(dom::node::NodeId, overflow::OverflowOutputs)> { overflow::inputs_from_layout(document, root, viewport) .into_iter() .map(|(node, inputs)| (node, resolver(&inputs))) .collect()}
/// The admitted absolute-positioning/percentage-resolution candidates `generated` holds/// privately (this module's own doc comment), re-exported for a seam whose own corpus/// needs another seam's real behavior rather than its bootstrap baseline -- unlike/// `fragment.rs`'s own use of `generated::*` internally, `generation::relpos_runner`/// lives in a different crate and cannot reach a private module directly. The height and/// stacking ones exist for `generation`'s `generated_score_check` binary, which scores each/// generated function over its own corpus.pub use generated::absolute::resolve as generated_absolute_resolve;pub use generated::containing_block::resolve as generated_containing_block_resolve;pub use generated::float::resolve as generated_float_resolve;pub use generated::height::resolve as generated_height_resolve;pub use generated::inline_atomic::resolve as generated_inline_atomic_resolve;pub use generated::margin::classify as generated_margin_classify;pub use generated::margin::combine as generated_margin_combine;pub use generated::overflow::resolve as generated_overflow_resolve;pub use generated::percentage::resolve as generated_percentage_resolve;pub use generated::relpos::resolve as generated_relpos_resolve;pub use generated::stacking::resolve as generated_stacking_resolve;pub use generated::table::columns as generated_table_columns;pub use generated::table::rows as generated_table_rows;pub use generated::transform::resolve as generated_transform_resolve;pub use generated::width::resolve as generated_width_resolve;