mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Move the traversal traits into the traversal module.
This commit is contained in:
parent
acf47a02cf
commit
3e2c44114c
5 changed files with 35 additions and 32 deletions
|
@ -40,7 +40,8 @@ use table_row::TableRowFlow;
|
||||||
use table_rowgroup::TableRowGroupFlow;
|
use table_rowgroup::TableRowGroupFlow;
|
||||||
use table_wrapper::TableWrapperFlow;
|
use table_wrapper::TableWrapperFlow;
|
||||||
use text::TextRunScanner;
|
use text::TextRunScanner;
|
||||||
use wrapper::{PostorderNodeMutTraversal, PseudoElementType, ThreadSafeLayoutNode};
|
use traversal::PostorderNodeMutTraversal;
|
||||||
|
use wrapper::{PseudoElementType, ThreadSafeLayoutNode};
|
||||||
|
|
||||||
use gfx::display_list::OpaqueNode;
|
use gfx::display_list::OpaqueNode;
|
||||||
use script::dom::characterdata::CharacterDataTypeId;
|
use script::dom::characterdata::CharacterDataTypeId;
|
||||||
|
|
|
@ -12,12 +12,13 @@ use context::{LayoutContext, SharedLayoutContext};
|
||||||
use flow::{Flow, MutableFlowUtils, PreorderFlowTraversal, PostorderFlowTraversal};
|
use flow::{Flow, MutableFlowUtils, PreorderFlowTraversal, PostorderFlowTraversal};
|
||||||
use flow;
|
use flow;
|
||||||
use flow_ref::FlowRef;
|
use flow_ref::FlowRef;
|
||||||
|
use traversal::{PreorderDomTraversal, PostorderDomTraversal};
|
||||||
|
use traversal::PostorderNodeMutTraversal;
|
||||||
use traversal::{BubbleISizes, AssignISizes, AssignBSizesAndStoreOverflow};
|
use traversal::{BubbleISizes, AssignISizes, AssignBSizesAndStoreOverflow};
|
||||||
use traversal::{ComputeAbsolutePositions, BuildDisplayList};
|
use traversal::{ComputeAbsolutePositions, BuildDisplayList};
|
||||||
use traversal::{RecalcStyleForNode, ConstructFlows};
|
use traversal::{RecalcStyleForNode, ConstructFlows};
|
||||||
use wrapper::{layout_node_to_unsafe_layout_node, layout_node_from_unsafe_layout_node, LayoutNode};
|
use wrapper::{layout_node_to_unsafe_layout_node, layout_node_from_unsafe_layout_node, LayoutNode};
|
||||||
use wrapper::{PostorderNodeMutTraversal, UnsafeLayoutNode};
|
use wrapper::UnsafeLayoutNode;
|
||||||
use wrapper::{PreorderDomTraversal, PostorderDomTraversal};
|
|
||||||
|
|
||||||
use profile_traits::time::{self, ProfilerMetadata, profile};
|
use profile_traits::time::{self, ProfilerMetadata, profile};
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|
|
@ -10,12 +10,12 @@ use flow::{PostorderFlowTraversal, PreorderFlowTraversal};
|
||||||
use flow_ref::FlowRef;
|
use flow_ref::FlowRef;
|
||||||
use fragment::FragmentBorderBoxIterator;
|
use fragment::FragmentBorderBoxIterator;
|
||||||
use generated_content::ResolveGeneratedContent;
|
use generated_content::ResolveGeneratedContent;
|
||||||
|
use traversal::{PreorderDomTraversal, PostorderDomTraversal};
|
||||||
|
use traversal::PostorderNodeMutTraversal;
|
||||||
use traversal::{BubbleISizes, RecalcStyleForNode, ConstructFlows};
|
use traversal::{BubbleISizes, RecalcStyleForNode, ConstructFlows};
|
||||||
use traversal::{AssignBSizesAndStoreOverflow, AssignISizes};
|
use traversal::{AssignBSizesAndStoreOverflow, AssignISizes};
|
||||||
use traversal::{ComputeAbsolutePositions, BuildDisplayList};
|
use traversal::{ComputeAbsolutePositions, BuildDisplayList};
|
||||||
use wrapper::LayoutNode;
|
use wrapper::LayoutNode;
|
||||||
use wrapper::{PostorderNodeMutTraversal};
|
|
||||||
use wrapper::{PreorderDomTraversal, PostorderDomTraversal};
|
|
||||||
|
|
||||||
use euclid::point::Point2D;
|
use euclid::point::Point2D;
|
||||||
use util::geometry::{Au, ZERO_POINT};
|
use util::geometry::{Au, ZERO_POINT};
|
||||||
|
|
|
@ -15,8 +15,7 @@ use flow::{PreorderFlowTraversal, PostorderFlowTraversal};
|
||||||
use incremental::{self, BUBBLE_ISIZES, REFLOW, REFLOW_OUT_OF_FLOW, RestyleDamage};
|
use incremental::{self, BUBBLE_ISIZES, REFLOW, REFLOW_OUT_OF_FLOW, RestyleDamage};
|
||||||
use script::layout_interface::ReflowGoal;
|
use script::layout_interface::ReflowGoal;
|
||||||
use wrapper::{layout_node_to_unsafe_layout_node, LayoutNode};
|
use wrapper::{layout_node_to_unsafe_layout_node, LayoutNode};
|
||||||
use wrapper::{PostorderNodeMutTraversal, ThreadSafeLayoutNode, UnsafeLayoutNode};
|
use wrapper::{ThreadSafeLayoutNode, UnsafeLayoutNode};
|
||||||
use wrapper::{PreorderDomTraversal, PostorderDomTraversal};
|
|
||||||
|
|
||||||
use selectors::bloom::BloomFilter;
|
use selectors::bloom::BloomFilter;
|
||||||
use selectors::Node;
|
use selectors::Node;
|
||||||
|
@ -118,6 +117,32 @@ fn insert_ancestors_into_bloom_filter(bf: &mut Box<BloomFilter>,
|
||||||
debug!("[{}] Inserted {} ancestors.", tid(), ancestors);
|
debug!("[{}] Inserted {} ancestors.", tid(), ancestors);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// A top-down traversal.
|
||||||
|
pub trait PreorderDomTraversal {
|
||||||
|
/// The operation to perform. Return true to continue or false to stop.
|
||||||
|
fn process(&self, node: LayoutNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A bottom-up traversal, with a optional in-order pass.
|
||||||
|
pub trait PostorderDomTraversal {
|
||||||
|
/// The operation to perform. Return true to continue or false to stop.
|
||||||
|
fn process(&self, node: LayoutNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A bottom-up, parallelizable traversal.
|
||||||
|
pub trait PostorderNodeMutTraversal {
|
||||||
|
/// The operation to perform. Return true to continue or false to stop.
|
||||||
|
fn process<'a>(&'a mut self, node: &ThreadSafeLayoutNode<'a>) -> bool;
|
||||||
|
|
||||||
|
/// Returns true if this node should be pruned. If this returns true, we skip the operation
|
||||||
|
/// entirely and do not process any descendant nodes. This is called *before* child nodes are
|
||||||
|
/// visited. The default implementation never prunes any nodes.
|
||||||
|
fn should_prune<'a>(&'a self, _node: &ThreadSafeLayoutNode<'a>) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// The recalc-style-for-node traversal, which styles each node and must run before
|
/// The recalc-style-for-node traversal, which styles each node and must run before
|
||||||
/// layout computation. This computes the styles applied to each node.
|
/// layout computation. This computes the styles applied to each node.
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
|
|
|
@ -36,6 +36,7 @@ use css::node_style::StyledNode;
|
||||||
use incremental::RestyleDamage;
|
use incremental::RestyleDamage;
|
||||||
use data::{LayoutDataFlags, LayoutDataWrapper, PrivateLayoutData};
|
use data::{LayoutDataFlags, LayoutDataWrapper, PrivateLayoutData};
|
||||||
use opaque_node::OpaqueNodeMethods;
|
use opaque_node::OpaqueNodeMethods;
|
||||||
|
use traversal::PostorderNodeMutTraversal;
|
||||||
|
|
||||||
use gfx::display_list::OpaqueNode;
|
use gfx::display_list::OpaqueNode;
|
||||||
use script::dom::attr::AttrValue;
|
use script::dom::attr::AttrValue;
|
||||||
|
@ -1056,19 +1057,6 @@ impl<'le> ThreadSafeLayoutElement<'le> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A bottom-up, parallelizable traversal.
|
|
||||||
pub trait PostorderNodeMutTraversal {
|
|
||||||
/// The operation to perform. Return true to continue or false to stop.
|
|
||||||
fn process<'a>(&'a mut self, node: &ThreadSafeLayoutNode<'a>) -> bool;
|
|
||||||
|
|
||||||
/// Returns true if this node should be pruned. If this returns true, we skip the operation
|
|
||||||
/// entirely and do not process any descendant nodes. This is called *before* child nodes are
|
|
||||||
/// visited. The default implementation never prunes any nodes.
|
|
||||||
fn should_prune<'a>(&'a self, _node: &ThreadSafeLayoutNode<'a>) -> bool {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Opaque type stored in type-unsafe work queues for parallel layout.
|
/// Opaque type stored in type-unsafe work queues for parallel layout.
|
||||||
/// Must be transmutable to and from LayoutNode.
|
/// Must be transmutable to and from LayoutNode.
|
||||||
pub type UnsafeLayoutNode = (usize, usize);
|
pub type UnsafeLayoutNode = (usize, usize);
|
||||||
|
@ -1086,15 +1074,3 @@ pub unsafe fn layout_node_from_unsafe_layout_node(node: &UnsafeLayoutNode) -> La
|
||||||
let (node, _) = *node;
|
let (node, _) = *node;
|
||||||
mem::transmute(node)
|
mem::transmute(node)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A top-down traversal.
|
|
||||||
pub trait PreorderDomTraversal {
|
|
||||||
/// The operation to perform. Return true to continue or false to stop.
|
|
||||||
fn process(&self, node: LayoutNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A bottom-up traversal, with a optional in-order pass.
|
|
||||||
pub trait PostorderDomTraversal {
|
|
||||||
/// The operation to perform. Return true to continue or false to stop.
|
|
||||||
fn process(&self, node: LayoutNode);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue