Struct conrod::graph::depth_order::DepthOrder
[−]
[src]
pub struct DepthOrder { pub indices: Vec<NodeIndex>, // some fields omitted }
Contains Node indices in order of depth, starting with the deepest.
Fields
indices: Vec<NodeIndex>
The primary Vec storing the DepthOrder's ordered indices.
Methods
impl DepthOrder
[src]
fn new() -> DepthOrder
Construct a new empty DepthOrder.
fn with_node_capacity(n_nodes: usize) -> DepthOrder
Construct a new empty DepthOrder.
There can be at most two indices per widget (the widget and the widget's scrollbar). Thus we'll reserve double the number of nodes given.
fn update(&mut self, graph: &Graph, root: NodeIndex, updated_widgets: &HashSet<NodeIndex>)
Update the DepthOrder (starting with the deepest) for all nodes in the given Graph.
FIXME: This likely needs to be re-written, and will probably fail for graphs with many floating widgets instantiated upon other floating widgets.
The proper algorithm should be a full toposort where the neighbours of each node are
visited in the order specified within visit_by_depth
.
The visit_by_depth
algorithm should not be recursive and instead use either looping,
walking or iteration.