[−][src]Struct conrod_core::graph::Graph
Stores the dynamic state of a UI tree of Widgets.
Implementations
impl Graph
[src]
pub fn new() -> Self
[src]
A new empty Graph.
pub fn with_node_capacity(n_nodes: usize) -> Self
[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) -> Id
[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: Id) -> Option<&Node>
[src]
Borrow the node at the given widget::Id if there is one.
pub fn node_mut(&mut self, idx: Id) -> Option<&mut Node>
[src]
Mutably borrow the node at the given widget::Id if there is one.
pub fn edge(&self, idx: EdgeIndex) -> Option<&Edge>
[src]
Borrow the edge at the given EdgeIndex if there is one.
pub fn edge_mut(&mut self, idx: EdgeIndex) -> Option<&mut Edge>
[src]
Mutably borrow the edge at the given EdgeIndex if there is one.
pub fn edge_endpoints(&self, idx: EdgeIndex) -> Option<(Id, Id)>
[src]
Return the parent and child nodes on either end of the Edge at the given index.
pub fn widget(&self, idx: Id) -> Option<&Container>
[src]
If there is a Widget for the given index, return a reference to it.
pub fn widget_mut(&mut self, idx: Id) -> Option<&mut Container>
[src]
If there is a Widget for the given Id, return a mutable reference to it.
pub fn parents(&self, child: Id) -> Parents
[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: Id, recursive_fn: F) -> RecursiveWalk<F> where
F: FnMut(&Self, Id) -> Option<(EdgeIndex, Id)>,
[src]
F: FnMut(&Self, Id) -> Option<(EdgeIndex, Id)>,
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: Id, edge: Edge) -> Option<Id>
[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: Id) -> Option<Id>
[src]
Return the index of the parent along the given widget's Depth Edge.
pub fn x_position_parent(&self, idx: Id) -> Option<Id>
[src]
Return the index of the parent along the given widget's Position Edge.
pub fn y_position_parent(&self, idx: Id) -> Option<Id>
[src]
Return the index of the parent along the given widget's Position Edge.
pub fn position_parents(&self, idx: Id) -> PositionParents
[src]
Produces an iterator yielding the parents along both the X and Y Position Edges respectively.
pub fn graphic_parent(&self, idx: Id) -> Option<Id>
[src]
Return the index of the parent along the given widget's Graphic Edge.
pub fn depth_parent_recursion(
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
[src]
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
A Walker type that recursively walks Depth parents starting from the given node.
pub fn x_position_parent_recursion(
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
[src]
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
A Walker type that recursively walks X Position parents starting from the given node.
pub fn y_position_parent_recursion(
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
[src]
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
A Walker type that recursively walks Y Position parents starting from the given node.
pub fn graphic_parent_recursion(
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
[src]
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
A Walker type that recursively walks Graphic parents starting from the given node.
pub fn scrollable_y_parent_recursion(
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
[src]
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
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: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
[src]
&self,
idx: Id
) -> RecursiveWalk<fn(_: &Graph, _: Id) -> Option<IndexPair>>
A Walker type that recursively walks Depth parents that are scrollable along the x axis for the given node.
pub fn children(&self, parent: Id) -> Children
[src]
A Walker type that may be used to step through the children of the given parent node.
pub fn depth_children(&self, idx: Id) -> DepthChildren
[src]
For walking the Depth children of the given parent node.
pub fn x_position_children(&self, idx: Id) -> XPositionChildren
[src]
For walking the Position(X) children of the given parent node.
pub fn y_position_children(&self, idx: Id) -> YPositionChildren
[src]
For walking the Position(Y) children of the given parent node.
pub fn position_children(&self, idx: Id) -> PositionChildren
[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: Id) -> GraphicChildren
[src]
For walking the Graphic children of the given parent node.
pub fn does_edge_exist<F>(&self, parent: Id, child: Id, is_edge: F) -> bool where
F: Fn(Edge) -> bool,
[src]
F: Fn(Edge) -> bool,
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: Id, child: Id) -> 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: Id, child: Id) -> 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: Id, child: Id) -> 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: Id,
child: Id,
is_edge: F
) -> bool where
F: Fn(Edge) -> bool,
[src]
&self,
parent: Id,
child: Id,
is_edge: F
) -> bool where
F: Fn(Edge) -> bool,
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: Id, child: Id) -> 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: Id, child: Id) -> 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: Id,
widget: PreUpdateCache,
instantiation_order_idx: usize
)
[src]
&mut self,
root: Id,
widget: PreUpdateCache,
instantiation_order_idx: usize
)
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 Widget
s within
its own update
method, this Widget
s 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::State: 'static,
W::Style: 'static,
[src]
W: Widget,
W::State: 'static,
W::Style: 'static,
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.
fn index<'a>(&'a self, idx: EdgeIndex) -> &'a Edge
[src]
impl Index<NodeIndex<u32>> for Graph
[src]
impl IndexMut<EdgeIndex<u32>> for Graph
[src]
impl IndexMut<NodeIndex<u32>> for Graph
[src]
impl Walker<Graph> for Children
[src]
type Index = u32
The unsigned integer type used for node and edge indices.
fn next(&mut self, graph: &Graph) -> Option<(EdgeIndex, Id)>
[src]
fn next_edge(&mut self, graph: &G) -> Option<EdgeIndex<Self::Index>>
[src]
fn next_node(&mut self, graph: &G) -> Option<NodeIndex<Self::Index>>
[src]
fn count(self, graph: &G) -> usize
[src]
fn last(
self,
graph: &G
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)>
[src]
self,
graph: &G
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)>
fn last_edge(self, graph: &G) -> Option<EdgeIndex<Self::Index>>
[src]
fn last_node(self, graph: &G) -> Option<NodeIndex<Self::Index>>
[src]
fn nth(
self,
graph: &G,
n: usize
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)>
[src]
self,
graph: &G,
n: usize
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)>
fn nth_edge(self, graph: &G, n: usize) -> Option<EdgeIndex<Self::Index>>
[src]
fn nth_node(self, graph: &G, n: usize) -> Option<NodeIndex<Self::Index>>
[src]
fn chain<O>(self, other: O) -> Chain<G, Self::Index, Self, O> where
O: Walker<G, Index = Self::Index>,
[src]
O: Walker<G, Index = Self::Index>,
fn filter<P>(self, predicate: P) -> Filter<Self, P> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn peekable(self) -> Peekable<G, Self::Index, Self>
[src]
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn skip(self, n: usize) -> Skip<G, Self::Index, Self>
[src]
fn take(self, n: usize) -> Take<G, Self::Index, Self>
[src]
fn all<P>(&mut self, graph: &G, predicate: P) -> bool where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn any<P>(&mut self, graph: &G, predicate: P) -> bool where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn find<P>(
&mut self,
graph: &G,
predicate: P
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
&mut self,
graph: &G,
predicate: P
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn find_edge<P>(
&mut self,
graph: &G,
predicate: P
) -> Option<EdgeIndex<Self::Index>> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
&mut self,
graph: &G,
predicate: P
) -> Option<EdgeIndex<Self::Index>> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn find_node<P>(
&mut self,
graph: &G,
predicate: P
) -> Option<NodeIndex<Self::Index>> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
&mut self,
graph: &G,
predicate: P
) -> Option<NodeIndex<Self::Index>> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn cycle(self) -> Cycle<G, Self::Index, Self> where
Self: Clone,
[src]
Self: Clone,
fn fold<B, F>(self, init: B, graph: &G, f: F) -> B where
F: FnMut(B, &G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> B,
[src]
F: FnMut(B, &G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> B,
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>),
[src]
F: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>),
fn iter(self, graph: &G) -> Iter<'_, G, Self::Index, Self>
[src]
fn iter_weights(self, graph: &G) -> IterWeights<'_, G, Self::Index, Self>
[src]
impl Walker<Graph> for Parents
[src]
type Index = u32
The unsigned integer type used for node and edge indices.
fn next(&mut self, graph: &Graph) -> Option<(EdgeIndex, Id)>
[src]
fn next_edge(&mut self, graph: &G) -> Option<EdgeIndex<Self::Index>>
[src]
fn next_node(&mut self, graph: &G) -> Option<NodeIndex<Self::Index>>
[src]
fn count(self, graph: &G) -> usize
[src]
fn last(
self,
graph: &G
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)>
[src]
self,
graph: &G
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)>
fn last_edge(self, graph: &G) -> Option<EdgeIndex<Self::Index>>
[src]
fn last_node(self, graph: &G) -> Option<NodeIndex<Self::Index>>
[src]
fn nth(
self,
graph: &G,
n: usize
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)>
[src]
self,
graph: &G,
n: usize
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)>
fn nth_edge(self, graph: &G, n: usize) -> Option<EdgeIndex<Self::Index>>
[src]
fn nth_node(self, graph: &G, n: usize) -> Option<NodeIndex<Self::Index>>
[src]
fn chain<O>(self, other: O) -> Chain<G, Self::Index, Self, O> where
O: Walker<G, Index = Self::Index>,
[src]
O: Walker<G, Index = Self::Index>,
fn filter<P>(self, predicate: P) -> Filter<Self, P> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn peekable(self) -> Peekable<G, Self::Index, Self>
[src]
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn skip(self, n: usize) -> Skip<G, Self::Index, Self>
[src]
fn take(self, n: usize) -> Take<G, Self::Index, Self>
[src]
fn all<P>(&mut self, graph: &G, predicate: P) -> bool where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn any<P>(&mut self, graph: &G, predicate: P) -> bool where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn find<P>(
&mut self,
graph: &G,
predicate: P
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
&mut self,
graph: &G,
predicate: P
) -> Option<(EdgeIndex<Self::Index>, NodeIndex<Self::Index>)> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn find_edge<P>(
&mut self,
graph: &G,
predicate: P
) -> Option<EdgeIndex<Self::Index>> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
&mut self,
graph: &G,
predicate: P
) -> Option<EdgeIndex<Self::Index>> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn find_node<P>(
&mut self,
graph: &G,
predicate: P
) -> Option<NodeIndex<Self::Index>> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
[src]
&mut self,
graph: &G,
predicate: P
) -> Option<NodeIndex<Self::Index>> where
P: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> bool,
fn cycle(self) -> Cycle<G, Self::Index, Self> where
Self: Clone,
[src]
Self: Clone,
fn fold<B, F>(self, init: B, graph: &G, f: F) -> B where
F: FnMut(B, &G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> B,
[src]
F: FnMut(B, &G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>) -> B,
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>),
[src]
F: FnMut(&G, EdgeIndex<Self::Index>, NodeIndex<Self::Index>),
fn iter(self, graph: &G) -> Iter<'_, G, Self::Index, Self>
[src]
fn iter_weights(self, graph: &G) -> IterWeights<'_, G, Self::Index, Self>
[src]
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<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,