pub struct Graph { /* private fields */ }Expand description
A built, type-checked DAG. Tile-independent; build once per style and evaluate many times.
Implementations§
Source§impl Graph
impl Graph
pub fn is_empty(&self) -> bool
pub fn output(&self) -> NodeIx
Sourcepub fn topo_order(&self) -> &[NodeIx] ⓘ
pub fn topo_order(&self) -> &[NodeIx] ⓘ
Topological order; output node is last.
pub fn node(&self, ix: NodeIx) -> &dyn Node
pub fn node_id(&self, ix: NodeIx) -> &str
Sourcepub fn upstream(&self, ix: NodeIx) -> impl Iterator<Item = NodeIx> + '_
pub fn upstream(&self, ix: NodeIx) -> impl Iterator<Item = NodeIx> + '_
Upstream nodes feeding ix, deduplicated.
Sourcepub fn downstream(&self, ix: NodeIx) -> &[NodeIx] ⓘ
pub fn downstream(&self, ix: NodeIx) -> &[NodeIx] ⓘ
Downstream nodes consuming ix’s output (may contain duplicates
if the same node connects multiple of its input ports to ix).
Sourcepub fn incoming(&self, ix: NodeIx, port_ix: usize) -> Option<NodeIx>
pub fn incoming(&self, ix: NodeIx, port_ix: usize) -> Option<NodeIx>
The source feeding node.inputs()[port_ix], if connected.
Sourcepub fn output_kind(&self, ix: NodeIx) -> PortKind
pub fn output_kind(&self, ix: NodeIx) -> PortKind
Resolved output PortKind for ix. Decided at build time;
polymorphic nodes’ kind is fixed once the graph is built.
Sourcepub fn compute_levels(&self) -> Vec<u32>
pub fn compute_levels(&self) -> Vec<u32>
Group nodes into evaluation “levels”. A node’s level is one more
than the maximum level of its inputs (sources are at level 0).
All nodes in the same level have no edges between them and can
be evaluated in parallel. Returned as levels[node_ix] = depth.
Sourcepub fn level_buckets(&self) -> Vec<Vec<NodeIx>>
pub fn level_buckets(&self) -> Vec<Vec<NodeIx>>
Bucket nodes by level, preserving topo order within each bucket for determinism.
Sourcepub fn compute_pad(&self, doc_pad: u32) -> Result<Vec<u32>, BuildError>
pub fn compute_pad(&self, doc_pad: u32) -> Result<Vec<u32>, BuildError>
Compute the canvas padding each node must supply, given the
document-level pad requested at the output.