Skip to main content

jellyflow_runtime/runtime/rendering/
store.rs

1use crate::runtime::store::NodeGraphStore;
2use jellyflow_core::core::{CanvasSize, EdgeId, GroupId, NodeId};
3
4use super::order::{
5    EdgeRenderOrderOptions, GroupRenderOrderOptions, NodeRenderOrderOptions,
6    resolve_edge_render_order, resolve_group_render_order, resolve_node_render_order,
7};
8use super::query::RenderingQueryResult;
9
10impl NodeGraphStore {
11    /// Resolves the current group render order using the store's view-state and editor config.
12    pub fn group_render_order(&self) -> Vec<GroupId> {
13        let interaction = self.resolved_interaction_state();
14        resolve_group_render_order(
15            self.graph(),
16            self.view_state(),
17            GroupRenderOrderOptions::from_interaction(&interaction),
18        )
19    }
20
21    /// Resolves the current node render order using the store's view-state and editor config.
22    pub fn node_render_order(&self) -> Vec<NodeId> {
23        let interaction = self.resolved_interaction_state();
24        resolve_node_render_order(
25            self.graph(),
26            self.view_state(),
27            NodeRenderOrderOptions::from_interaction(&interaction),
28        )
29    }
30
31    /// Resolves the current edge render order using the store's view-state and editor config.
32    pub fn edge_render_order(&self) -> Vec<EdgeId> {
33        let interaction = self.resolved_interaction_state();
34        resolve_edge_render_order(
35            self.graph(),
36            self.view_state(),
37            EdgeRenderOrderOptions::from_interaction(&interaction),
38        )
39    }
40
41    /// Resolves all renderer-facing order and visibility lists for the current store state.
42    pub fn rendering_query(&self, viewport_size: CanvasSize) -> RenderingQueryResult {
43        crate::runtime::query::rendering_query(self, viewport_size)
44    }
45}