From c5ed54cbd2a248f4b9cbd72363c44560753546ed Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Fri, 8 Dec 2023 15:27:32 -0800 Subject: [PATCH] Rename several node graph structs/fields --- document-legacy/src/document.rs | 10 +- .../document/document_message_handler.rs | 2 +- .../node_graph/node_graph_message_handler.rs | 6 +- .../document_node_types.rs | 570 +++++++++--------- frontend/src/components/views/Graph.svelte | 6 +- .../src/components/widgets/WidgetSpan.svelte | 1 - frontend/src/wasm-communication/messages.ts | 4 +- node-graph/README.md | 6 +- node-graph/gcore/src/types.rs | 10 +- node-graph/graph-craft/src/document.rs | 34 +- node-graph/graph-craft/src/lib.rs | 2 +- node-graph/graph-craft/src/proto.rs | 12 +- node-graph/graphene-cli/src/main.rs | 8 +- node-graph/gstd/src/gpu_nodes.rs | 4 +- node-graph/interpreted-executor/src/lib.rs | 8 +- .../interpreted-executor/src/node_registry.rs | 58 +- node-graph/vulkan-executor/src/executor.rs | 10 +- node-graph/wgpu-executor/src/executor.rs | 8 +- 18 files changed, 379 insertions(+), 380 deletions(-) diff --git a/document-legacy/src/document.rs b/document-legacy/src/document.rs index 1b71aa23..d3e4a5c7 100644 --- a/document-legacy/src/document.rs +++ b/document-legacy/src/document.rs @@ -9,7 +9,7 @@ use crate::{DocumentError, DocumentResponse, Operation}; use graph_craft::document::{DocumentNode, DocumentNodeImplementation, NodeId, NodeNetwork, NodeOutput}; use graphene_core::renderer::ClickTarget; use graphene_core::transform::Footprint; -use graphene_core::{concrete, generic, NodeIdentifier}; +use graphene_core::{concrete, generic, ProtoNodeIdentifier}; use graphene_std::wasm_application_io::WasmEditorApi; use glam::{DAffine2, DVec2}; @@ -64,13 +64,13 @@ impl Default for Document { DocumentNode { name: "EditorApi".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IdentityNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")), ..Default::default() }, DocumentNode { name: "Create Canvas".to_string(), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_std::wasm_application_io::CreateSurfaceNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::CreateSurfaceNode")), skip_deduplication: true, ..Default::default() }, @@ -78,7 +78,7 @@ impl Default for Document { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, DocumentNode { @@ -88,7 +88,7 @@ impl Default for Document { NodeInput::Network(graphene_core::Type::Fn(Box::new(concrete!(Footprint)), Box::new(generic!(T)))), NodeInput::node(2, 0), ], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_std::wasm_application_io::RenderNode<_, _, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::RenderNode<_, _, _>")), ..Default::default() }, ] diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index addea017..aab2c63a 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -473,7 +473,7 @@ impl MessageHandler> for DocumentMessageHand // Set a random seed input responses.add(NodeGraphMessage::SetInputValue { node_id: *imaginate_node.last().unwrap(), - // Needs to match the index of the seed parameter in `pub const IMAGINATE_NODE: DocumentNodeBlueprint` in `document_node_type.rs` + // Needs to match the index of the seed parameter in `pub const IMAGINATE_NODE: DocumentNodeDefinition` in `document_node_type.rs` input_index: 3, value: graph_craft::document::value::TaggedValue::F64(random_value), }); diff --git a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs index 437ffee9..41849530 100644 --- a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs +++ b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs @@ -76,8 +76,8 @@ pub struct FrontendNode { #[serde(rename = "isLayer")] pub is_layer: bool, pub id: graph_craft::document::NodeId, + pub alias: String, pub name: String, - pub identifier: String, #[serde(rename = "primaryInput")] pub primary_input: Option, #[serde(rename = "exposedInputs")] @@ -297,8 +297,8 @@ impl NodeGraphMessageHandler { nodes.push(FrontendNode { is_layer: node.is_layer(), id: *id, - name: node.alias.clone(), - identifier: node.name.clone(), + alias: node.alias.clone(), + name: node.name.clone(), primary_input, exposed_inputs, primary_output, diff --git a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/document_node_types.rs b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/document_node_types.rs index ca112c86..5412a97f 100644 --- a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/document_node_types.rs +++ b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/document_node_types.rs @@ -7,7 +7,7 @@ use graph_craft::concrete; use graph_craft::document::value::*; use graph_craft::document::*; use graph_craft::imaginate_input::ImaginateSamplingMethod; -use graph_craft::NodeIdentifier; +use graph_craft::ProtoNodeIdentifier; #[cfg(feature = "gpu")] use graphene_core::application_io::SurfaceHandle; use graphene_core::raster::brush_cache::BrushCache; @@ -76,31 +76,29 @@ pub struct NodePropertiesContext<'a> { #[derive(Clone)] pub enum NodeImplementation { - ProtoNode(NodeIdentifier), + ProtoNode(ProtoNodeIdentifier), DocumentNode(NodeNetwork), Extract, } impl Default for NodeImplementation { fn default() -> Self { - Self::ProtoNode(NodeIdentifier::new("graphene_core::ops::IdentityNode")) + Self::ProtoNode(ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")) } } impl NodeImplementation { pub fn proto(name: &'static str) -> Self { - Self::ProtoNode(NodeIdentifier::new(name)) + Self::ProtoNode(ProtoNodeIdentifier::new(name)) } } /// Acts as a description for a [DocumentNode] before it gets instantiated as one. #[derive(Clone)] -pub struct DocumentNodeBlueprint { - // TODO: Rename to `identifier` (also rename the TODOs in the `DocumentNode` struct) +pub struct DocumentNodeDefinition { pub name: &'static str, pub category: &'static str, - // TODO: Rename to `implementation` (also rename the TODOs in the `DocumentNode` struct) - pub identifier: NodeImplementation, + pub implementation: NodeImplementation, pub inputs: Vec, pub outputs: Vec, pub has_primary_output: bool, @@ -108,12 +106,12 @@ pub struct DocumentNodeBlueprint { pub manual_composition: Option, } -impl Default for DocumentNodeBlueprint { +impl Default for DocumentNodeDefinition { fn default() -> Self { Self { name: Default::default(), category: Default::default(), - identifier: Default::default(), + implementation: Default::default(), inputs: Default::default(), outputs: Default::default(), has_primary_output: true, @@ -125,7 +123,7 @@ impl Default for DocumentNodeBlueprint { // We use the once cell for lazy initialization to avoid the overhead of reconstructing the node list every time. // TODO: make document nodes not require a `'static` lifetime to avoid having to split the construction into const and non-const parts. -static DOCUMENT_NODE_TYPES: once_cell::sync::Lazy> = once_cell::sync::Lazy::new(static_nodes); +static DOCUMENT_NODE_TYPES: once_cell::sync::Lazy> = once_cell::sync::Lazy::new(static_nodes); fn monitor_node() -> DocumentNode { DocumentNode { @@ -140,40 +138,40 @@ fn monitor_node() -> DocumentNode { // TODO: Dynamic node library /// Defines the "signature" or "header file"-like metadata for the document nodes, but not the implementation (which is defined in the node registry). -/// The document node is the instance while these are the "class" (or "blueprint"). -fn static_nodes() -> Vec { +/// The [`DocumentNode`] is the instance while these [`DocumentNodeDefinition`]s are the "classes" or "blueprints" from which the instances are built. +fn static_nodes() -> Vec { vec![ - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Boolean", category: "Inputs", - identifier: NodeImplementation::proto("graphene_core::ops::IdentityNode"), + implementation: NodeImplementation::proto("graphene_core::ops::IdentityNode"), inputs: vec![DocumentInputType::value("Bool", TaggedValue::Bool(true), false)], outputs: vec![DocumentOutputType::new("Out", FrontendGraphDataType::Boolean)], properties: node_properties::boolean_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Number", category: "Inputs", - identifier: NodeImplementation::proto("graphene_core::ops::IdentityNode"), + implementation: NodeImplementation::proto("graphene_core::ops::IdentityNode"), inputs: vec![DocumentInputType::value("Number", TaggedValue::F32(0.), false)], outputs: vec![DocumentOutputType::new("Out", FrontendGraphDataType::Number)], properties: node_properties::number_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Color", category: "Inputs", - identifier: NodeImplementation::proto("graphene_core::ops::IdentityNode"), + implementation: NodeImplementation::proto("graphene_core::ops::IdentityNode"), inputs: vec![DocumentInputType::value("Color", TaggedValue::OptionalColor(None), false)], outputs: vec![DocumentOutputType::new("Out", FrontendGraphDataType::Color)], properties: node_properties::color_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Identity", category: "Structural", - identifier: NodeImplementation::proto("graphene_core::ops::IdentityNode"), + implementation: NodeImplementation::proto("graphene_core::ops::IdentityNode"), inputs: vec![DocumentInputType { name: "In", data_type: FrontendGraphDataType::General, @@ -183,10 +181,10 @@ fn static_nodes() -> Vec { properties: |_document_node, _node_id, _context| node_properties::string_properties("The identity node simply returns the input"), ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Monitor", category: "Structural", - identifier: NodeImplementation::proto("graphene_core::ops::IdentityNode"), + implementation: NodeImplementation::proto("graphene_core::ops::IdentityNode"), inputs: vec![DocumentInputType { name: "In", data_type: FrontendGraphDataType::General, @@ -196,10 +194,10 @@ fn static_nodes() -> Vec { properties: |_document_node, _node_id, _context| node_properties::string_properties("The Monitor node stores the value of its last evaluation"), ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Layer", category: "General", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![0, 2], outputs: vec![NodeOutput::new(2, 0)], nodes: [ @@ -245,10 +243,10 @@ fn static_nodes() -> Vec { properties: node_properties::layer_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Artboard", category: "General", - identifier: NodeImplementation::proto("graphene_core::ConstructArtboardNode<_, _, _, _, _>"), + implementation: NodeImplementation::proto("graphene_core::ConstructArtboardNode<_, _, _, _, _>"), inputs: vec![ DocumentInputType::value("Graphic Group", TaggedValue::GraphicGroup(GraphicGroup::EMPTY), true), DocumentInputType::value("Location", TaggedValue::IVec2(glam::IVec2::ZERO), false), @@ -261,10 +259,10 @@ fn static_nodes() -> Vec { manual_composition: Some(concrete!(Footprint)), ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Input Frame", category: "Ignore", - identifier: NodeImplementation::proto("graphene_core::ExtractImageFrame"), + implementation: NodeImplementation::proto("graphene_core::ExtractImageFrame"), inputs: vec![DocumentInputType { name: "In", data_type: FrontendGraphDataType::General, @@ -277,23 +275,23 @@ fn static_nodes() -> Vec { properties: node_properties::input_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Load Image", category: "Structural", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![0, 0], outputs: vec![NodeOutput::new(1, 0)], nodes: [ DocumentNode { name: "Load Resource".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi)), NodeInput::Network(concrete!(String))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_std::wasm_application_io::LoadResourceNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::LoadResourceNode<_>")), ..Default::default() }, DocumentNode { name: "Decode Image".to_string(), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_std::wasm_application_io::DecodeImageNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::DecodeImageNode")), ..Default::default() }, ] @@ -322,17 +320,17 @@ fn static_nodes() -> Vec { properties: node_properties::load_image_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Create Canvas", category: "Structural", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![0], outputs: vec![NodeOutput::new(1, 0)], nodes: [ DocumentNode { name: "Create Canvas".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_std::wasm_application_io::CreateSurfaceNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::CreateSurfaceNode")), skip_deduplication: true, ..Default::default() }, @@ -340,7 +338,7 @@ fn static_nodes() -> Vec { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, ] @@ -361,23 +359,23 @@ fn static_nodes() -> Vec { }], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Draw Canvas", category: "Structural", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![0, 2], outputs: vec![NodeOutput::new(3, 0)], nodes: [ DocumentNode { name: "Convert Image Frame".to_string(), inputs: vec![NodeInput::Network(concrete!(ImageFrame))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, ImageFrame>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, ImageFrame>")), ..Default::default() }, DocumentNode { name: "Create Canvas".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_std::wasm_application_io::CreateSurfaceNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::CreateSurfaceNode")), skip_deduplication: true, ..Default::default() }, @@ -385,13 +383,13 @@ fn static_nodes() -> Vec { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, DocumentNode { name: "Draw Canvas".to_string(), inputs: vec![NodeInput::node(0, 0), NodeInput::node(2, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_std::wasm_application_io::DrawImageFrameNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::DrawImageFrameNode<_>")), ..Default::default() }, ] @@ -419,30 +417,30 @@ fn static_nodes() -> Vec { }], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Begin Scope", category: "Ignore", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![0], outputs: vec![NodeOutput::new(1, 0), NodeOutput::new(2, 0)], nodes: [ DocumentNode { name: "SetNode".to_string(), manual_composition: Some(concrete!(WasmEditorApi)), - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::SomeNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::SomeNode")), ..Default::default() }, DocumentNode { name: "LetNode".to_string(), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::LetNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::LetNode<_>")), ..Default::default() }, DocumentNode { name: "RefNode".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::lambda(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::RefNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::RefNode<_, _>")), ..Default::default() }, ] @@ -471,10 +469,10 @@ fn static_nodes() -> Vec { properties: |_document_node, _node_id, _context| node_properties::string_properties("Binds the input in a local scope as a variable"), ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "End Scope", category: "Ignore", - identifier: NodeImplementation::proto("graphene_core::memo::EndLetNode<_, _>"), + implementation: NodeImplementation::proto("graphene_core::memo::EndLetNode<_, _>"), inputs: vec![ DocumentInputType { name: "Scope", @@ -494,23 +492,23 @@ fn static_nodes() -> Vec { properties: |_document_node, _node_id, _context| node_properties::string_properties("Consumes the scope opened by the Begin Scope node and evaluates the contained node network"), ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Output", category: "Ignore", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![3, 0], outputs: vec![NodeOutput::new(4, 0)], nodes: [ DocumentNode { name: "EditorApi".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IdentityNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")), ..Default::default() }, DocumentNode { name: "Create Canvas".to_string(), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_std::wasm_application_io::CreateSurfaceNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::CreateSurfaceNode")), skip_deduplication: true, ..Default::default() }, @@ -518,19 +516,19 @@ fn static_nodes() -> Vec { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, DocumentNode { name: "Conversion".to_string(), inputs: vec![NodeInput::Network(graphene_core::Type::Fn(Box::new(concrete!(Footprint)), Box::new(generic!(T))))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, GraphicGroup>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, GraphicGroup>")), ..Default::default() }, DocumentNode { name: "RenderNode".to_string(), inputs: vec![NodeInput::node(0, 0), NodeInput::node(3, 0), NodeInput::node(2, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_std::wasm_application_io::RenderNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::RenderNode<_, _>")), ..Default::default() }, ] @@ -556,10 +554,10 @@ fn static_nodes() -> Vec { properties: node_properties::output_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Image Frame", category: "General", - identifier: NodeImplementation::proto("graphene_std::raster::ImageFrameNode<_, _>"), + implementation: NodeImplementation::proto("graphene_std::raster::ImageFrameNode<_, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::Image(Image::empty()), true), DocumentInputType::value("Transform", TaggedValue::DAffine2(DAffine2::IDENTITY), true), @@ -568,10 +566,10 @@ fn static_nodes() -> Vec { properties: |_document_node, _node_id, _context| node_properties::string_properties("Creates an embedded image with the given transform"), ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Pixel Noise", category: "General", - identifier: NodeImplementation::proto("graphene_std::raster::PixelNoiseNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_std::raster::PixelNoiseNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Width", TaggedValue::U32(100), false), DocumentInputType::value("Height", TaggedValue::U32(100), false), @@ -582,10 +580,10 @@ fn static_nodes() -> Vec { properties: node_properties::pixel_noise_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Mask", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_std::raster::MaskImageNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_std::raster::MaskImageNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Stencil", TaggedValue::ImageFrame(ImageFrame::empty()), true), @@ -594,10 +592,10 @@ fn static_nodes() -> Vec { properties: node_properties::mask_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Insert Channel", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_std::raster::InsertChannelNode<_, _, _, _>"), + implementation: NodeImplementation::proto("graphene_std::raster::InsertChannelNode<_, _, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Insertion", TaggedValue::ImageFrame(ImageFrame::empty()), true), @@ -607,10 +605,10 @@ fn static_nodes() -> Vec { properties: node_properties::insert_channel_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Combine Channels", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_std::raster::CombineChannelsNode"), + implementation: NodeImplementation::proto("graphene_std::raster::CombineChannelsNode"), inputs: vec![ DocumentInputType::value("None", TaggedValue::None, false), DocumentInputType::value("Red", TaggedValue::ImageFrame(ImageFrame::empty()), true), @@ -624,10 +622,10 @@ fn static_nodes() -> Vec { }], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Blend", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::BlendNode<_, _, _, _>"), + implementation: NodeImplementation::proto("graphene_core::raster::BlendNode<_, _, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Second", TaggedValue::ImageFrame(ImageFrame::empty()), true), @@ -638,10 +636,10 @@ fn static_nodes() -> Vec { properties: node_properties::blend_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Levels", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::LevelsNode<_, _, _, _, _>"), + implementation: NodeImplementation::proto("graphene_core::raster::LevelsNode<_, _, _, _, _>"), inputs: vec![ DocumentInputType { name: "Image", @@ -678,10 +676,10 @@ fn static_nodes() -> Vec { properties: node_properties::levels_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Black & White", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::BlackAndWhiteNode<_, _, _, _, _, _, _>"), + implementation: NodeImplementation::proto("graphene_core::raster::BlackAndWhiteNode<_, _, _, _, _, _, _>"), inputs: vec![ DocumentInputType { name: "Image", @@ -728,28 +726,28 @@ fn static_nodes() -> Vec { properties: node_properties::black_and_white_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Color Channel", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::ops::IdentityNode"), + implementation: NodeImplementation::proto("graphene_core::ops::IdentityNode"), inputs: vec![DocumentInputType::value("Channel", TaggedValue::RedGreenBlue(RedGreenBlue::Red), false)], outputs: vec![DocumentOutputType::new("Out", FrontendGraphDataType::General)], properties: node_properties::color_channel_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Blend Mode Value", category: "Inputs", - identifier: NodeImplementation::proto("graphene_core::ops::IdentityNode"), + implementation: NodeImplementation::proto("graphene_core::ops::IdentityNode"), inputs: vec![DocumentInputType::value("Blend Mode", TaggedValue::BlendMode(BlendMode::Normal), false)], outputs: vec![DocumentOutputType::new("Out", FrontendGraphDataType::General)], properties: node_properties::blend_mode_value_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Luminance", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::LuminanceNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::LuminanceNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Luminance Calc", TaggedValue::LuminanceCalculation(LuminanceCalculation::SRGB), false), @@ -758,10 +756,10 @@ fn static_nodes() -> Vec { properties: node_properties::luminance_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Extract Channel", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::ExtractChannelNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::ExtractChannelNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("From", TaggedValue::RedGreenBlue(RedGreenBlue::Red), false), @@ -770,26 +768,26 @@ fn static_nodes() -> Vec { properties: node_properties::extract_channel_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Extract Alpha", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::ExtractAlphaNode<>"), + implementation: NodeImplementation::proto("graphene_core::raster::ExtractAlphaNode<>"), inputs: vec![DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true)], outputs: vec![DocumentOutputType::new("Image", FrontendGraphDataType::Raster)], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Extract Opaque", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::ExtractOpaqueNode<>"), + implementation: NodeImplementation::proto("graphene_core::raster::ExtractOpaqueNode<>"), inputs: vec![DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true)], outputs: vec![DocumentOutputType::new("Image", FrontendGraphDataType::Raster)], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Split Channels", category: "Image Adjustments", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![0], outputs: vec![NodeOutput::new(1, 0), NodeOutput::new(2, 0), NodeOutput::new(3, 0), NodeOutput::new(4, 0)], nodes: [ @@ -799,31 +797,31 @@ fn static_nodes() -> Vec { DocumentNode { name: "Identity".to_string(), inputs: vec![NodeInput::Network(concrete!(ImageFrame))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IdentityNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")), ..Default::default() }, DocumentNode { name: "RedNode".to_string(), inputs: vec![NodeInput::node(0, 0), NodeInput::value(TaggedValue::RedGreenBlue(RedGreenBlue::Red), false)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::raster::ExtractChannelNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::raster::ExtractChannelNode<_>")), ..Default::default() }, DocumentNode { name: "GreenNode".to_string(), inputs: vec![NodeInput::node(0, 0), NodeInput::value(TaggedValue::RedGreenBlue(RedGreenBlue::Green), false)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::raster::ExtractChannelNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::raster::ExtractChannelNode<_>")), ..Default::default() }, DocumentNode { name: "BlueNode".to_string(), inputs: vec![NodeInput::node(0, 0), NodeInput::value(TaggedValue::RedGreenBlue(RedGreenBlue::Blue), false)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::raster::ExtractChannelNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::raster::ExtractChannelNode<_>")), ..Default::default() }, DocumentNode { name: "AlphaNode".to_string(), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::raster::ExtractAlphaNode<>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::raster::ExtractAlphaNode<>")), ..Default::default() }, ] @@ -844,10 +842,10 @@ fn static_nodes() -> Vec { has_primary_output: false, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Brush", category: "Brush", - identifier: NodeImplementation::proto("graphene_std::brush::BrushNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_std::brush::BrushNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Background", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Bounds", TaggedValue::ImageFrame(ImageFrame::empty()), true), @@ -860,10 +858,10 @@ fn static_nodes() -> Vec { }], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Extract Vector Points", category: "Brush", - identifier: NodeImplementation::proto("graphene_std::brush::VectorPointsNode"), + implementation: NodeImplementation::proto("graphene_std::brush::VectorPointsNode"), inputs: vec![DocumentInputType::value("VectorData", TaggedValue::VectorData(VectorData::empty()), true)], outputs: vec![DocumentOutputType { name: "Vector Points", @@ -871,49 +869,49 @@ fn static_nodes() -> Vec { }], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Memoize", category: "Structural", - identifier: NodeImplementation::proto("graphene_core::memo::MemoNode<_, _>"), + implementation: NodeImplementation::proto("graphene_core::memo::MemoNode<_, _>"), inputs: vec![DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true)], outputs: vec![DocumentOutputType::new("Image", FrontendGraphDataType::Raster)], manual_composition: Some(concrete!(())), ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Image", category: "Ignore", - identifier: NodeImplementation::proto("graphene_core::ops::IdentityNode"), + implementation: NodeImplementation::proto("graphene_core::ops::IdentityNode"), inputs: vec![DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), false)], outputs: vec![DocumentOutputType::new("Image", FrontendGraphDataType::Raster)], properties: |_document_node, _node_id, _context| node_properties::string_properties("A bitmap image embedded in this node"), ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Uniform", category: "Gpu", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![1, 0], outputs: vec![NodeOutput::new(2, 0)], nodes: [ DocumentNode { name: "Extract Executor".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), ..Default::default() }, DocumentNode { name: "Create Uniform".to_string(), inputs: vec![NodeInput::Network(generic!(T)), NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("gpu_executor::UniformNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("gpu_executor::UniformNode<_>")), ..Default::default() }, DocumentNode { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, ] @@ -942,30 +940,30 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Storage", category: "Gpu", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![1, 0], outputs: vec![NodeOutput::new(2, 0)], nodes: [ DocumentNode { name: "Extract Executor".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), ..Default::default() }, DocumentNode { name: "Create Storage".to_string(), inputs: vec![NodeInput::Network(concrete!(Vec)), NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("gpu_executor::StorageNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("gpu_executor::StorageNode<_>")), ..Default::default() }, DocumentNode { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, ] @@ -994,30 +992,30 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "CreateOutputBuffer", category: "Gpu", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![1, 1, 0], outputs: vec![NodeOutput::new(2, 0)], nodes: [ DocumentNode { name: "Extract Executor".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), ..Default::default() }, DocumentNode { name: "Create Output Buffer".to_string(), inputs: vec![NodeInput::Network(concrete!(usize)), NodeInput::node(0, 0), NodeInput::Network(concrete!(Type))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("gpu_executor::CreateOutputBufferNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("gpu_executor::CreateOutputBufferNode<_, _>")), ..Default::default() }, DocumentNode { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, ] @@ -1052,17 +1050,17 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "CreateComputePass", category: "Gpu", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![1, 0, 1, 1], outputs: vec![NodeOutput::new(2, 0)], nodes: [ DocumentNode { name: "Extract Executor".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), ..Default::default() }, DocumentNode { @@ -1073,14 +1071,14 @@ fn static_nodes() -> Vec { NodeInput::Network(concrete!(ShaderInput)), NodeInput::Network(concrete!(gpu_executor::ComputePassDimensions)), ], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("gpu_executor::CreateComputePassNode<_, _, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("gpu_executor::CreateComputePassNode<_, _, _>")), ..Default::default() }, DocumentNode { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, ] @@ -1120,10 +1118,10 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "CreatePipelineLayout", category: "Gpu", - identifier: NodeImplementation::proto("gpu_executor::CreatePipelineLayoutNode<_, _, _, _>"), + implementation: NodeImplementation::proto("gpu_executor::CreatePipelineLayoutNode<_, _, _, _>"), inputs: vec![ DocumentInputType { name: "ShaderHandle", @@ -1154,30 +1152,30 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "ExecuteComputePipeline", category: "Gpu", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![1, 0], outputs: vec![NodeOutput::new(2, 0)], nodes: [ DocumentNode { name: "Extract Executor".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), ..Default::default() }, DocumentNode { name: "Execute Compute Pipeline".to_string(), inputs: vec![NodeInput::Network(concrete!(::CommandBuffer)), NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("gpu_executor::ExecuteComputePipelineNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("gpu_executor::ExecuteComputePipelineNode<_>")), ..Default::default() }, DocumentNode { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, ] @@ -1206,30 +1204,30 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "ReadOutputBuffer", category: "Gpu", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![1, 0], outputs: vec![NodeOutput::new(2, 0)], nodes: [ DocumentNode { name: "Extract Executor".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), ..Default::default() }, DocumentNode { name: "Read Output Buffer".to_string(), inputs: vec![NodeInput::Network(concrete!(Arc>)), NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("gpu_executor::ReadOutputBufferNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("gpu_executor::ReadOutputBufferNode<_, _>")), ..Default::default() }, DocumentNode { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, ] @@ -1258,24 +1256,24 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "CreateGpuSurface", category: "Gpu", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![0], outputs: vec![NodeOutput::new(1, 0)], nodes: [ DocumentNode { name: "Create Gpu Surface".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("gpu_executor::CreateGpuSurfaceNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("gpu_executor::CreateGpuSurfaceNode")), ..Default::default() }, DocumentNode { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, ] @@ -1297,17 +1295,17 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "RenderTexture", category: "Gpu", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![1, 1, 0], outputs: vec![NodeOutput::new(1, 0)], nodes: [ DocumentNode { name: "Extract Executor".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), ..Default::default() }, DocumentNode { @@ -1317,7 +1315,7 @@ fn static_nodes() -> Vec { NodeInput::Network(concrete!(Arc::Surface>>)), NodeInput::node(0, 0), ], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("gpu_executor::RenderTextureNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("gpu_executor::RenderTextureNode<_, _>")), ..Default::default() }, ] @@ -1351,30 +1349,30 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "UploadTexture", category: "Gpu", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![1, 0], outputs: vec![NodeOutput::new(2, 0)], nodes: [ DocumentNode { name: "Extract Executor".to_string(), inputs: vec![NodeInput::Network(concrete!(WasmEditorApi))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IntoNode<_, &WgpuExecutor>")), ..Default::default() }, DocumentNode { name: "Upload Texture".to_string(), inputs: vec![NodeInput::Network(concrete!(ImageFrame)), NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("gpu_executor::UploadTextureNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("gpu_executor::UploadTextureNode<_>")), ..Default::default() }, DocumentNode { name: "Cache".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::node(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")), ..Default::default() }, ] @@ -1403,10 +1401,10 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "GpuImage", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_std::executor::MapGpuSingleImageNode<_>"), + implementation: NodeImplementation::proto("graphene_std::executor::MapGpuSingleImageNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType { @@ -1424,10 +1422,10 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "gpu")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Blend (GPU)", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_std::executor::BlendGpuImageNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_std::executor::BlendGpuImageNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Second", TaggedValue::ImageFrame(ImageFrame::empty()), true), @@ -1438,10 +1436,10 @@ fn static_nodes() -> Vec { properties: node_properties::blend_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Extract", category: "Macros", - identifier: NodeImplementation::Extract, + implementation: NodeImplementation::Extract, inputs: vec![DocumentInputType { name: "Node", data_type: FrontendGraphDataType::General, @@ -1451,10 +1449,10 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "quantization")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Generate Quantization", category: "Quantization", - identifier: NodeImplementation::proto("graphene_std::quantization::GenerateQuantizationNode<_, _>"), + implementation: NodeImplementation::proto("graphene_std::quantization::GenerateQuantizationNode<_, _>"), inputs: vec![ DocumentInputType { name: "Image", @@ -1477,10 +1475,10 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "quantization")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Quantize Image", category: "Quantization", - identifier: NodeImplementation::proto("graphene_core::quantization::QuantizeNode<_>"), + implementation: NodeImplementation::proto("graphene_core::quantization::QuantizeNode<_>"), inputs: vec![ DocumentInputType { name: "Image", @@ -1498,10 +1496,10 @@ fn static_nodes() -> Vec { ..Default::default() }, #[cfg(feature = "quantization")] - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "DeQuantize Image", category: "Quantization", - identifier: NodeImplementation::proto("graphene_core::quantization::DeQuantizeNode<_>"), + implementation: NodeImplementation::proto("graphene_core::quantization::DeQuantizeNode<_>"), inputs: vec![ DocumentInputType { name: "Encoded", @@ -1518,18 +1516,18 @@ fn static_nodes() -> Vec { properties: node_properties::quantize_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Invert RGB", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::InvertRGBNode"), + implementation: NodeImplementation::proto("graphene_core::raster::InvertRGBNode"), inputs: vec![DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true)], outputs: vec![DocumentOutputType::new("Image", FrontendGraphDataType::Raster)], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Hue/Saturation", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::HueSaturationNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_core::raster::HueSaturationNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Hue Shift", TaggedValue::F32(0.), false), @@ -1540,10 +1538,10 @@ fn static_nodes() -> Vec { properties: node_properties::adjust_hsl_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Brightness/Contrast", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::BrightnessContrastNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_core::raster::BrightnessContrastNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Brightness", TaggedValue::F32(0.), false), @@ -1554,10 +1552,10 @@ fn static_nodes() -> Vec { properties: node_properties::brightness_contrast_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Curves", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::CurvesNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::CurvesNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Curve", TaggedValue::Curve(Default::default()), false), @@ -1566,10 +1564,10 @@ fn static_nodes() -> Vec { properties: node_properties::curves_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Threshold", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::ThresholdNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_core::raster::ThresholdNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Min Luminance", TaggedValue::F32(50.), false), @@ -1580,10 +1578,10 @@ fn static_nodes() -> Vec { properties: node_properties::adjust_threshold_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Vibrance", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::VibranceNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::VibranceNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Vibrance", TaggedValue::F32(0.), false), @@ -1592,10 +1590,10 @@ fn static_nodes() -> Vec { properties: node_properties::adjust_vibrance_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Channel Mixer", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::ChannelMixerNode<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>"), + implementation: NodeImplementation::proto("graphene_core::raster::ChannelMixerNode<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), // Monochrome toggle @@ -1627,10 +1625,10 @@ fn static_nodes() -> Vec { properties: node_properties::adjust_channel_mixer_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Selective Color", category: "Image Adjustments", - identifier: NodeImplementation::proto( + implementation: NodeImplementation::proto( "graphene_core::raster::SelectiveColorNode<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>", ), inputs: vec![ @@ -1689,10 +1687,10 @@ fn static_nodes() -> Vec { properties: node_properties::adjust_selective_color_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Opacity", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::OpacityNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::OpacityNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Factor", TaggedValue::F32(100.), false), @@ -1701,10 +1699,10 @@ fn static_nodes() -> Vec { properties: node_properties::opacity_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Blend Mode", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::BlendModeNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::BlendModeNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Blend Mode", TaggedValue::BlendMode(BlendMode::Normal), false), @@ -1713,10 +1711,10 @@ fn static_nodes() -> Vec { properties: node_properties::blend_mode_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Posterize", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::PosterizeNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::PosterizeNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Levels", TaggedValue::F32(4.), false), @@ -1725,10 +1723,10 @@ fn static_nodes() -> Vec { properties: node_properties::posterize_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Exposure", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::ExposureNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_core::raster::ExposureNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Exposure", TaggedValue::F32(0.), false), @@ -1739,10 +1737,10 @@ fn static_nodes() -> Vec { properties: node_properties::exposure_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Add", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::AddNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::AddNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), DocumentInputType::value("Addend", TaggedValue::F32(0.), false), @@ -1751,10 +1749,10 @@ fn static_nodes() -> Vec { properties: node_properties::add_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Subtract", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::AddNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::AddNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), DocumentInputType::value("Subtrahend", TaggedValue::F32(0.), false), @@ -1763,10 +1761,10 @@ fn static_nodes() -> Vec { properties: node_properties::subtract_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Divide", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::DivideNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::DivideNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), DocumentInputType::value("Divisor", TaggedValue::F32(0.), false), @@ -1775,10 +1773,10 @@ fn static_nodes() -> Vec { properties: node_properties::divide_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Multiply", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::MultiplyNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::MultiplyNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), DocumentInputType::value("Multiplicand", TaggedValue::F32(0.), false), @@ -1787,10 +1785,10 @@ fn static_nodes() -> Vec { properties: node_properties::multiply_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Exponent", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::ExponentNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::ExponentNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), DocumentInputType::value("Power", TaggedValue::F32(0.), false), @@ -1799,46 +1797,46 @@ fn static_nodes() -> Vec { properties: node_properties::exponent_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Floor", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::FloorNode"), + implementation: NodeImplementation::proto("graphene_core::ops::FloorNode"), inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Ceil", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::CeilingNode"), + implementation: NodeImplementation::proto("graphene_core::ops::CeilingNode"), inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Round", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::RoundNode"), + implementation: NodeImplementation::proto("graphene_core::ops::RoundNode"), inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Absolute Value", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::AbsoluteValue"), + implementation: NodeImplementation::proto("graphene_core::ops::AbsoluteValue"), inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Logarithm", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::LogarithmNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::LogarithmNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), DocumentInputType::value("Base", TaggedValue::F32(0.), true), @@ -1847,46 +1845,46 @@ fn static_nodes() -> Vec { properties: node_properties::log_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Natural Logarithm", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::NaturalLogarithmNode"), + implementation: NodeImplementation::proto("graphene_core::ops::NaturalLogarithmNode"), inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Sine", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::SineNode"), + implementation: NodeImplementation::proto("graphene_core::ops::SineNode"), inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Cosine", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::CosineNode"), + implementation: NodeImplementation::proto("graphene_core::ops::CosineNode"), inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Tangent", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::TangentNode"), + implementation: NodeImplementation::proto("graphene_core::ops::TangentNode"), inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Max", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::MaximumNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::MaximumNode<_>"), inputs: vec![ DocumentInputType::value("Operand A", TaggedValue::F32(0.), true), DocumentInputType::value("Operand B", TaggedValue::F32(0.), true), @@ -1895,10 +1893,10 @@ fn static_nodes() -> Vec { properties: node_properties::max_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Min", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::MinimumNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::MinimumNode<_>"), inputs: vec![ DocumentInputType::value("Operand A", TaggedValue::F32(0.), true), DocumentInputType::value("Operand B", TaggedValue::F32(0.), true), @@ -1907,10 +1905,10 @@ fn static_nodes() -> Vec { properties: node_properties::min_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Equals", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::EqualsNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::EqualsNode<_>"), inputs: vec![ DocumentInputType::value("Operand A", TaggedValue::F32(0.), true), DocumentInputType::value("Operand B", TaggedValue::F32(0.), true), @@ -1919,10 +1917,10 @@ fn static_nodes() -> Vec { properties: node_properties::eq_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Modulo", category: "Math", - identifier: NodeImplementation::proto("graphene_core::ops::ModuloNode<_>"), + implementation: NodeImplementation::proto("graphene_core::ops::ModuloNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), DocumentInputType::value("Modulus", TaggedValue::F32(0.), false), @@ -1931,19 +1929,19 @@ fn static_nodes() -> Vec { properties: node_properties::modulo_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Log to Console", category: "Logic", - identifier: NodeImplementation::proto("graphene_core::logic::LogToConsoleNode"), + implementation: NodeImplementation::proto("graphene_core::logic::LogToConsoleNode"), inputs: vec![DocumentInputType::value("Input", TaggedValue::String("Not Connected to a value yet".into()), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::General)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Or", category: "Logic", - identifier: NodeImplementation::proto("graphene_core::logic::LogicOrNode<_>"), + implementation: NodeImplementation::proto("graphene_core::logic::LogicOrNode<_>"), inputs: vec![ DocumentInputType::value("Operand A", TaggedValue::Bool(false), true), DocumentInputType::value("Operand B", TaggedValue::Bool(false), true), @@ -1952,10 +1950,10 @@ fn static_nodes() -> Vec { properties: node_properties::logic_operator_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "And", category: "Logic", - identifier: NodeImplementation::proto("graphene_core::logic::LogicAndNode<_>"), + implementation: NodeImplementation::proto("graphene_core::logic::LogicAndNode<_>"), inputs: vec![ DocumentInputType::value("Operand A", TaggedValue::Bool(false), true), DocumentInputType::value("Operand B", TaggedValue::Bool(false), true), @@ -1964,10 +1962,10 @@ fn static_nodes() -> Vec { properties: node_properties::logic_operator_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "XOR", category: "Logic", - identifier: NodeImplementation::proto("graphene_core::logic::LogicXorNode<_>"), + implementation: NodeImplementation::proto("graphene_core::logic::LogicXorNode<_>"), inputs: vec![ DocumentInputType::value("Operand A", TaggedValue::Bool(false), true), DocumentInputType::value("Operand B", TaggedValue::Bool(false), true), @@ -1976,29 +1974,29 @@ fn static_nodes() -> Vec { properties: node_properties::logic_operator_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Not", category: "Logic", - identifier: NodeImplementation::proto("graphene_core::logic::LogicNotNode"), + implementation: NodeImplementation::proto("graphene_core::logic::LogicNotNode"), inputs: vec![DocumentInputType::value("Input", TaggedValue::Bool(false), true)], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Boolean)], properties: node_properties::node_no_properties, ..Default::default() }, (*IMAGINATE_NODE).clone(), - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Circle", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::generator_nodes::CircleGenerator<_>"), + implementation: NodeImplementation::proto("graphene_core::vector::generator_nodes::CircleGenerator<_>"), inputs: vec![DocumentInputType::none(), DocumentInputType::value("Radius", TaggedValue::F32(50.), false)], outputs: vec![DocumentOutputType::new("Vector", FrontendGraphDataType::Subpath)], properties: node_properties::circle_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Ellipse", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::generator_nodes::EllipseGenerator<_, _>"), + implementation: NodeImplementation::proto("graphene_core::vector::generator_nodes::EllipseGenerator<_, _>"), inputs: vec![ DocumentInputType::none(), DocumentInputType::value("Radius X", TaggedValue::F32(50.), false), @@ -2008,10 +2006,10 @@ fn static_nodes() -> Vec { properties: node_properties::ellipse_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Rectangle", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::generator_nodes::RectangleGenerator<_, _>"), + implementation: NodeImplementation::proto("graphene_core::vector::generator_nodes::RectangleGenerator<_, _>"), inputs: vec![ DocumentInputType::none(), DocumentInputType::value("Size X", TaggedValue::F32(100.), false), @@ -2021,10 +2019,10 @@ fn static_nodes() -> Vec { properties: node_properties::rectangle_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Regular Polygon", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::generator_nodes::RegularPolygonGenerator<_, _>"), + implementation: NodeImplementation::proto("graphene_core::vector::generator_nodes::RegularPolygonGenerator<_, _>"), inputs: vec![ DocumentInputType::none(), DocumentInputType::value("Sides", TaggedValue::U32(6), false), @@ -2034,10 +2032,10 @@ fn static_nodes() -> Vec { properties: node_properties::regular_polygon_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Star", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::generator_nodes::StarGenerator<_, _, _>"), + implementation: NodeImplementation::proto("graphene_core::vector::generator_nodes::StarGenerator<_, _, _>"), inputs: vec![ DocumentInputType::none(), DocumentInputType::value("Sides", TaggedValue::U32(5), false), @@ -2048,10 +2046,10 @@ fn static_nodes() -> Vec { properties: node_properties::star_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Line", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::generator_nodes::LineGenerator<_, _>"), + implementation: NodeImplementation::proto("graphene_core::vector::generator_nodes::LineGenerator<_, _>"), inputs: vec![ DocumentInputType::none(), DocumentInputType::value("Start", TaggedValue::DVec2(DVec2::new(0., -50.)), false), @@ -2061,10 +2059,10 @@ fn static_nodes() -> Vec { properties: node_properties::line_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Spline", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::generator_nodes::SplineGenerator<_>"), + implementation: NodeImplementation::proto("graphene_core::vector::generator_nodes::SplineGenerator<_>"), inputs: vec![ DocumentInputType::none(), DocumentInputType::value("Points", TaggedValue::VecDVec2(vec![DVec2::new(0., -50.), DVec2::new(25., 0.), DVec2::new(0., 50.)]), false), @@ -2073,10 +2071,10 @@ fn static_nodes() -> Vec { properties: node_properties::spline_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Shape", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::generator_nodes::PathGenerator<_>"), + implementation: NodeImplementation::proto("graphene_core::vector::generator_nodes::PathGenerator<_>"), inputs: vec![ DocumentInputType::value("Path Data", TaggedValue::Subpaths(vec![]), false), // TODO: Keavon asks: what is this for? Is it dead code? It seems to only be set, never read. @@ -2085,37 +2083,37 @@ fn static_nodes() -> Vec { outputs: vec![DocumentOutputType::new("Vector", FrontendGraphDataType::Subpath)], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Sample", category: "Structural", - identifier: NodeImplementation::proto("graphene_std::raster::SampleNode<_>"), + implementation: NodeImplementation::proto("graphene_std::raster::SampleNode<_>"), manual_composition: Some(concrete!(Footprint)), inputs: vec![DocumentInputType::value("Raseter Data", TaggedValue::ImageFrame(ImageFrame::empty()), true)], outputs: vec![DocumentOutputType::new("Raster", FrontendGraphDataType::Raster)], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Mandelbrot", category: "Generators", - identifier: NodeImplementation::proto("graphene_std::raster::MandelbrotNode"), + implementation: NodeImplementation::proto("graphene_std::raster::MandelbrotNode"), manual_composition: Some(concrete!(Footprint)), inputs: vec![], outputs: vec![DocumentOutputType::new("Raster", FrontendGraphDataType::Raster)], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Cull", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::transform::CullNode<_>"), + implementation: NodeImplementation::proto("graphene_core::transform::CullNode<_>"), manual_composition: Some(concrete!(Footprint)), inputs: vec![DocumentInputType::value("Vector Data", TaggedValue::VectorData(VectorData::empty()), true)], outputs: vec![DocumentOutputType::new("Vector", FrontendGraphDataType::Subpath)], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Text", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::text::TextGenerator<_, _, _>"), + implementation: NodeImplementation::proto("graphene_core::text::TextGenerator<_, _, _>"), inputs: vec![ DocumentInputType::none(), DocumentInputType::value("Text", TaggedValue::String("hello world".to_string()), false), @@ -2126,10 +2124,10 @@ fn static_nodes() -> Vec { properties: node_properties::node_section_font, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Transform", category: "Transform", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![0, 1, 1, 1, 1, 1], outputs: vec![NodeOutput::new(1, 0)], nodes: [ @@ -2148,7 +2146,7 @@ fn static_nodes() -> Vec { NodeInput::Network(concrete!(DVec2)), ], manual_composition: Some(concrete!(Footprint)), - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::transform::TransformNode<_, _, _, _, _, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::transform::TransformNode<_, _, _, _, _, _>")), ..Default::default() }, ] @@ -2171,10 +2169,10 @@ fn static_nodes() -> Vec { properties: node_properties::transform_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "SetTransform", category: "Transform", - identifier: NodeImplementation::proto("graphene_core::transform::SetTransformNode<_>"), + implementation: NodeImplementation::proto("graphene_core::transform::SetTransformNode<_>"), inputs: vec![ DocumentInputType::value("Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true), DocumentInputType::value("Transform", TaggedValue::DAffine2(DAffine2::IDENTITY), true), @@ -2182,10 +2180,10 @@ fn static_nodes() -> Vec { outputs: vec![DocumentOutputType::new("Data", FrontendGraphDataType::Subpath)], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Fill", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::SetFillNode<_, _, _, _, _, _, _>"), + implementation: NodeImplementation::proto("graphene_core::vector::SetFillNode<_, _, _, _, _, _, _>"), inputs: vec![ DocumentInputType::value("Vector Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true), DocumentInputType::value("Fill Type", TaggedValue::FillType(vector::style::FillType::None), false), @@ -2200,10 +2198,10 @@ fn static_nodes() -> Vec { properties: node_properties::fill_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Stroke", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::SetStrokeNode<_, _, _, _, _, _, _>"), + implementation: NodeImplementation::proto("graphene_core::vector::SetStrokeNode<_, _, _, _, _, _, _>"), inputs: vec![ DocumentInputType::value("Vector Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true), DocumentInputType::value("Color", TaggedValue::OptionalColor(Some(Color::BLACK)), false), @@ -2218,10 +2216,10 @@ fn static_nodes() -> Vec { properties: node_properties::stroke_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Repeat", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::RepeatNode<_, _>"), + implementation: NodeImplementation::proto("graphene_core::vector::RepeatNode<_, _>"), inputs: vec![ DocumentInputType::value("Vector Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true), DocumentInputType::value("Direction", TaggedValue::DVec2((100., 0.).into()), false), @@ -2231,19 +2229,19 @@ fn static_nodes() -> Vec { properties: node_properties::repeat_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Bounding Box", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::BoundingBoxNode"), + implementation: NodeImplementation::proto("graphene_core::vector::BoundingBoxNode"), inputs: vec![DocumentInputType::value("Vector Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true)], outputs: vec![DocumentOutputType::new("Vector", FrontendGraphDataType::Subpath)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Circular Repeat", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::CircularRepeatNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_core::vector::CircularRepeatNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Vector Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true), DocumentInputType::value("Angle Offset", TaggedValue::F32(0.), false), @@ -2254,10 +2252,10 @@ fn static_nodes() -> Vec { properties: node_properties::circular_repeat_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Resample Points", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::ResamplePoints<_>"), + implementation: NodeImplementation::proto("graphene_core::vector::ResamplePoints<_>"), inputs: vec![ DocumentInputType::value("Vector Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true), DocumentInputType::value("Spacing", TaggedValue::F64(100.), false), @@ -2266,19 +2264,19 @@ fn static_nodes() -> Vec { properties: node_properties::resample_points_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Spline from Points", category: "Vector", - identifier: NodeImplementation::proto("graphene_core::vector::SplineFromPointsNode"), + implementation: NodeImplementation::proto("graphene_core::vector::SplineFromPointsNode"), inputs: vec![DocumentInputType::value("Vector Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true)], outputs: vec![DocumentOutputType::new("Vector", FrontendGraphDataType::Subpath)], properties: node_properties::node_no_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Image Segmentation", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_std::image_segmentation::ImageSegmentationNode<_>"), + implementation: NodeImplementation::proto("graphene_std::image_segmentation::ImageSegmentationNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Mask", TaggedValue::ImageFrame(ImageFrame::empty()), true), @@ -2286,10 +2284,10 @@ fn static_nodes() -> Vec { outputs: vec![DocumentOutputType::new("Segments", FrontendGraphDataType::Raster)], ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Index", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::IndexNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::IndexNode<_>"), inputs: vec![ DocumentInputType::value("Segmentation", TaggedValue::Segments(vec![ImageFrame::empty()]), true), DocumentInputType::value("Index", TaggedValue::U32(0), false), @@ -2299,10 +2297,10 @@ fn static_nodes() -> Vec { ..Default::default() }, // Applies the given color to each pixel of an image but maintains the alpha value - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Color Fill", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::adjustments::ColorFillNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::adjustments::ColorFillNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Color", TaggedValue::Color(Color::BLACK), false), @@ -2311,10 +2309,10 @@ fn static_nodes() -> Vec { properties: node_properties::color_fill_properties, ..Default::default() }, - DocumentNodeBlueprint { + DocumentNodeDefinition { name: "Color Overlay", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::adjustments::ColorOverlayNode<_, _, _>"), + implementation: NodeImplementation::proto("graphene_core::raster::adjustments::ColorOverlayNode<_, _, _>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Color", TaggedValue::Color(Color::BLACK), false), @@ -2328,10 +2326,10 @@ fn static_nodes() -> Vec { ] } -pub static IMAGINATE_NODE: Lazy = Lazy::new(|| DocumentNodeBlueprint { +pub static IMAGINATE_NODE: Lazy = Lazy::new(|| DocumentNodeDefinition { name: "Imaginate", category: "Image Synthesis", - identifier: NodeImplementation::DocumentNode(NodeNetwork { + implementation: NodeImplementation::DocumentNode(NodeNetwork { inputs: vec![0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], outputs: vec![NodeOutput::new(1, 0)], nodes: [ @@ -2403,7 +2401,7 @@ pub static IMAGINATE_NODE: Lazy = Lazy::new(|| DocumentNo ..Default::default() }); -pub fn resolve_document_node_type(name: &str) -> Option<&DocumentNodeBlueprint> { +pub fn resolve_document_node_type(name: &str) -> Option<&DocumentNodeDefinition> { DOCUMENT_NODE_TYPES.iter().find(|node| node.name == name) } @@ -2415,12 +2413,12 @@ pub fn collect_node_types() -> Vec { .collect() } -impl DocumentNodeBlueprint { +impl DocumentNodeDefinition { /// Generate a [`DocumentNodeImplementation`] from this node type, using a nested network. pub fn generate_implementation(&self) -> DocumentNodeImplementation { // let num_inputs = self.inputs.len(); - let inner_network = match &self.identifier { + let inner_network = match &self.implementation { NodeImplementation::DocumentNode(network) => network.clone(), NodeImplementation::ProtoNode(ident) => return DocumentNodeImplementation::Unresolved(ident.clone()), @@ -2451,7 +2449,7 @@ impl DocumentNodeBlueprint { DocumentNodeImplementation::Network(inner_network) } - /// Converts the [DocumentNodeBlueprint] type to a [DocumentNode], based on the inputs from the graph (which must be the correct length) and the metadata + /// Converts the [DocumentNodeDefinition] type to a [DocumentNode], based on the inputs from the graph (which must be the correct length) and the metadata pub fn to_document_node(&self, inputs: impl IntoIterator, metadata: graph_craft::document::DocumentNodeMetadata) -> DocumentNode { let inputs: Vec<_> = inputs.into_iter().collect(); assert_eq!(inputs.len(), self.inputs.len(), "Inputs passed from the graph must be equal to the number required"); @@ -2466,7 +2464,7 @@ impl DocumentNodeBlueprint { } } - /// Converts the [DocumentNodeBlueprint] type to a [DocumentNode], using the provided `input_override` and falling back to the default inputs. + /// Converts the [DocumentNodeDefinition] type to a [DocumentNode], using the provided `input_override` and falling back to the default inputs. /// `input_override` does not have to be the correct length. pub fn to_document_node_default_inputs(&self, input_override: impl IntoIterator>, metadata: graph_craft::document::DocumentNodeMetadata) -> DocumentNode { let mut input_override = input_override.into_iter(); @@ -2474,7 +2472,7 @@ impl DocumentNodeBlueprint { self.to_document_node(inputs, metadata) } - /// Converts the [DocumentNodeBlueprint] type to a [DocumentNode], completely default + /// Converts the [DocumentNodeDefinition] type to a [DocumentNode], completely default pub fn default_document_node(&self) -> DocumentNode { self.to_document_node(self.inputs.iter().map(|input| input.default.clone()), DocumentNodeMetadata::default()) } diff --git a/frontend/src/components/views/Graph.svelte b/frontend/src/components/views/Graph.svelte index 12520d65..2e856b6f 100644 --- a/frontend/src/components/views/Graph.svelte +++ b/frontend/src/components/views/Graph.svelte @@ -741,7 +741,7 @@
- {node.name || "Layer"} + {node.alias || "Layer"}
@@ -771,9 +771,9 @@ >
- + - {node.name || node.identifier} + {node.alias || node.name}
{#if exposedInputsOutputs.length > 0} diff --git a/frontend/src/components/widgets/WidgetSpan.svelte b/frontend/src/components/widgets/WidgetSpan.svelte index a44d09a7..3ba57263 100644 --- a/frontend/src/components/widgets/WidgetSpan.svelte +++ b/frontend/src/components/widgets/WidgetSpan.svelte @@ -87,7 +87,6 @@ -
{#each widgetsAndNextSiblingIsSuffix as [component, nextIsSuffix], index} diff --git a/frontend/src/wasm-communication/messages.ts b/frontend/src/wasm-communication/messages.ts index 88f7695b..017ac400 100644 --- a/frontend/src/wasm-communication/messages.ts +++ b/frontend/src/wasm-communication/messages.ts @@ -101,9 +101,9 @@ export class FrontendNode { readonly id!: bigint; - readonly name!: string; + readonly alias!: string; - readonly identifier!: string; + readonly name!: string; readonly primaryInput!: FrontendGraphInput | undefined; diff --git a/node-graph/README.md b/node-graph/README.md index 863f43c9..3f32f426 100644 --- a/node-graph/README.md +++ b/node-graph/README.md @@ -26,10 +26,10 @@ pub struct DocumentNode { Each `DocumentNode` is of a particular type, for example the "Opacity" node type. You can define your own type of document node in `editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/document_node_types.rs`. A sample document node type definition for the opacity node is shown: ```rs -DocumentNodeBlueprint { +DocumentNodeDefinition { name: "Opacity", category: "Image Adjustments", - identifier: NodeImplementation::proto("graphene_core::raster::OpacityNode<_>"), + implementation: NodeImplementation::proto("graphene_core::raster::OpacityNode<_>"), inputs: vec![ DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true), DocumentInputType::value("Factor", TaggedValue::F32(100.), false), @@ -136,7 +136,7 @@ The definition for the constructor of a node that applies the opacity transforma ```rs ( // Matches against the string defined in the document node. - NodeIdentifier::new("graphene_core::raster::OpacityNode<_>"), + ProtoNodeIdentifier::new("graphene_core::raster::OpacityNode<_>"), // This function is run when converting the `ProtoNode` struct into the desired struct. |args| { Box::pin(async move { diff --git a/node-graph/gcore/src/types.rs b/node-graph/gcore/src/types.rs index 428d1dd0..37255077 100644 --- a/node-graph/gcore/src/types.rs +++ b/node-graph/gcore/src/types.rs @@ -66,7 +66,7 @@ macro_rules! fn_type { #[derive(Clone, Debug, PartialEq, Eq, Hash, specta::Type)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct NodeIdentifier { +pub struct ProtoNodeIdentifier { pub name: Cow<'static, str>, } @@ -218,14 +218,14 @@ impl std::fmt::Display for Type { } } -impl From<&'static str> for NodeIdentifier { +impl From<&'static str> for ProtoNodeIdentifier { fn from(s: &'static str) -> Self { - NodeIdentifier { name: Cow::Borrowed(s) } + ProtoNodeIdentifier { name: Cow::Borrowed(s) } } } -impl NodeIdentifier { +impl ProtoNodeIdentifier { pub const fn new(name: &'static str) -> Self { - NodeIdentifier { name: Cow::Borrowed(name) } + ProtoNodeIdentifier { name: Cow::Borrowed(name) } } } diff --git a/node-graph/graph-craft/src/document.rs b/node-graph/graph-craft/src/document.rs index b04c3c9d..755f607e 100644 --- a/node-graph/graph-craft/src/document.rs +++ b/node-graph/graph-craft/src/document.rs @@ -1,6 +1,6 @@ use crate::document::value::TaggedValue; use crate::proto::{ConstructionArgs, ProtoNetwork, ProtoNode, ProtoNodeInput}; -use graphene_core::{GraphicGroup, NodeIdentifier, Type}; +use graphene_core::{GraphicGroup, ProtoNodeIdentifier, Type}; use dyn_any::{DynAny, StaticType}; use glam::IVec2; @@ -40,15 +40,17 @@ fn return_true() -> bool { true } +/// An instance of a [`DocumentNodeDefinition`] that has been instantiated in a [`NodeNetwork`]. +/// Currently, when an instance is made, it lives all on its own without any lasting connection to the definition. +/// But we will want to change it in the future so it merely references its definition. #[derive(Clone, Debug, PartialEq, Hash, DynAny)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct DocumentNode { - // TODO: Rename to "name" (also rename the TODOs in the `DocumentNodeBlueprint` struct) - /// A name chosen by the user for this node. Empty indicates no given name, in which case the node's identifier is displayed to the user in italics. + /// A name chosen by the user for this instance of the node. Empty indicates no given name, in which case the node definition's name is displayed to the user in italics. #[serde(default)] pub alias: String, - // TODO: Rename to "identifier" (also rename the TODOs in the `DocumentNodeBlueprint` struct) - /// An identifier used to display in the UI and to display the appropriate properties. + // TODO: Replace this name with a reference to the [`DocumentNodeDefinition`] node definition to use the name from there instead. + /// The name of the node definition, as originally set by [`DocumentNodeDefinition`], used to display in the UI and to display the appropriate properties. pub name: String, /// The inputs to a node, which are either: /// - From other nodes within this graph [`NodeInput::Node`], @@ -360,12 +362,12 @@ impl NodeInput { #[derive(Clone, Debug, PartialEq, Hash, DynAny)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -/// Represents the implementation of a node, which can be a nested [`NodeNetwork`], a proto [`NodeIdentifier`], or extract. +/// Represents the implementation of a node, which can be a nested [`NodeNetwork`], a proto [`ProtoNodeIdentifier`], or extract. pub enum DocumentNodeImplementation { /// A nested [`NodeNetwork`] that is flattened by the [`NodeNetwork::flatten`] function. Network(NodeNetwork), /// A protonode identifier which can be found in `node_registry.rs`. - Unresolved(NodeIdentifier), + Unresolved(ProtoNodeIdentifier), /// `DocumentNode`s with a `DocumentNodeImplementation::Extract` are converted into a `ClonedNode` that returns the `DocumentNode` specified by the single `NodeInput::Node`. /// The referenced node (specified by the single `NodeInput::Node`) is removed from the network, and any `NodeInput::Node`s used by the referenced node are replaced with a generically typed network input. Extract, @@ -373,7 +375,7 @@ pub enum DocumentNodeImplementation { impl Default for DocumentNodeImplementation { fn default() -> Self { - Self::Unresolved(NodeIdentifier::new("graphene_core::ops::IdentityNode")) + Self::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")) } } @@ -393,7 +395,7 @@ impl DocumentNodeImplementation { } pub const fn proto(name: &'static str) -> Self { - Self::Unresolved(NodeIdentifier::new(name)) + Self::Unresolved(ProtoNodeIdentifier::new(name)) } } @@ -527,7 +529,7 @@ impl NodeNetwork { name: "MemoNode".to_string(), manual_composition: Some(concrete!(())), inputs: vec![NodeInput::Network(ty)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::MemoNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode")), ..Default::default() }, ), @@ -536,7 +538,7 @@ impl NodeNetwork { DocumentNode { name: "CloneNode".to_string(), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::CloneNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::CloneNode<_>")), ..Default::default() }, ), @@ -983,7 +985,7 @@ impl NodeNetwork { .nodes .iter() .filter(|(_, node)| { - matches!(&node.implementation, DocumentNodeImplementation::Unresolved(ident) if ident == &NodeIdentifier::new("graphene_core::ops::IdentityNode")) + matches!(&node.implementation, DocumentNodeImplementation::Unresolved(ident) if ident == &ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")) && node.inputs.len() == 1 && matches!(node.inputs[0], NodeInput::Node { .. }) }) @@ -1115,7 +1117,7 @@ mod test { use super::*; use crate::proto::{ConstructionArgs, ProtoNetwork, ProtoNode, ProtoNodeInput}; - use graphene_core::NodeIdentifier; + use graphene_core::ProtoNodeIdentifier; fn gen_node_id() -> NodeId { static NODE_ID: AtomicU64 = AtomicU64::new(4); @@ -1366,7 +1368,7 @@ mod test { DocumentNode { name: "Identity 1".into(), inputs: vec![NodeInput::Network(concrete!(u32))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IdentityNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")), ..Default::default() }, ), @@ -1375,7 +1377,7 @@ mod test { DocumentNode { name: "Identity 2".into(), inputs: vec![NodeInput::Network(concrete!(u32))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IdentityNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")), ..Default::default() }, ), @@ -1405,7 +1407,7 @@ mod test { DocumentNode { name: "Result".into(), inputs: vec![result_node_input], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IdentityNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")), ..Default::default() }, ), diff --git a/node-graph/graph-craft/src/lib.rs b/node-graph/graph-craft/src/lib.rs index 066ae85f..19c9d831 100644 --- a/node-graph/graph-craft/src/lib.rs +++ b/node-graph/graph-craft/src/lib.rs @@ -3,7 +3,7 @@ extern crate log; #[macro_use] extern crate graphene_core; -pub use graphene_core::{concrete, generic, NodeIdentifier, Type, TypeDescriptor}; +pub use graphene_core::{concrete, generic, ProtoNodeIdentifier, Type, TypeDescriptor}; pub mod document; pub mod proto; diff --git a/node-graph/graph-craft/src/proto.rs b/node-graph/graph-craft/src/proto.rs index d2521510..558bf8fe 100644 --- a/node-graph/graph-craft/src/proto.rs +++ b/node-graph/graph-craft/src/proto.rs @@ -204,7 +204,7 @@ impl ConstructionArgs { pub struct ProtoNode { pub construction_args: ConstructionArgs, pub input: ProtoNodeInput, - pub identifier: NodeIdentifier, + pub identifier: ProtoNodeIdentifier, pub document_node_path: Vec, pub skip_deduplication: bool, /// Represents a global state on which the node depends. This is a hack, TODO: figure out a proper solution @@ -214,7 +214,7 @@ pub struct ProtoNode { impl Default for ProtoNode { fn default() -> Self { Self { - identifier: NodeIdentifier::new("graphene_core::ops::IdentityNode"), + identifier: ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode"), construction_args: ConstructionArgs::Value(value::TaggedValue::U32(0)), input: ProtoNodeInput::None, document_node_path: vec![], @@ -282,7 +282,7 @@ impl ProtoNode { /// Construct a new [`ProtoNode`] with the specified construction args and a `ClonedNode` implementation. pub fn value(value: ConstructionArgs, path: Vec) -> Self { Self { - identifier: NodeIdentifier::new("graphene_core::value::ClonedNode"), + identifier: ProtoNodeIdentifier::new("graphene_core::value::ClonedNode"), construction_args: value, input: ProtoNodeInput::None, document_node_path: path, @@ -395,7 +395,7 @@ impl ProtoNetwork { self.nodes.push(( compose_node_id, ProtoNode { - identifier: NodeIdentifier::new("graphene_core::structural::ComposeNode<_, _, _>"), + identifier: ProtoNodeIdentifier::new("graphene_core::structural::ComposeNode<_, _, _>"), construction_args: ConstructionArgs::Nodes(vec![(input_node_id, false), (node_id, true)]), input, document_node_path: path, @@ -541,14 +541,14 @@ impl ProtoNetwork { /// The `TypingContext` is used to store the types of the nodes indexed by their stable node id. #[derive(Default, Clone)] pub struct TypingContext { - lookup: Cow<'static, HashMap>>, + lookup: Cow<'static, HashMap>>, inferred: HashMap, constructor: HashMap, } impl TypingContext { /// Creates a new `TypingContext` with the given lookup table. - pub fn new(lookup: &'static HashMap>) -> Self { + pub fn new(lookup: &'static HashMap>) -> Self { Self { lookup: Cow::Borrowed(lookup), ..Default::default() diff --git a/node-graph/graphene-cli/src/main.rs b/node-graph/graphene-cli/src/main.rs index 56fb7066..83d9f4e3 100644 --- a/node-graph/graphene-cli/src/main.rs +++ b/node-graph/graphene-cli/src/main.rs @@ -8,7 +8,7 @@ use graph_craft::{ document::*, graphene_compiler::{Compiler, Executor}, imaginate_input::ImaginatePreferences, - NodeIdentifier, + ProtoNodeIdentifier, }; use graphene_core::{ application_io::{ApplicationIo, NodeGraphUpdateSender}, @@ -164,20 +164,20 @@ fn begin_scope() -> DocumentNode { DocumentNode { name: "SetNode".to_string(), manual_composition: Some(concrete!(WasmEditorApi)), - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::SomeNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::SomeNode")), ..Default::default() }, DocumentNode { name: "LetNode".to_string(), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::LetNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::LetNode<_>")), ..Default::default() }, DocumentNode { name: "RefNode".to_string(), manual_composition: Some(concrete!(WasmEditorApi)), inputs: vec![NodeInput::lambda(1, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::memo::RefNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::memo::RefNode<_, _>")), ..Default::default() }, ] diff --git a/node-graph/gstd/src/gpu_nodes.rs b/node-graph/gstd/src/gpu_nodes.rs index 63c6e4f7..0bfff3ee 100644 --- a/node-graph/gstd/src/gpu_nodes.rs +++ b/node-graph/gstd/src/gpu_nodes.rs @@ -381,9 +381,9 @@ pub struct MapGpuSingleImageNode { #[node_macro::node_fn(MapGpuSingleImageNode)] fn map_gpu_single_image(input: Image, node: String) -> Image { use graph_craft::document::*; - use graph_craft::NodeIdentifier; + use graph_craft::ProtoNodeIdentifier; - let identifier = NodeIdentifier { name: std::borrow::Cow::Owned(node) }; + let identifier = ProtoNodeIdentifier { name: std::borrow::Cow::Owned(node) }; let network = NodeNetwork { inputs: vec![0], diff --git a/node-graph/interpreted-executor/src/lib.rs b/node-graph/interpreted-executor/src/lib.rs index 4d8070d9..35169599 100644 --- a/node-graph/interpreted-executor/src/lib.rs +++ b/node-graph/interpreted-executor/src/lib.rs @@ -24,7 +24,7 @@ mod tests { DocumentNode { name: "Cons".into(), inputs: vec![NodeInput::Network(concrete!(u32)), NodeInput::Network(concrete!(&u32))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::structural::ConsNode<_, _>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::structural::ConsNode<_, _>")), ..Default::default() }, ), @@ -33,7 +33,7 @@ mod tests { DocumentNode { name: "Add".into(), inputs: vec![NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::AddPairNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::AddPairNode")), ..Default::default() }, ), @@ -95,7 +95,7 @@ mod tests { DocumentNode { name: "id".into(), inputs: vec![NodeInput::Network(concrete!(u32))], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::IdentityNode")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode")), ..Default::default() }, ), @@ -105,7 +105,7 @@ mod tests { DocumentNode { name: "Add".into(), inputs: vec![NodeInput::node(0, 0), NodeInput::node(0, 0)], - implementation: DocumentNodeImplementation::Unresolved(NodeIdentifier::new("graphene_core::ops::AddNode<_>")), + implementation: DocumentNodeImplementation::Unresolved(ProtoNodeIdentifier::new("graphene_core::ops::AddNode<_>")), ..Default::default() }, ), diff --git a/node-graph/interpreted-executor/src/node_registry.rs b/node-graph/interpreted-executor/src/node_registry.rs index 2da19785..cfee5d7a 100644 --- a/node-graph/interpreted-executor/src/node_registry.rs +++ b/node-graph/interpreted-executor/src/node_registry.rs @@ -13,7 +13,7 @@ use graphene_core::vector::VectorData; use graphene_core::{application_io::SurfaceHandle, SurfaceFrame, WasmSurfaceHandleFrame}; use graphene_core::{concrete, generic, Artboard, GraphicGroup}; use graphene_core::{fn_type, raster::*}; -use graphene_core::{Cow, NodeIdentifier, Type}; +use graphene_core::{Cow, ProtoNodeIdentifier, Type}; use graphene_core::{Node, NodeIO, NodeIOTypes}; use graphene_std::any::{ComposeTypeErased, DowncastBothNode, DynAnyNode, FutureWrapperNode, IntoTypeErasedNode}; use graphene_std::wasm_application_io::*; @@ -55,7 +55,7 @@ macro_rules! register_node { ($path:ty, input: $input:ty, fn_params: [ $($arg:ty => $type:ty),*]) => { vec![ ( - NodeIdentifier::new(stringify!($path)), + ProtoNodeIdentifier::new(stringify!($path)), |args| { Box::pin(async move { let node = construct_node!(args, $path, [$($arg => $type),*]).await; @@ -86,7 +86,7 @@ macro_rules! async_node { ($path:ty, input: $input:ty, output: $output:ty, fn_params: [ $($arg:ty => $type:ty),*]) => { vec![ ( - NodeIdentifier::new(stringify!($path)), + ProtoNodeIdentifier::new(stringify!($path)), |mut args| { Box::pin(async move { args.reverse(); @@ -122,10 +122,10 @@ macro_rules! raster_node { // optimization purposes. #[cfg_attr(debug_assertions, inline(never))] #[cfg_attr(not(debug_assertions), inline)] - fn generate_triples() -> Vec<(NodeIdentifier, NodeConstructor, NodeIOTypes)> { + fn generate_triples() -> Vec<(ProtoNodeIdentifier, NodeConstructor, NodeIOTypes)> { vec![ ( - NodeIdentifier::new(stringify!($path)), + ProtoNodeIdentifier::new(stringify!($path)), |args| { Box::pin(async move { let node = construct_node!(args, $path, [$(() => $type),*]).await; @@ -140,7 +140,7 @@ macro_rules! raster_node { }, ), ( - NodeIdentifier::new(stringify!($path)), + ProtoNodeIdentifier::new(stringify!($path)), |args| { Box::pin(async move { let node = construct_node!(args, $path, [$(() => $type),*]).await; @@ -156,7 +156,7 @@ macro_rules! raster_node { }, ), ( - NodeIdentifier::new(stringify!($path)), + ProtoNodeIdentifier::new(stringify!($path)), |args| { Box::pin(async move { let node = construct_node!(args, $path, [$(() => $type),*]).await; @@ -178,11 +178,11 @@ macro_rules! raster_node { } //TODO: turn into hashmap -fn node_registry() -> HashMap> { - let node_types: Vec> = vec![ +fn node_registry() -> HashMap> { + let node_types: Vec> = vec![ //register_node!(graphene_core::ops::IdentityNode, input: Any<'_>, params: []), vec![( - NodeIdentifier::new("graphene_core::ops::IdentityNode"), + ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode"), |_| Box::pin(async move { FutureWrapperNode::new(IdentityNode::new()).into_type_erased() }), NodeIOTypes::new(generic!(I), generic!(I), vec![]), )], @@ -284,7 +284,7 @@ fn node_registry() -> HashMap, input: ImageFrame, params: [ImageFrame, RedGreenBlue]), register_node!(graphene_std::raster::InsertChannelNode<_, _, _, _>, input: ImageFrame, params: [ImageFrame, RedGreenBlue]), vec![( - NodeIdentifier::new("graphene_std::raster::CombineChannelsNode"), + ProtoNodeIdentifier::new("graphene_std::raster::CombineChannelsNode"), |args| { Box::pin(async move { use graphene_core::raster::*; @@ -380,7 +380,7 @@ fn node_registry() -> HashMap"), + ProtoNodeIdentifier::new("graphene_std::executor::MapGpuSingleImageNode<_>"), |args| { Box::pin(async move { let document_node: DowncastBothNode<(), graph_craft::document::DocumentNode> = DowncastBothNode::new(args[0].clone()); @@ -399,7 +399,7 @@ fn node_registry() -> HashMap"), + ProtoNodeIdentifier::new("graphene_std::executor::BlendGpuImageNode<_, _, _>"), |args| { Box::pin(async move { let background: DowncastBothNode<(), ImageFrame> = DowncastBothNode::new(args[0].clone()); @@ -418,7 +418,7 @@ fn node_registry() -> HashMap"), + ProtoNodeIdentifier::new("graphene_core::structural::ComposeNode<_, _, _>"), |args| { Box::pin(async move { let node = ComposeTypeErased::new(args[0].clone(), args[1].clone()); @@ -446,7 +446,7 @@ fn node_registry() -> HashMap, input: ImageFrame, params: [Color]), register_node!(graphene_core::raster::adjustments::ColorOverlayNode<_, _, _>, input: ImageFrame, params: [Color, BlendMode, f32]), vec![( - NodeIdentifier::new("graphene_core::raster::BlendNode<_, _, _, _>"), + ProtoNodeIdentifier::new("graphene_core::raster::BlendNode<_, _, _, _>"), |args| { Box::pin(async move { let image: DowncastBothNode<(), ImageFrame> = DowncastBothNode::new(args[0].clone()); @@ -478,7 +478,7 @@ fn node_registry() -> HashMap"), + ProtoNodeIdentifier::new("graphene_core::raster::BrightnessContrastNode<_, _, _>"), |args| { Box::pin(async move { use graphene_core::raster::brightness_contrast::*; @@ -508,7 +508,7 @@ fn node_registry() -> HashMap"), + ProtoNodeIdentifier::new("graphene_core::raster::CurvesNode<_>"), |args| { use graphene_core::raster::{curve::Curve, GenerateCurvesNode}; let curve: DowncastBothNode<(), Curve> = DowncastBothNode::new(args[0].clone()); @@ -526,7 +526,7 @@ fn node_registry() -> HashMap"), + ProtoNodeIdentifier::new("graphene_core::raster::CurvesNode<_>"), |args| { use graphene_core::raster::{curve::Curve, GenerateCurvesNode}; let curve: DowncastBothNode<(), Curve> = DowncastBothNode::new(args[0].clone()); @@ -584,7 +584,7 @@ fn node_registry() -> HashMap, input: WasmEditorApi, output: SurfaceFrame, params: [SurfaceFrame]), vec![ ( - NodeIdentifier::new("graphene_core::memo::RefNode<_, _>"), + ProtoNodeIdentifier::new("graphene_core::memo::RefNode<_, _>"), |args| { Box::pin(async move { let node: DowncastBothNode, WasmEditorApi> = graphene_std::any::DowncastBothNode::new(args[0].clone()); @@ -597,7 +597,7 @@ fn node_registry() -> HashMap, WasmEditorApi)]), ), ( - NodeIdentifier::new("graphene_std::raster::ImaginateNode<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>"), + ProtoNodeIdentifier::new("graphene_std::raster::ImaginateNode<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>"), |args: Vec| { Box::pin(async move { use graphene_std::raster::ImaginateNode; @@ -669,7 +669,7 @@ fn node_registry() -> HashMap, input: , output: RenderOutput, fn_params: [Footprint => GraphicGroup, () => Arc]), vec![ ( - NodeIdentifier::new("graphene_core::transform::TransformNode<_, _, _, _, _, _>"), + ProtoNodeIdentifier::new("graphene_core::transform::TransformNode<_, _, _, _, _, _>"), |mut args| { Box::pin(async move { args.reverse(); @@ -691,7 +691,7 @@ fn node_registry() -> HashMap"), + ProtoNodeIdentifier::new("graphene_core::transform::TransformNode<_, _, _, _, _, _>"), |mut args| { Box::pin(async move { args.reverse(); @@ -720,7 +720,7 @@ fn node_registry() -> HashMap"), + ProtoNodeIdentifier::new("graphene_core::transform::TransformNode<_, _, _, _, _, _>"), |mut args| { Box::pin(async move { args.reverse(); @@ -749,7 +749,7 @@ fn node_registry() -> HashMap"), + ProtoNodeIdentifier::new("graphene_core::transform::TransformNode<_, _, _, _, _, _>"), |mut args| { Box::pin(async move { const EXPECT_MESSAGE: &str = "Not enough arguments provided to construct node"; @@ -785,7 +785,7 @@ fn node_registry() -> HashMap, input: VectorData, params: [f32, f32, u32]), vec![( - NodeIdentifier::new("graphene_core::transform::CullNode<_>"), + ProtoNodeIdentifier::new("graphene_core::transform::CullNode<_>"), |args| { Box::pin(async move { let mut args = args.clone(); @@ -806,7 +806,7 @@ fn node_registry() -> HashMap, input: Footprint, params: [Artboard]), register_node!(graphene_core::transform::CullNode<_>, input: Footprint, params: [ImageFrame]), vec![( - NodeIdentifier::new("graphene_core::transform::CullNode<_>"), + ProtoNodeIdentifier::new("graphene_core::transform::CullNode<_>"), |args| { Box::pin(async move { let mut args = args.clone(); @@ -850,19 +850,19 @@ fn node_registry() -> HashMap, input: Footprint, output: Artboard, fn_params: [Footprint => GraphicGroup, () => glam::IVec2, () => glam::IVec2, () => Color, () => bool]), ]; - let mut map: HashMap> = HashMap::new(); + let mut map: HashMap> = HashMap::new(); for (id, c, types) in node_types.into_iter().flatten() { // TODO: this is a hack to remove the newline from the node new_name // This occurs for the ChannelMixerNode presumably because of the long name. // This might be caused by the stringify! macro let new_name = id.name.replace('\n', " "); - let nid = NodeIdentifier { name: Cow::Owned(new_name) }; + let nid = ProtoNodeIdentifier { name: Cow::Owned(new_name) }; map.entry(nid).or_default().insert(types.clone(), c); } map } -pub static NODE_REGISTRY: Lazy>> = Lazy::new(|| node_registry()); +pub static NODE_REGISTRY: Lazy>> = Lazy::new(|| node_registry()); #[cfg(test)] mod protograph_testing { diff --git a/node-graph/vulkan-executor/src/executor.rs b/node-graph/vulkan-executor/src/executor.rs index 632e4922..10af32e6 100644 --- a/node-graph/vulkan-executor/src/executor.rs +++ b/node-graph/vulkan-executor/src/executor.rs @@ -116,7 +116,7 @@ fn create_buffer(data: Vec, alloc: &StandardMemoryAlloc // TODO: Fix this test // #[cfg(test)] // mod test { -// use graph_craft::proto::{ConstructionArgs, NodeIdentifier, ProtoNetwork, ProtoNode, ProtoNodeInput, Type}; +// use graph_craft::proto::{ConstructionArgs, ProtoNodeIdentifier, ProtoNetwork, ProtoNode, ProtoNodeInput, Type}; // use graph_craft::{concrete, generic}; // fn inc_network() -> ProtoNetwork { @@ -127,7 +127,7 @@ fn create_buffer(data: Vec, alloc: &StandardMemoryAlloc // ( // 1, // ProtoNode { -// identifier: NodeIdentifier::new("graphene_core::ops::IdentityNode", &[generic!("u32")]), +// identifier: ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode", &[generic!("u32")]), // input: ProtoNodeInput::Node(11), // construction_args: ConstructionArgs::Nodes(vec![]), // }, @@ -135,7 +135,7 @@ fn create_buffer(data: Vec, alloc: &StandardMemoryAlloc // ( // 10, // ProtoNode { -// identifier: NodeIdentifier::new("graphene_core::structural::ConsNode", &[generic!("&ValueNode"), generic!("()")]), +// identifier: ProtoNodeIdentifier::new("graphene_core::structural::ConsNode", &[generic!("&ValueNode"), generic!("()")]), // input: ProtoNodeInput::Network, // construction_args: ConstructionArgs::Nodes(vec![14]), // }, @@ -143,7 +143,7 @@ fn create_buffer(data: Vec, alloc: &StandardMemoryAlloc // ( // 11, // ProtoNode { -// identifier: NodeIdentifier::new("graphene_core::ops::AddPairNode", &[generic!("u32"), generic!("u32")]), +// identifier: ProtoNodeIdentifier::new("graphene_core::ops::AddPairNode", &[generic!("u32"), generic!("u32")]), // input: ProtoNodeInput::Node(10), // construction_args: ConstructionArgs::Nodes(vec![]), // }, @@ -151,7 +151,7 @@ fn create_buffer(data: Vec, alloc: &StandardMemoryAlloc // ( // 14, // ProtoNode { -// identifier: NodeIdentifier::new("graphene_core::value::ValueNode", &[concrete!("u32")]), +// identifier: ProtoNodeIdentifier::new("graphene_core::value::ValueNode", &[concrete!("u32")]), // input: ProtoNodeInput::None, // construction_args: ConstructionArgs::Value(Box::new(3_u32)), // }, diff --git a/node-graph/wgpu-executor/src/executor.rs b/node-graph/wgpu-executor/src/executor.rs index b7ace879..6502691f 100644 --- a/node-graph/wgpu-executor/src/executor.rs +++ b/node-graph/wgpu-executor/src/executor.rs @@ -209,7 +209,7 @@ async fn execute_shader(device: Arc< // ( // 1, // ProtoNode { -// identifier: NodeIdentifier::new("graphene_core::ops::IdentityNode", &[generic!("u32")]), +// identifier: ProtoNodeIdentifier::new("graphene_core::ops::IdentityNode", &[generic!("u32")]), // input: ProtoNodeInput::Node(11), // construction_args: ConstructionArgs::Nodes(vec![]), // }, @@ -217,7 +217,7 @@ async fn execute_shader(device: Arc< // ( // 10, // ProtoNode { -// identifier: NodeIdentifier::new("graphene_core::structural::ConsNode", &[generic!("&ValueNode"), generic!("()")]), +// identifier: ProtoNodeIdentifier::new("graphene_core::structural::ConsNode", &[generic!("&ValueNode"), generic!("()")]), // input: ProtoNodeInput::Network, // construction_args: ConstructionArgs::Nodes(vec![14]), // }, @@ -225,7 +225,7 @@ async fn execute_shader(device: Arc< // ( // 11, // ProtoNode { -// identifier: NodeIdentifier::new("graphene_core::ops::AddPairNode", &[generic!("u32"), generic!("u32")]), +// identifier: ProtoNodeIdentifier::new("graphene_core::ops::AddPairNode", &[generic!("u32"), generic!("u32")]), // input: ProtoNodeInput::Node(10), // construction_args: ConstructionArgs::Nodes(vec![]), // }, @@ -233,7 +233,7 @@ async fn execute_shader(device: Arc< // ( // 14, // ProtoNode { -// identifier: NodeIdentifier::new("graphene_core::value::ValueNode", &[concrete!("u32")]), +// identifier: ProtoNodeIdentifier::new("graphene_core::value::ValueNode", &[concrete!("u32")]), // input: ProtoNodeInput::None, // construction_args: ConstructionArgs::Value(Box::new(3_u32)), // },