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.
Sourcepub fn asset_inputs(&self) -> BTreeSet<String>
pub fn asset_inputs(&self) -> BTreeSet<String>
The union of every node’s Node::asset_inputs, deduplicated and
ordered. A host consults this to learn which named bindings the
document’s graph samples — including the @<dx>,<dy> neighbour
names (see crate::neighbor) a cross-tile node requests, so it
can fetch and bind exactly the neighbour tiles the graph needs
rather than the whole 3×3 window unconditionally.
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 downstream_unique(&self, ix: NodeIx) -> &[NodeIx] ⓘ
pub fn downstream_unique(&self, ix: NodeIx) -> &[NodeIx] ⓘ
Distinct downstream nodes consuming ix’s output, each listed once.
Sourcepub fn indegree(&self, ix: NodeIx) -> usize
pub fn indegree(&self, ix: NodeIx) -> usize
Number of distinct upstream nodes feeding ix (0 for sources).
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_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.