pub struct LayoutTreeBuilder { /* private fields */ }Implementations§
Source§impl LayoutTreeBuilder
impl LayoutTreeBuilder
pub fn new() -> Self
pub fn get(&self, index: usize) -> Option<&LayoutNode>
pub fn get_mut(&mut self, index: usize) -> Option<&mut LayoutNode>
Sourcepub fn process_node(
&mut self,
styled_dom: &StyledDom,
dom_id: NodeId,
parent_idx: Option<usize>,
debug_messages: &mut Option<Vec<LayoutDebugMessage>>,
) -> Result<usize>
pub fn process_node( &mut self, styled_dom: &StyledDom, dom_id: NodeId, parent_idx: Option<usize>, debug_messages: &mut Option<Vec<LayoutDebugMessage>>, ) -> Result<usize>
Main entry point for recursively building the layout tree.
This function dispatches to specialized handlers based on the node’s
display property to correctly generate anonymous boxes.
Sourcepub fn create_anonymous_node(
&mut self,
parent: usize,
anon_type: AnonymousBoxType,
fc: FormattingContext,
) -> usize
pub fn create_anonymous_node( &mut self, parent: usize, anon_type: AnonymousBoxType, fc: FormattingContext, ) -> usize
CSS 2.2 Section 17.2.1 - Anonymous box generation: “In this process, inline-level boxes are wrapped in anonymous boxes as needed to satisfy the constraints of the table model.”
Helper to create an anonymous node in the tree. Anonymous boxes don’t have a corresponding DOM node and are used to enforce the CSS box model structure (e.g., wrapping inline content in blocks, or creating missing table structural elements).
Sourcepub fn create_marker_pseudo_element(
&mut self,
styled_dom: &StyledDom,
list_item_dom_id: NodeId,
list_item_idx: usize,
) -> usize
pub fn create_marker_pseudo_element( &mut self, styled_dom: &StyledDom, list_item_dom_id: NodeId, list_item_idx: usize, ) -> usize
Creates a ::marker pseudo-element as the first child of a list-item.
Per CSS Lists Module Level 3, Section 3.1: “For elements with display: list-item, user agents must generate a ::marker pseudo-element as the first child of the principal box.”
The ::marker references the same DOM node as its parent list-item, but is marked as a pseudo-element for proper counter resolution and styling.
pub fn create_node_from_dom( &mut self, styled_dom: &StyledDom, dom_id: NodeId, parent: Option<usize>, debug_messages: &mut Option<Vec<LayoutDebugMessage>>, ) -> Result<usize>
pub fn clone_node_from_old( &mut self, old_node: &LayoutNode, parent: Option<usize>, ) -> usize
pub fn build(self, root_idx: usize) -> LayoutTree
Auto Trait Implementations§
impl Freeze for LayoutTreeBuilder
impl RefUnwindSafe for LayoutTreeBuilder
impl Send for LayoutTreeBuilder
impl Sync for LayoutTreeBuilder
impl Unpin for LayoutTreeBuilder
impl UnwindSafe for LayoutTreeBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more