Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146//! 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 absolute_engine;mod absolute_types;pub mod anonymous_table;pub mod aspect_ratio;pub mod aspect_ratio_engine;pub mod block_flow;pub mod block_flow_engine;mod block_flow_types;mod aspect_ratio_types;pub mod box_generation;pub mod box_generation_engine;mod box_generation_types;pub mod boxtree;pub mod call_recording;pub mod containing_block;pub mod containing_block_engine;mod containing_block_types;pub mod float;pub mod grid;pub mod formatting_context;pub mod fragment;mod generated;pub mod generated_calls;pub mod height;pub mod height_engine;mod height_types;pub mod inline_atomic;pub mod intrinsic_width;pub mod margin_classify;pub mod margin_classify_engine;mod margin_classify_types;pub mod margin_combine;pub mod margin_combine_engine;mod margin_combine_types;pub mod overflow;pub mod percentage;pub mod pins;pub mod relpos;pub mod stacking;pub mod text;pub mod table;pub mod table_auto_columns;pub mod table_auto_columns_engine;mod table_auto_columns_types;pub mod table_grid_rows;pub mod table_extents;pub mod table_structure;pub mod table_grid_rows_engine;mod table_grid_rows_types;pub mod transform;pub mod white_space;pub mod width;pub mod width_engine;mod width_types;
/// Paint order, back to front, of every element `root` laid out, per CSS 2.1 Appendix E/// (`stacking`, `tasks/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`, `tasks/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::aspect_ratio::resolve as generated_aspect_ratio_resolve;pub use generated::block_flow::resolve as generated_block_flow_resolve;pub use generated::box_generation::resolve as generated_box_generation_resolve;pub use generated::containing_block::resolve as generated_containing_block_resolve;pub use generated::anonymous_table::wrap as generated_anonymous_table_wrap;pub use generated::float::resolve as generated_float_resolve;pub use generated::formatting_context::resolve as generated_formatting_context_resolve;pub use generated::white_space::resolve as generated_white_space_resolve;pub use generated::grid::columns as generated_grid_columns;pub use generated::grid::item as generated_grid_item;pub use generated::grid::rows as generated_grid_rows;pub use generated::height::resolve as generated_height_resolve;pub use generated::inline_atomic::resolve as generated_inline_atomic_resolve;pub use generated::intrinsic_width::resolve as generated_intrinsic_width_resolve;pub use generated::margin_classify::resolve as generated_margin_classify_resolve;pub use generated::margin_combine::resolve as generated_margin_combine_resolve;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_auto_columns::resolve as generated_table_auto_columns_resolve;pub use generated::table_grid_rows::resolve as generated_table_grid_rows_resolve;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;