[][src]Struct conrod_core::graph::depth_order::DepthOrder

pub struct DepthOrder {
    pub indices: Vec<Id>,
    // some fields omitted
}

Contains Node indices in order of depth, starting with the deepest.

Fields

indices: Vec<Id>

The primary Vec storing the DepthOrder's ordered indices.

Implementations

impl DepthOrder[src]

pub fn new() -> DepthOrder[src]

Construct a new empty DepthOrder.

pub fn with_node_capacity(n_nodes: usize) -> DepthOrder[src]

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.

pub fn update(
    &mut self,
    graph: &Graph,
    root: Id,
    updated_widgets: &FnvHashSet<Id>
)
[src]

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.

Trait Implementations

impl Debug for DepthOrder[src]

Auto Trait Implementations

impl RefUnwindSafe for DepthOrder

impl Send for DepthOrder

impl Sync for DepthOrder

impl Unpin for DepthOrder

impl UnwindSafe for DepthOrder

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.