[][src]Struct nannou::ui::graph::Graph

pub struct Graph { /* fields omitted */ }

Stores the dynamic state of a UI tree of Widgets.

Methods

impl Graph[src]

pub fn new() -> Graph[src]

A new empty Graph.

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

A new Graph with the given node capacity.

We know that there can be no more than three parents per node as the public API enforces a maximum of one Depth, Position and Graphic parent each. Thus, we can assume an edge capacity of exactly three times the given node capacity.

pub fn clear(&mut self)[src]

Removes all Nodes and Edges from the Graph.

pub fn node_count(&self) -> usize[src]

The total number of Nodes in the Graph.

pub fn widget_count(&self) -> usize[src]

The total number of Node::Widgets in the Graph.

pub fn edge_count(&self) -> usize[src]

The total number of Edges in the Graph.

pub fn node_capacity(&self) -> usize[src]

The current capacity for the Graph's internal node Vec.

pub fn add_placeholder(&mut self) -> NodeIndex<u32>[src]

Add a new placeholder node and return it's widget::Id into the Graph.

This method is used by the widget::set_widget function when some internal widget does not yet have it's own widget::Id.

pub fn node(&self, idx: NodeIndex<u32>) -> Option<&Node>[src]

Borrow the node at the given widget::Id if there is one.

pub fn node_mut(&mut self, idx: NodeIndex<u32>) -> Option<&mut Node>[src]

Mutably borrow the node at the given widget::Id if there is one.

pub fn edge(&self, idx: EdgeIndex<u32>) -> Option<&Edge>[src]

Borrow the edge at the given EdgeIndex if there is one.

pub fn edge_mut(&mut self, idx: EdgeIndex<u32>) -> Option<&mut Edge>[src]

Mutably borrow the edge at the given EdgeIndex if there is one.

pub fn edge_endpoints(
    &self,
    idx: EdgeIndex<u32>
) -> Option<(NodeIndex<u32>, NodeIndex<u32>)>
[src]

Return the parent and child nodes on either end of the Edge at the given index.

pub fn widget(&self, idx: NodeIndex<u32>) -> Option<&Container>[src]

If there is a Widget for the given index, return a reference to it.

pub fn widget_mut(&mut self, idx: NodeIndex<u32>) -> Option<&mut Container>[src]

If there is a Widget for the given Id, return a mutable reference to it.

pub fn parents(&self, child: NodeIndex<u32>) -> Parents<Node, Edge, u32>[src]

A Walker type that may be used to step through the parents of the given child node.

pub fn recursive_walk<F>(
    &self,
    start: NodeIndex<u32>,
    recursive_fn: F
) -> Recursive<Graph, u32, F> where
    F: FnMut(&Graph, NodeIndex<u32>) -> Option<(EdgeIndex<u32>, NodeIndex<u32>)>, 
[src]

A Walker type that recursively walks the Graph using the given recursive_fn.

Panics If the given start index does not exist within the Graph.

pub fn edge_parent(
    &self,
    idx: NodeIndex<u32>,
    edge: Edge
) -> Option<NodeIndex<u32>>
[src]

If the widget at the given index has some parent along an Edge of the given variant, return an index to it.

pub fn depth_parent(&self, idx: NodeIndex<u32>) -> Option<NodeIndex<u32>>[src]

Return the index of the parent along the given widget's Depth Edge.

pub fn x_position_parent(&self, idx: NodeIndex<u32>) -> Option<NodeIndex<u32>>[src]

Return the index of the parent along the given widget's Position Edge.

pub fn y_position_parent(&self, idx: NodeIndex<u32>) -> Option<NodeIndex<u32>>[src]

Return the index of the parent along the given widget's Position Edge.

pub fn position_parents(
    &self,
    idx: NodeIndex<u32>
) -> Chain<IntoIter<NodeIndex<u32>>, IntoIter<NodeIndex<u32>>>
[src]

Produces an iterator yielding the parents along both the X and Y Position Edges respectively.

pub fn graphic_parent(&self, idx: NodeIndex<u32>) -> Option<NodeIndex<u32>>[src]

Return the index of the parent along the given widget's Graphic Edge.

pub fn depth_parent_recursion(
    &self,
    idx: NodeIndex<u32>
) -> Recursive<Graph, u32, fn(&Graph, NodeIndex<u32>) -> Option<(EdgeIndex<u32>, NodeIndex<u32>)>>
[src]

A Walker type that recursively walks Depth parents starting from the given node.

pub fn x_position_parent_recursion(
    &self,
    idx: NodeIndex<u32>
) -> Recursive<Graph, u32, fn(&Graph, NodeIndex<u32>) -> Option<(EdgeIndex<u32>, NodeIndex<u32>)>>
[src]

A Walker type that recursively walks X Position parents starting from the given node.

pub fn y_position_parent_recursion(
    &self,
    idx: NodeIndex<u32>
) -> Recursive<Graph, u32, fn(&Graph, NodeIndex<u32>) -> Option<(EdgeIndex<u32>, NodeIndex<u32>)>>
[src]

A Walker type that recursively walks Y Position parents starting from the given node.

pub fn graphic_parent_recursion(
    &self,
    idx: NodeIndex<u32>
) -> Recursive<Graph, u32, fn(&Graph, NodeIndex<u32>) -> Option<(EdgeIndex<u32>, NodeIndex<u32>)>>
[src]

A Walker type that recursively walks Graphic parents starting from the given node.

pub fn scrollable_y_parent_recursion(
    &self,
    idx: NodeIndex<u32>
) -> Recursive<Graph, u32, fn(&Graph, NodeIndex<u32>) -> Option<(EdgeIndex<u32>, NodeIndex<u32>)>>
[src]

A Walker type that recursively walks Depth parents that are scrollable along the y axis for the given node.

pub fn scrollable_x_parent_recursion(
    &self,
    idx: NodeIndex<u32>
) -> Recursive<Graph, u32, fn(&Graph, NodeIndex<u32>) -> Option<(EdgeIndex<u32>, NodeIndex<u32>)>>
[src]

A Walker type that recursively walks Depth parents that are scrollable along the x axis for the given node.

pub fn children(&self, parent: NodeIndex<u32>) -> Children<Node, Edge, u32>[src]

A Walker type that may be used to step through the children of the given parent node.

pub fn depth_children(
    &self,
    idx: NodeIndex<u32>
) -> Filter<Children<Node, Edge, u32>, fn(&Graph, EdgeIndex<u32>, NodeIndex<u32>) -> bool>
[src]

For walking the Depth children of the given parent node.

pub fn x_position_children(
    &self,
    idx: NodeIndex<u32>
) -> Filter<Children<Node, Edge, u32>, fn(&Graph, EdgeIndex<u32>, NodeIndex<u32>) -> bool>
[src]

For walking the Position(X) children of the given parent node.

pub fn y_position_children(
    &self,
    idx: NodeIndex<u32>
) -> Filter<Children<Node, Edge, u32>, fn(&Graph, EdgeIndex<u32>, NodeIndex<u32>) -> bool>
[src]

For walking the Position(Y) children of the given parent node.

pub fn position_children(
    &self,
    idx: NodeIndex<u32>
) -> Chain<Graph, u32, Filter<Children<Node, Edge, u32>, fn(&Graph, EdgeIndex<u32>, NodeIndex<u32>) -> bool>, Filter<Children<Node, Edge, u32>, fn(&Graph, EdgeIndex<u32>, NodeIndex<u32>) -> bool>>
[src]

For walking the Position children of the given parent node.

This first walks the Axis::X children, before walking the Axis::Y children.

pub fn graphic_children(
    &self,
    idx: NodeIndex<u32>
) -> Filter<Children<Node, Edge, u32>, fn(&Graph, EdgeIndex<u32>, NodeIndex<u32>) -> bool>
[src]

For walking the Graphic children of the given parent node.

pub fn does_edge_exist<F>(
    &self,
    parent: NodeIndex<u32>,
    child: NodeIndex<u32>,
    is_edge: F
) -> bool where
    F: Fn(Edge) -> bool
[src]

Does the given edge type exist between the nodes parent -> child.

Returns false if either of the given node indices do not exist.

pub fn does_depth_edge_exist(
    &self,
    parent: NodeIndex<u32>,
    child: NodeIndex<u32>
) -> bool
[src]

Does a Edge::Depth exist between the nodes parent -> child.

Returns false if either of the given node indices do not exist.

pub fn does_position_edge_exist(
    &self,
    parent: NodeIndex<u32>,
    child: NodeIndex<u32>
) -> bool
[src]

Does a Edge::Position exist between the nodes parent -> child.

Returns false if either of the given node indices do not exist.

pub fn does_graphic_edge_exist(
    &self,
    parent: NodeIndex<u32>,
    child: NodeIndex<u32>
) -> bool
[src]

Does a Edge::Graphic exist between the nodes parent -> child.

Returns false if either of the given node indices do not exist.

pub fn does_recursive_edge_exist<F>(
    &self,
    parent: NodeIndex<u32>,
    child: NodeIndex<u32>,
    is_edge: F
) -> bool where
    F: Fn(Edge) -> bool
[src]

Are the given parent and child nodes connected by a single chain of edges of the given kind?

i.e. parent -> x -> y -> child.

Returns false if either of the given node indices do not exist.

pub fn does_recursive_depth_edge_exist(
    &self,
    parent: NodeIndex<u32>,
    child: NodeIndex<u32>
) -> bool
[src]

Are the given parent and child nodes connected by a single chain of Depth edges?

i.e. parent -> x -> y -> child.

Returns false if either of the given node indices do not exist.

pub fn does_recursive_graphic_edge_exist(
    &self,
    parent: NodeIndex<u32>,
    child: NodeIndex<u32>
) -> bool
[src]

Are the given parent and child nodes connected by a single chain of Graphic edges?

i.e. parent -> x -> y -> child.

Returns false if either of the given node indices do not exist.

pub fn pre_update_cache(
    &mut self,
    root: NodeIndex<u32>,
    widget: PreUpdateCache,
    instantiation_order_idx: usize
)
[src]

Cache some PreUpdateCache widget data into the graph.

This is called (via the ui module) from within the widget::set_widget function prior to the Widget::update method being called.

This is done so that if this Widget were to internally set some other Widgets within its own update method, this Widgets positioning and dimension data already exists within the Graph for reference.

pub fn post_update_cache<W>(&mut self, widget: PostUpdateCache<W>) where
    W: Widget,
    <W as Widget>::State: 'static,
    <W as Widget>::Style: 'static, 
[src]

Cache some PostUpdateCache widget data into the graph.

This is called (via the ui module) from within the widget::set_widget function after the Widget::update method is called and some new state is returned.

Trait Implementations

impl Debug for Graph[src]

impl Index<EdgeIndex<u32>> for Graph[src]

type Output = Edge

The returned type after indexing.

impl Index<NodeIndex<u32>> for Graph[src]

type Output = Node

The returned type after indexing.

impl IndexMut<EdgeIndex<u32>> for Graph[src]

impl IndexMut<NodeIndex<u32>> for Graph[src]

impl Walker<Graph> for Parents<Node, Edge, u32>[src]

type Index = u32

The unsigned integer type used for node and edge indices.

impl Walker<Graph> for Children<Node, Edge, u32>[src]

type Index = u32

The unsigned integer type used for node and edge indices.

Auto Trait Implementations

impl !RefUnwindSafe for Graph

impl Send for Graph

impl !Sync for Graph

impl Unpin for Graph

impl !UnwindSafe for Graph

Blanket Implementations

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S where
    D: AdaptFrom<S, Swp, Dwp, T>,
    Dwp: WhitePoint,
    Swp: WhitePoint,
    T: Component + Float
[src]

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, U> ConvertInto<U> for T where
    U: ConvertFrom<T>, 
[src]

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

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

impl<T> SetParameter for T

impl<T> SetParameter for T

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.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,