[−][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][+]
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][+]
impl Walker<Graph> for Parents
[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,
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>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,