diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index 8cdb18e959..c91d353c7b 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -1371,7 +1371,7 @@ impl MessageHandler> for DocumentMes // Connect the current output data to the artboard's input data, and the artboard's output to the document output responses.add(NodeGraphMessage::InsertNodeBetween { node_id, - input_connector: network_interface::InputConnector::Export(0), + input_connector: network_interface::InputConnector::Export(network_interface::InputConnector::PRIMARY_INPUT_INDEX), insert_node_input_index: 1, }); @@ -1896,8 +1896,13 @@ impl DocumentMessageHandler { }); // If there's already a boolean operation on the selected layer, update it with the new operation + const BOOLEAN_OPERATION_INPUT_INDEX: usize = 1; if let (Some(upstream_boolean_op), Some(only_selected_layer)) = (upstream_boolean_op, only_selected_layer) { - network_interface.set_input(&InputConnector::node(upstream_boolean_op, 1), NodeInput::value(TaggedValue::BooleanOperation(operation), false), &[]); + network_interface.set_input( + &InputConnector::node(upstream_boolean_op, BOOLEAN_OPERATION_INPUT_INDEX), + NodeInput::value(TaggedValue::BooleanOperation(operation), false), + &[], + ); responses.add(NodeGraphMessage::RunDocumentGraph); @@ -2787,7 +2792,7 @@ impl DocumentMessageHandler { // Showing only compatible types for the layer based on the output type of the node upstream from its horizontal input let compatible_type = selected_layer.and_then(|layer| { self.network_interface - .upstream_output_connector(&InputConnector::node(layer.to_node(), 1), &[]) + .upstream_output_connector(&InputConnector::node(layer.to_node(), InputConnector::PRIMARY_INPUT_INDEX + 1), &[]) .and_then(|upstream_output| self.network_interface.output_type(&upstream_output, &[]).add_node_string()) }); diff --git a/editor/src/messages/portfolio/document/graph_operation/graph_operation_message_handler.rs b/editor/src/messages/portfolio/document/graph_operation/graph_operation_message_handler.rs index 1f6ed6fad1..37e3d687f4 100644 --- a/editor/src/messages/portfolio/document/graph_operation/graph_operation_message_handler.rs +++ b/editor/src/messages/portfolio/document/graph_operation/graph_operation_message_handler.rs @@ -16,6 +16,11 @@ use graphene_std::table::Table; use graphene_std::text::{Font, TypesettingConfig}; use graphene_std::vector::style::{Fill, Gradient, GradientStop, GradientStops, GradientType, PaintOrder, Stroke, StrokeAlign, StrokeCap, StrokeJoin}; +const ARTBOARD_BASE_INDEX: usize = 0; +const ARTBOARD_CONTENT_INDEX: usize = 1; +const LAYER_SECONDARY_INPUT_INDEX: usize = 1; +const MERGE_CONTENT_INPUT_INDEX: usize = 1; + #[derive(ExtractField)] pub struct GraphOperationMessageContext<'a> { pub network_interface: &'a mut NodeNetworkInterface, @@ -101,7 +106,7 @@ impl MessageHandler> for } } GraphOperationMessage::SetUpstreamToChain { layer } => { - let Some(OutputConnector::Node { node_id: first_chain_node, .. }) = network_interface.upstream_output_connector(&InputConnector::node(layer.to_node(), 1), &[]) else { + let Some(OutputConnector::Node { node_id: first_chain_node, .. }) = network_interface.upstream_output_connector(&InputConnector::node(layer.to_node(), LAYER_SECONDARY_INPUT_INDEX), &[]) else { return; }; @@ -145,15 +150,15 @@ impl MessageHandler> for // Set the bottom input of the artboard back to artboard let bottom_input = NodeInput::value(TaggedValue::Artboard(Table::new()), true); - network_interface.set_input(&InputConnector::node(artboard_layer.to_node(), 0), bottom_input, &[]); + network_interface.set_input(&InputConnector::node(artboard_layer.to_node(), ARTBOARD_BASE_INDEX), bottom_input, &[]); } else { // We have some non layers (e.g. just a rectangle node). We disconnect the bottom input and connect it to the left input. - network_interface.disconnect_input(&InputConnector::node(artboard_layer.to_node(), 0), &[]); - network_interface.set_input(&InputConnector::node(artboard_layer.to_node(), 1), primary_input, &[]); + network_interface.disconnect_input(&InputConnector::node(artboard_layer.to_node(), ARTBOARD_BASE_INDEX), &[]); + network_interface.set_input(&InputConnector::node(artboard_layer.to_node(), ARTBOARD_CONTENT_INDEX), primary_input, &[]); // Set the bottom input of the artboard back to artboard let bottom_input = NodeInput::value(TaggedValue::Artboard(Table::new()), true); - network_interface.set_input(&InputConnector::node(artboard_layer.to_node(), 0), bottom_input, &[]); + network_interface.set_input(&InputConnector::node(artboard_layer.to_node(), ARTBOARD_BASE_INDEX), bottom_input, &[]); } } responses.add_front(NodeGraphMessage::SelectedNodesSet { nodes: vec![id] }); @@ -194,8 +199,8 @@ impl MessageHandler> for responses.add(NodeGraphMessage::AddNodes { nodes, new_ids }); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(layer.to_node(), 1), - input: NodeInput::node(first_new_node_id, 0), + input_connector: InputConnector::node(layer.to_node(), LAYER_SECONDARY_INPUT_INDEX), + input: NodeInput::node(first_new_node_id, NodeInput::PRIMARY_OUTPUT_INDEX), }); } // Move the layer and all nodes to the correct position in the network @@ -251,13 +256,13 @@ impl MessageHandler> for return; }; - artboard_data.insert( - artboard.to_node(), - ArtboardInfo { - input_node: NodeInput::node(document_node.inputs[1].as_node().unwrap_or_default(), 0), + artboard_data.insert( + artboard.to_node(), + ArtboardInfo { + input_node: NodeInput::node(document_node.inputs[ARTBOARD_CONTENT_INDEX].as_node().unwrap_or_default(), NodeInput::PRIMARY_OUTPUT_INDEX), output_nodes: network_interface .outward_wires(&[]) - .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(artboard.to_node(), 0))) + .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(artboard.to_node(), OutputConnector::PRIMARY_OUTPUT_INDEX))) .cloned() .unwrap_or_default(), merge_node: node_id, @@ -282,13 +287,13 @@ impl MessageHandler> for for artboard in &artboard_data { // Modify downstream connections responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(artboard.1.merge_node, 1), - input: NodeInput::node(artboard.1.input_node.as_node().unwrap_or_default(), 0), + input_connector: InputConnector::node(artboard.1.merge_node, MERGE_CONTENT_INPUT_INDEX), + input: NodeInput::node(artboard.1.input_node.as_node().unwrap_or_default(), NodeInput::PRIMARY_OUTPUT_INDEX), }); // Modify upstream connections for outward_wire in &artboard.1.output_nodes { - let input = NodeInput::node(artboard_data[artboard.0].merge_node, 0); + let input = NodeInput::node(artboard_data[artboard.0].merge_node, NodeInput::PRIMARY_OUTPUT_INDEX); let input_connector = match artboard_data.get(&outward_wire.node_id().unwrap_or_default()) { Some(artboard_info) => InputConnector::node(artboard_info.merge_node, outward_wire.input_index()), _ => *outward_wire, diff --git a/editor/src/messages/portfolio/document/graph_operation/transform_utils.rs b/editor/src/messages/portfolio/document/graph_operation/transform_utils.rs index db4e110e77..ebf21a75e2 100644 --- a/editor/src/messages/portfolio/document/graph_operation/transform_utils.rs +++ b/editor/src/messages/portfolio/document/graph_operation/transform_utils.rs @@ -2,7 +2,9 @@ use crate::messages::portfolio::document::utility_types::network_interface::{Inp use glam::{DAffine2, DVec2}; use graph_craft::document::value::TaggedValue; use graph_craft::document::{NodeId, NodeInput}; +use graphene_std::NodeInputDecleration; use graphene_std::subpath::Subpath; +use graphene_std::transform_nodes::transform::*; use graphene_std::vector::PointId; /// Convert an affine transform into the tuple `(scale, angle, translation, shear)` assuming `shear.y = 0`. @@ -37,10 +39,10 @@ pub fn update_transform(network_interface: &mut NodeNetworkInterface, node_id: & let rotation = rotation.to_degrees(); let shear = DVec2::new(shear.x.atan().to_degrees(), shear.y.atan().to_degrees()); - network_interface.set_input(&InputConnector::node(*node_id, 1), NodeInput::value(TaggedValue::DVec2(translation), false), &[]); - network_interface.set_input(&InputConnector::node(*node_id, 2), NodeInput::value(TaggedValue::F64(rotation), false), &[]); - network_interface.set_input(&InputConnector::node(*node_id, 3), NodeInput::value(TaggedValue::DVec2(scale), false), &[]); - network_interface.set_input(&InputConnector::node(*node_id, 4), NodeInput::value(TaggedValue::DVec2(shear), false), &[]); + network_interface.set_input(&InputConnector::node(*node_id, TranslationInput::INDEX), NodeInput::value(TaggedValue::DVec2(translation), false), &[]); + network_interface.set_input(&InputConnector::node(*node_id, RotationInput::INDEX), NodeInput::value(TaggedValue::F64(rotation), false), &[]); + network_interface.set_input(&InputConnector::node(*node_id, ScaleInput::INDEX), NodeInput::value(TaggedValue::DVec2(scale), false), &[]); + network_interface.set_input(&InputConnector::node(*node_id, SkewInput::INDEX), NodeInput::value(TaggedValue::DVec2(shear), false), &[]); } // TODO: This should be extracted from the graph at the location of the transform node. @@ -74,14 +76,26 @@ impl LayerBounds { /// Get the current affine transform from the transform node's inputs pub fn get_current_transform(inputs: &[NodeInput]) -> DAffine2 { - let translation = if let Some(&TaggedValue::DVec2(translation)) = inputs[1].as_value() { + let translation = if let Some(&TaggedValue::DVec2(translation)) = inputs[TranslationInput::INDEX].as_value() { translation } else { DVec2::ZERO }; - let rotation = if let Some(&TaggedValue::F64(rotation)) = inputs[2].as_value() { rotation } else { 0. }; - let scale = if let Some(&TaggedValue::DVec2(scale)) = inputs[3].as_value() { scale } else { DVec2::ONE }; - let shear = if let Some(&TaggedValue::DVec2(shear)) = inputs[4].as_value() { shear } else { DVec2::ZERO }; + let rotation = if let Some(&TaggedValue::F64(rotation)) = inputs[RotationInput::INDEX].as_value() { + rotation + } else { + 0. + }; + let scale = if let Some(&TaggedValue::DVec2(scale)) = inputs[ScaleInput::INDEX].as_value() { + scale + } else { + DVec2::ONE + }; + let shear = if let Some(&TaggedValue::DVec2(shear)) = inputs[SkewInput::INDEX].as_value() { + shear + } else { + DVec2::ZERO + }; let rotation = rotation.to_radians(); let shear = DVec2::new(shear.x.to_radians().tan(), shear.y.to_radians().tan()); @@ -89,9 +103,15 @@ pub fn get_current_transform(inputs: &[NodeInput]) -> DAffine2 { DAffine2::from_scale_angle_translation(scale, rotation, translation) * DAffine2::from_cols_array(&[1., shear.y, shear.x, 1., 0., 0.]) } +const ORIGIN_OFFSET_INDEX: usize = 5; + /// Extract the current normalized pivot from the layer pub fn get_current_normalized_pivot(inputs: &[NodeInput]) -> DVec2 { - if let Some(&TaggedValue::DVec2(pivot)) = inputs[5].as_value() { pivot } else { DVec2::splat(0.5) } + if let Some(&TaggedValue::DVec2(pivot)) = inputs[ORIGIN_OFFSET_INDEX].as_value() { + pivot + } else { + DVec2::splat(0.5) + } } /// Expand a bounds to avoid div zero errors diff --git a/editor/src/messages/portfolio/document/graph_operation/utility_types.rs b/editor/src/messages/portfolio/document/graph_operation/utility_types.rs index f74fb67c15..938ad997e0 100644 --- a/editor/src/messages/portfolio/document/graph_operation/utility_types.rs +++ b/editor/src/messages/portfolio/document/graph_operation/utility_types.rs @@ -35,6 +35,14 @@ pub struct ModifyInputsContext<'a> { pub layer_node: Option, } +const LAYER_SECONDARY_INPUT_INDEX: usize = 1; +const BRUSH_STROKES_INDEX: usize = 1; +const ARTBOARD_LOCATION_INDEX: usize = 2; +const ARTBOARD_DIMENSIONS_INDEX: usize = 3; +const FILL_NODE_FILL_INPUT_INDEX: usize = 1; +const FILL_NODE_BACKUP_COLOR_INPUT_INDEX: usize = 2; +const FILL_NODE_BACKUP_GRADIENT_INPUT_INDEX: usize = 3; + impl<'a> ModifyInputsContext<'a> { /// Get the node network from the document pub fn new(network_interface: &'a mut NodeNetworkInterface, responses: &'a mut VecDeque) -> Self { @@ -69,9 +77,9 @@ impl<'a> ModifyInputsContext<'a> { /// if insert_index == 3, return (Layer3, None) pub fn get_post_node_with_index(network_interface: &NodeNetworkInterface, parent: LayerNodeIdentifier, insert_index: usize) -> InputConnector { let mut post_node_input_connector = if parent == LayerNodeIdentifier::ROOT_PARENT { - InputConnector::Export(0) + InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX) } else { - InputConnector::node(parent.to_node(), 1) + InputConnector::node(parent.to_node(), LAYER_SECONDARY_INPUT_INDEX) }; // Skip layers based on skip_layer_nodes, which inserts the new layer at a certain index of the layer stack. let mut current_index = 0; @@ -91,7 +99,7 @@ impl<'a> ModifyInputsContext<'a> { current_index += 1; } // Input as a sibling to the Layer node above - post_node_input_connector = InputConnector::node(*next_node_in_stack_id, 0); + post_node_input_connector = InputConnector::node(*next_node_in_stack_id, InputConnector::PRIMARY_INPUT_INDEX); } else { log::error!("Error getting post node: insert_index out of bounds"); break; @@ -107,7 +115,7 @@ impl<'a> ModifyInputsContext<'a> { match pre_node_output_connector { Some(OutputConnector::Node { node_id: pre_node_id, .. }) if !network_interface.is_layer(&pre_node_id, &[]) => { // Update post_node_input_connector for the next iteration - post_node_input_connector = InputConnector::node(pre_node_id, 0); + post_node_input_connector = InputConnector::node(pre_node_id, InputConnector::PRIMARY_INPUT_INDEX); // Insert directly under layer if moving to the end of a layer stack that ends with a non layer node that does not have an exposed primary input let primary_is_exposed = network_interface.input_from_connector(&post_node_input_connector, &[]).is_some_and(|input| input.is_exposed()); if !primary_is_exposed { @@ -320,7 +328,7 @@ impl<'a> ModifyInputsContext<'a> { // If inserting a 'Path' node, insert a 'Flatten Path' node if the type is `Graphic`. // TODO: Allow the 'Path' node to operate on table data by utilizing the reference (index or ID?) for each row. if node_definition.identifier == "Path" { - let layer_input_type = self.network_interface.input_type(&InputConnector::node(output_layer.to_node(), 1), &[]); + let layer_input_type = self.network_interface.input_type(&InputConnector::node(output_layer.to_node(), LAYER_SECONDARY_INPUT_INDEX), &[]); if layer_input_type.compiled_nested_type() == Some(&concrete!(Table)) { let Some(flatten_path_definition) = resolve_proto_node_type(graphene_std::vector_nodes::flatten_path::IDENTIFIER) else { log::error!("Flatten Path does not exist in ModifyInputsContext::existing_node_id"); @@ -338,28 +346,24 @@ impl<'a> ModifyInputsContext<'a> { } pub fn fill_set(&mut self, fill: Fill) { - let fill_index = 1; - let backup_color_index = 2; - let backup_gradient_index = 3; - let Some(fill_node_id) = self.existing_proto_node_id(graphene_std::vector_nodes::fill::IDENTIFIER, true) else { return; }; match &fill { Fill::None => { - let input_connector = InputConnector::node(fill_node_id, backup_color_index); + let input_connector = InputConnector::node(fill_node_id, FILL_NODE_BACKUP_COLOR_INPUT_INDEX); self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::Color(Table::new()), false), true); } Fill::Solid(color) => { - let input_connector = InputConnector::node(fill_node_id, backup_color_index); + let input_connector = InputConnector::node(fill_node_id, FILL_NODE_BACKUP_COLOR_INPUT_INDEX); self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::Color(Table::new_from_element(*color)), false), true); } Fill::Gradient(gradient) => { - let input_connector = InputConnector::node(fill_node_id, backup_gradient_index); + let input_connector = InputConnector::node(fill_node_id, FILL_NODE_BACKUP_GRADIENT_INPUT_INDEX); self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::Gradient(gradient.clone()), false), true); } } - let input_connector = InputConnector::node(fill_node_id, fill_index); + let input_connector = InputConnector::node(fill_node_id, FILL_NODE_FILL_INPUT_INDEX); self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::Fill(fill), false), false); } @@ -367,7 +371,7 @@ impl<'a> ModifyInputsContext<'a> { let Some(blend_node_id) = self.existing_proto_node_id(graphene_std::blending_nodes::blending::IDENTIFIER, true) else { return; }; - let input_connector = InputConnector::node(blend_node_id, 1); + let input_connector = InputConnector::node(blend_node_id, graphene_std::blending_nodes::blending::BlendModeInput::INDEX); self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::BlendMode(blend_mode), false), false); } @@ -375,7 +379,7 @@ impl<'a> ModifyInputsContext<'a> { let Some(blend_node_id) = self.existing_proto_node_id(graphene_std::blending_nodes::blending::IDENTIFIER, true) else { return; }; - let input_connector = InputConnector::node(blend_node_id, 2); + let input_connector = InputConnector::node(blend_node_id, graphene_std::blending_nodes::blending::OpacityInput::INDEX); self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::F64(opacity * 100.), false), false); } @@ -383,7 +387,7 @@ impl<'a> ModifyInputsContext<'a> { let Some(blend_node_id) = self.existing_proto_node_id(graphene_std::blending_nodes::blending::IDENTIFIER, true) else { return; }; - let input_connector = InputConnector::node(blend_node_id, 3); + let input_connector = InputConnector::node(blend_node_id, graphene_std::blending_nodes::blending::FillInput::INDEX); self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::F64(fill * 100.), false), false); } @@ -392,7 +396,7 @@ impl<'a> ModifyInputsContext<'a> { let Some(clip_node_id) = self.existing_proto_node_id(graphene_std::blending_nodes::blending::IDENTIFIER, true) else { return; }; - let input_connector = InputConnector::node(clip_node_id, 4); + let input_connector = InputConnector::node(clip_node_id, graphene_std::blending_nodes::blending::ClipInput::INDEX); self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::Bool(clip), false), false); } @@ -505,7 +509,11 @@ impl<'a> ModifyInputsContext<'a> { let Some(brush_node_id) = self.existing_network_node_id("Brush", true) else { return; }; - self.set_input_with_refresh(InputConnector::node(brush_node_id, 1), NodeInput::value(TaggedValue::BrushStrokes(strokes), false), false); + self.set_input_with_refresh( + InputConnector::node(brush_node_id, BRUSH_STROKES_INDEX), + NodeInput::value(TaggedValue::BrushStrokes(strokes), false), + false, + ); } pub fn resize_artboard(&mut self, location: IVec2, dimensions: IVec2) { @@ -524,8 +532,16 @@ impl<'a> ModifyInputsContext<'a> { dimensions.y *= -1; location.y -= dimensions.y; } - self.set_input_with_refresh(InputConnector::node(artboard_node_id, 2), NodeInput::value(TaggedValue::DVec2(location.into()), false), false); - self.set_input_with_refresh(InputConnector::node(artboard_node_id, 3), NodeInput::value(TaggedValue::DVec2(dimensions.into()), false), false); + self.set_input_with_refresh( + InputConnector::node(artboard_node_id, ARTBOARD_LOCATION_INDEX), + NodeInput::value(TaggedValue::DVec2(location.into()), false), + false, + ); + self.set_input_with_refresh( + InputConnector::node(artboard_node_id, ARTBOARD_DIMENSIONS_INDEX), + NodeInput::value(TaggedValue::DVec2(dimensions.into()), false), + false, + ); } /// Set the input, refresh the properties panel, and run the document graph if skip_rerender is false 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 b7f6992fc5..07b60823f8 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 @@ -223,8 +223,8 @@ impl<'a> MessageHandler> for NodeG x: (mid_point.x / 24.) as i32, y: (mid_point.y / 24.) as i32, }); - let node_input_connector = InputConnector::node(node_id, 0); - let node_output_connector = OutputConnector::node(node_id, 0); + let node_input_connector = InputConnector::node(node_id, InputConnector::PRIMARY_INPUT_INDEX); + let node_output_connector = OutputConnector::node(node_id, OutputConnector::PRIMARY_OUTPUT_INDEX); responses.add(NodeGraphMessage::CreateWire { output_connector, input_connector: node_input_connector, @@ -473,7 +473,7 @@ impl<'a> MessageHandler> for NodeG return; }; - let encapsulating_connector = InputConnector::node(*node_id, 0); + let encapsulating_connector = InputConnector::node(*node_id, InputConnector::PRIMARY_INPUT_INDEX); if !exposed { network_interface.disconnect_input(&encapsulating_connector, network_path); } @@ -492,7 +492,7 @@ impl<'a> MessageHandler> for NodeG log::error!("Could not get outward wires in remove_import"); return; }; - let Some(downstream_connections) = outward_wires.get(&OutputConnector::Import(0)).cloned() else { + let Some(downstream_connections) = outward_wires.get(&OutputConnector::Import(OutputConnector::PRIMARY_OUTPUT_INDEX)).cloned() else { log::error!("Could not get outward wires for import in remove_import"); return; }; @@ -506,7 +506,7 @@ impl<'a> MessageHandler> for NodeG responses.add(NodeGraphMessage::SendWires); } NodeGraphMessage::ExposePrimaryExport { exposed } => { - let export_connector: InputConnector = InputConnector::Export(0); + let export_connector: InputConnector = InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX); if !exposed { network_interface.disconnect_input(&export_connector, breadcrumb_network_path); } @@ -527,7 +527,7 @@ impl<'a> MessageHandler> for NodeG log::error!("Could not get outward wires in remove_import"); return; }; - let Some(downstream_connections) = outward_wires.get(&OutputConnector::node(*encapsulating_node, 0)).cloned() else { + let Some(downstream_connections) = outward_wires.get(&OutputConnector::node(*encapsulating_node, OutputConnector::PRIMARY_OUTPUT_INDEX)).cloned() else { log::error!("Could not get outward wires for import in remove_import"); return; }; @@ -865,7 +865,7 @@ impl<'a> MessageHandler> for NodeG if let Some(remove_import_index) = modify_import_export.remove_imports_exports.clicked_output_port_from_point(node_graph_point) { responses.add(DocumentMessage::AddTransaction); - if remove_import_index == 0 { + if remove_import_index == InputConnector::PRIMARY_INPUT_INDEX { responses.add(NodeGraphMessage::ExposeEncapsulatingPrimaryInput { exposed: false }) } else { responses.add(NodeGraphMessage::RemoveImport { import_index: remove_import_index }); @@ -873,7 +873,7 @@ impl<'a> MessageHandler> for NodeG return; } else if let Some(remove_export_index) = modify_import_export.remove_imports_exports.clicked_input_port_from_point(node_graph_point) { responses.add(DocumentMessage::AddTransaction); - if remove_export_index == 0 { + if remove_export_index == InputConnector::PRIMARY_INPUT_INDEX { responses.add(NodeGraphMessage::ExposePrimaryExport { exposed: false }) } else { responses.add(NodeGraphMessage::RemoveExport { export_index: remove_export_index }); @@ -930,7 +930,7 @@ impl<'a> MessageHandler> for NodeG self.initial_disconnecting = true; self.disconnecting = Some(*clicked_input); - let output_connector = if *clicked_input == InputConnector::Export(0) { + let output_connector = if *clicked_input == InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX) { network_interface.root_node(breadcrumb_network_path).map(|root_node| root_node.to_connector()) } else { network_interface.upstream_output_connector(clicked_input, breadcrumb_network_path) @@ -1070,7 +1070,7 @@ impl<'a> MessageHandler> for NodeG let mut disconnect_root_node = false; if let Previewing::Yes { root_node_to_restore } = network_interface.previewing(selection_network_path) && root_node_to_restore.is_some() - && *disconnecting == InputConnector::Export(0) + && *disconnecting == InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX) { disconnect_root_node = true; } @@ -1107,7 +1107,7 @@ impl<'a> MessageHandler> for NodeG }); let to_connector_is_layer = to_connector.is_some_and(|to_connector| { if let InputConnector::Node { node_id, input_index } = to_connector { - input_index == 0 && network_interface.is_layer(&node_id, selection_network_path) + input_index == InputConnector::PRIMARY_INPUT_INDEX && network_interface.is_layer(&node_id, selection_network_path) } else { false } @@ -1324,7 +1324,7 @@ impl<'a> MessageHandler> for NodeG .cloned() .collect::>() { - network_interface.try_set_upstream_to_chain(&InputConnector::node(layer, 1), selection_network_path); + network_interface.try_set_upstream_to_chain(&InputConnector::node(layer, InputConnector::PRIMARY_INPUT_INDEX + 1), selection_network_path); } responses.add(NodeGraphMessage::SendGraph); @@ -1335,9 +1335,11 @@ impl<'a> MessageHandler> for NodeG // Check if a single node was dragged onto a wire and that the node was dragged onto the wire if selected_nodes.selected_nodes_ref().len() == 1 && !self.begin_dragging { let selected_node_id = selected_nodes.selected_nodes_ref()[0]; - let has_primary_output_connection = network_interface - .outward_wires(selection_network_path) - .is_some_and(|outward_wires| outward_wires.get(&OutputConnector::node(selected_node_id, 0)).is_some_and(|outward_wires| !outward_wires.is_empty())); + let has_primary_output_connection = network_interface.outward_wires(selection_network_path).is_some_and(|outward_wires| { + outward_wires + .get(&OutputConnector::node(selected_node_id, OutputConnector::PRIMARY_OUTPUT_INDEX)) + .is_some_and(|outward_wires| !outward_wires.is_empty()) + }); if !has_primary_output_connection { let Some(network) = network_interface.nested_network(selection_network_path) else { return; @@ -1531,13 +1533,14 @@ impl<'a> MessageHandler> for NodeG } let number_of_outputs = network_interface.number_of_outputs(selected_node, selection_network_path); - let mut first_deselected_upstream_output = network_interface.upstream_output_connector(&InputConnector::node(*selected_node, 0), selection_network_path); + let mut first_deselected_upstream_output = + network_interface.upstream_output_connector(&InputConnector::node(*selected_node, InputConnector::PRIMARY_INPUT_INDEX), selection_network_path); while let Some(OutputConnector::Node { node_id, .. }) = &first_deselected_upstream_output { if !all_selected_nodes.contains(node_id) { break; } - first_deselected_upstream_output = network_interface.upstream_output_connector(&InputConnector::node(*node_id, 0), selection_network_path); + first_deselected_upstream_output = network_interface.upstream_output_connector(&InputConnector::node(*node_id, InputConnector::PRIMARY_INPUT_INDEX), selection_network_path); } let Some(outward_wires) = network_interface.outward_wires(selection_network_path) else { @@ -1560,7 +1563,7 @@ impl<'a> MessageHandler> for NodeG // Handle reconnection // Find first non selected upstream node by primary flow if let Some(first_deselected_upstream_output) = first_deselected_upstream_output { - let Some(downstream_connections_to_first_output) = outward_wires.get(&OutputConnector::node(*selected_node, 0)).cloned() else { + let Some(downstream_connections_to_first_output) = outward_wires.get(&OutputConnector::node(*selected_node, OutputConnector::PRIMARY_OUTPUT_INDEX)).cloned() else { log::error!("Could not get downstream_connections_to_first_output in shake node"); return; }; @@ -2188,7 +2191,9 @@ impl NodeGraphMessageHandler { .popover_layout({ // Showing only compatible types let compatible_type = match (selection_includes_layers, has_multiple_selection, selected_layer) { - (true, false, Some(layer)) => network_interface.output_type(&OutputConnector::node(layer.to_node(), 1), &[]).add_node_string(), + (true, false, Some(layer)) => network_interface + .output_type(&OutputConnector::node(layer.to_node(), OutputConnector::PRIMARY_OUTPUT_INDEX + 1), &[]) + .add_node_string(), _ => None, }; @@ -2589,7 +2594,7 @@ impl NodeGraphMessageHandler { }; let mut nodes = Vec::new(); for (node_id, visible) in network.nodes.iter().map(|(node_id, node)| (*node_id, node.visible)).collect::>() { - let primary_input_connector = InputConnector::node(node_id, 0); + let primary_input_connector = InputConnector::node(node_id, InputConnector::PRIMARY_INPUT_INDEX); let primary_input = if network_interface .input_from_connector(&primary_input_connector, breadcrumb_network_path) @@ -2603,7 +2608,7 @@ impl NodeGraphMessageHandler { .filter_map(|input_index| network_interface.frontend_input_from_connector(&InputConnector::node(node_id, input_index), breadcrumb_network_path)) .collect(); - let primary_output = network_interface.frontend_output_from_connector(&OutputConnector::node(node_id, 0), breadcrumb_network_path); + let primary_output = network_interface.frontend_output_from_connector(&OutputConnector::node(node_id, OutputConnector::PRIMARY_OUTPUT_INDEX), breadcrumb_network_path); let exposed_outputs = (1..network_interface.number_of_outputs(&node_id, breadcrumb_network_path)) .filter_map(|output_index| network_interface.frontend_output_from_connector(&OutputConnector::node(node_id, output_index), breadcrumb_network_path)) @@ -2618,7 +2623,7 @@ impl NodeGraphMessageHandler { }; let is_export = network_interface - .input_from_connector(&InputConnector::Export(0), breadcrumb_network_path) + .input_from_connector(&InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX), breadcrumb_network_path) .is_some_and(|export| export.as_node().is_some_and(|export_node_id| node_id == export_node_id)); let is_root_node = network_interface.root_node(breadcrumb_network_path).is_some_and(|root_node| root_node.node_id == node_id); diff --git a/editor/src/messages/portfolio/document/utility_types/network_interface.rs b/editor/src/messages/portfolio/document/utility_types/network_interface.rs index ac95dfce84..226502d4a1 100644 --- a/editor/src/messages/portfolio/document/utility_types/network_interface.rs +++ b/editor/src/messages/portfolio/document/utility_types/network_interface.rs @@ -216,7 +216,7 @@ impl NodeNetworkInterface { pub fn downstream_layer_for_chain_node(&mut self, node_id: &NodeId, network_path: &[NodeId]) -> Option { let mut id = *node_id; while !self.is_layer(&id, network_path) { - id = self.outward_wires(network_path)?.get(&OutputConnector::node(id, 0))?.first()?.node_id()?; + id = self.outward_wires(network_path)?.get(&OutputConnector::node(id, OutputConnector::PRIMARY_OUTPUT_INDEX))?.first()?.node_id()?; } Some(id) } @@ -229,7 +229,7 @@ impl NodeNetworkInterface { if self.is_layer(¤t_node, network_path) { layers.push(current_node); } else { - let Some(outward_wires) = self.outward_wires(network_path).and_then(|outward_wires| outward_wires.get(&OutputConnector::node(current_node, 0))) else { + let Some(outward_wires) = self.outward_wires(network_path).and_then(|outward_wires| outward_wires.get(&OutputConnector::node(current_node, OutputConnector::PRIMARY_OUTPUT_INDEX))) else { log::error!("Could not get outward wires in downstream_layer"); return Vec::new(); }; @@ -370,7 +370,7 @@ impl NodeNetworkInterface { return None; }; // TODO: Get downstream connections from all outputs - let mut downstream_connections = outward_wires.get(&OutputConnector::node(*node_id, 0)).map_or([].iter(), |outputs| outputs.iter()); + let mut downstream_connections = outward_wires.get(&OutputConnector::node(*node_id, OutputConnector::PRIMARY_OUTPUT_INDEX)).map_or([].iter(), |outputs| outputs.iter()); let has_selected_node_downstream = downstream_connections.any(|input_connector| input_connector.node_id().is_some_and(|upstream_id| new_ids.keys().any(|key| *key == upstream_id))); // If the copied node does not have a downstream connection to another copied node, then set the position to absolute if !has_selected_node_downstream { @@ -417,9 +417,9 @@ impl NodeNetworkInterface { .collect::>(); for old_id in new_nodes.iter().map(|(_, old_id, _)| *old_id).collect::>() { - // Try set all selected nodes upstream of a layer to be chain nodes + // Try set all selected nodes upstream of a layer to be chain nodes if self.is_layer(&old_id, network_path) { - for valid_upstream_chain_node in self.valid_upstream_chain_nodes(&InputConnector::node(old_id, 1), network_path) { + for valid_upstream_chain_node in self.valid_upstream_chain_nodes(&InputConnector::node(old_id, InputConnector::PRIMARY_INPUT_INDEX + 1), network_path) { if let Some(node_template) = new_nodes.iter_mut().find_map(|(_, old_id, template)| (*old_id == valid_upstream_chain_node).then_some(template)) { match &mut node_template.persistent_node_metadata.node_type_metadata { NodeTypePersistentMetadata::Node(node_metadata) => node_metadata.position = NodePosition::Chain, @@ -682,7 +682,7 @@ impl NodeNetworkInterface { let (name, description) = match output_connector { OutputConnector::Node { node_id, output_index } => { // Do not display the primary output port for a node if it is a network node with a hidden primary export - if *output_index == 0 && self.hidden_primary_output(node_id, network_path) { + if *output_index == OutputConnector::PRIMARY_OUTPUT_INDEX && self.hidden_primary_output(node_id, network_path) { return None; }; // Get the output name from the interior network export name @@ -699,7 +699,7 @@ impl NodeNetworkInterface { return None; }; // Return None if the primary input is hidden and this is the primary import - if *import_index == 0 && self.hidden_primary_import(network_path) { + if *import_index == InputConnector::PRIMARY_INPUT_INDEX && self.hidden_primary_import(network_path) { return None; }; let (import_name, description) = self.displayed_input_name_and_description(encapsulating_node_id, *import_index, encapsulating_path); @@ -839,7 +839,7 @@ impl NodeNetworkInterface { input_index, } => { // Stop iterating once the downstream node is the left input to the chain or a sole dependent - if !(sole_dependents.contains(downstream_node_id) || downstream_node_id == node_id && *input_index == 1) { + if !(sole_dependents.contains(downstream_node_id) || downstream_node_id == node_id && *input_index == InputConnector::PRIMARY_INPUT_INDEX + 1) { // Continue iterating downstream for the downstream node let number_of_outputs = self.number_of_outputs(downstream_node_id, network_path); let Some(outward_wires) = self.outward_wires(network_path) else { @@ -1065,20 +1065,20 @@ impl NodeNetworkInterface { log::error!("Could not get outward_wires in primary_output_connected_to_layer"); return false; }; - let Some(downstream_connectors) = outward_wires.get(&OutputConnector::node(*node_id, 0)) else { + let Some(downstream_connectors) = outward_wires.get(&OutputConnector::node(*node_id, OutputConnector::PRIMARY_OUTPUT_INDEX)) else { log::error!("Could not get downstream_connectors in primary_output_connected_to_layer"); return false; }; let downstream_nodes = downstream_connectors .iter() - .filter_map(|connector| connector.node_id().filter(|_| connector.input_index() == 0)) + .filter_map(|connector| connector.node_id().filter(|_| connector.input_index() == InputConnector::PRIMARY_INPUT_INDEX)) .collect::>(); downstream_nodes.iter().any(|node_id| self.is_layer(node_id, network_path)) } pub fn primary_input_connected_to_layer(&mut self, node_id: &NodeId, network_path: &[NodeId]) -> bool { - self.input_from_connector(&InputConnector::node(*node_id, 0), network_path) + self.input_from_connector(&InputConnector::node(*node_id, InputConnector::PRIMARY_INPUT_INDEX), network_path) .and_then(|input| input.as_node()) .is_some_and(|node_id| self.is_layer(&node_id, network_path)) } @@ -1102,7 +1102,7 @@ impl NodeNetworkInterface { let Some((encapsulating_node_id, encapsulating_path)) = network_path.split_last() else { return false; }; - self.input_from_connector(&InputConnector::node(*encapsulating_node_id, 0), encapsulating_path) + self.input_from_connector(&InputConnector::node(*encapsulating_node_id, InputConnector::PRIMARY_INPUT_INDEX), encapsulating_path) .is_some_and(|input| !input.is_exposed()) } @@ -1195,7 +1195,9 @@ impl NodeNetworkInterface { .find(|ancestor| *ancestor != LayerNodeIdentifier::ROOT_PARENT && self.is_artboard(&ancestor.to_node(), &[])) { let artboard = self.document_node(&artboard_node_identifier.to_node(), &[]); - let clip_input = artboard.unwrap().inputs.get(5).unwrap(); + // Artboard node: [0]=base, [1]=content, [2]=location, [3]=dimensions, [4]=background, [5]=clip + const ARTBOARD_CLIP_INPUT_INDEX: usize = 5; + let clip_input = artboard.unwrap().inputs.get(ARTBOARD_CLIP_INPUT_INDEX).unwrap(); if let NodeInput::Value { tagged_value, .. } = clip_input && tagged_value.clone().deref() == &TaggedValue::Bool(true) { @@ -1312,7 +1314,7 @@ impl NodeNetworkInterface { .iter() .filter_map(move |node_id| { if self.is_layer(node_id, network_path) { - network.nodes.get(node_id).and_then(|node| node.inputs.get(1)).and_then(|input| input.as_node()) + network.nodes.get(node_id).and_then(|node| node.inputs.get(InputConnector::PRIMARY_INPUT_INDEX + 1)).and_then(|input| input.as_node()) } else { Some(*node_id) } @@ -1613,7 +1615,7 @@ impl NodeNetworkInterface { log::error!("Cannot load outward wires in load_stack_dependents"); return; }; - let Some(layer_outward_wires) = outward_wires.get(&OutputConnector::node(current_node, 0)) else { + let Some(layer_outward_wires) = outward_wires.get(&OutputConnector::node(current_node, OutputConnector::PRIMARY_OUTPUT_INDEX)) else { log::error!("Could not get outward_wires for layer {current_node}"); break; }; @@ -1865,7 +1867,7 @@ impl NodeNetworkInterface { }; let reorder_import_center = (import_bounding_box[0] + import_bounding_box[1]) / 2. + DVec2::new(-12., 0.); - if *import_index == 0 { + if *import_index == InputConnector::PRIMARY_INPUT_INDEX { let remove_import_center = reorder_import_center + DVec2::new(-4., 0.); let remove_import = ClickTarget::new_with_subpath(Subpath::new_rectangle(remove_import_center - DVec2::new(8., 8.), remove_import_center + DVec2::new(8., 8.)), 0.); remove_imports_exports.insert_custom_output_port(*import_index, remove_import); @@ -1885,7 +1887,7 @@ impl NodeNetworkInterface { }; let reorder_export_center = (export_bounding_box[0] + export_bounding_box[1]) / 2. + DVec2::new(12., 0.); - if *export_index == 0 { + if *export_index == InputConnector::PRIMARY_INPUT_INDEX { let remove_export_center = reorder_export_center + DVec2::new(4., 0.); let remove_export = ClickTarget::new_with_subpath(Subpath::new_rectangle(remove_export_center - DVec2::new(8., 8.), remove_export_center + DVec2::new(8., 8.)), 0.); remove_imports_exports.insert_custom_input_port(*export_index, remove_export); @@ -2235,7 +2237,7 @@ impl NodeNetworkInterface { let dashed = match self.previewing(network_path) { Previewing::Yes { .. } => match input { InputConnector::Node { .. } => false, - InputConnector::Export(export_index) => *export_index == 0, + InputConnector::Export(export_index) => *export_index == InputConnector::PRIMARY_INPUT_INDEX, }, Previewing::No => false, }; @@ -2361,7 +2363,7 @@ impl NodeNetworkInterface { /// When previewing, there may be a second path to the root node. pub fn wire_to_root(&mut self, graph_wire_style: GraphWireStyle, network_path: &[NodeId]) -> Option { - let input = InputConnector::Export(0); + let input = InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX); let current_export = self.upstream_output_connector(&input, network_path)?; let root_node = match self.previewing(network_path) { @@ -2381,7 +2383,7 @@ impl NodeNetworkInterface { log::error!("Could not get output position for wire start in root node: {upstream_output:?}"); return None; }; - let vertical_end = input.node_id().is_some_and(|node_id| self.is_layer(&node_id, network_path) && input.input_index() == 0); + let vertical_end = input.node_id().is_some_and(|node_id| self.is_layer(&node_id, network_path) && input.input_index() == InputConnector::PRIMARY_INPUT_INDEX); let vertical_start: bool = upstream_output.node_id().is_some_and(|node_id| self.is_layer(&node_id, network_path)); let thick = vertical_end && vertical_start; let vector_wire = build_vector_wire(output_position, input_position, vertical_start, vertical_end, graph_wire_style); @@ -2416,7 +2418,7 @@ impl NodeNetworkInterface { log::error!("Could not get output port for wire start: {:?}", upstream_output); return None; }; - let vertical_end = input.node_id().is_some_and(|node_id| self.is_layer(&node_id, network_path) && input.input_index() == 0); + let vertical_end = input.node_id().is_some_and(|node_id| self.is_layer(&node_id, network_path) && input.input_index() == InputConnector::PRIMARY_INPUT_INDEX); let vertical_start = upstream_output.node_id().is_some_and(|node_id| self.is_layer(&node_id, network_path)); let thick = vertical_end && vertical_start; Some((build_vector_wire(output_position, input_position, vertical_start, vertical_end, wire_style), thick)) @@ -2485,7 +2487,7 @@ impl NodeNetworkInterface { port_click_targets.insert_node_input(input_index, input_row_count, node_top_left); } // Primary input row is always displayed, even if the input is not exposed - if input_index == 0 || input.is_exposed() { + if input_index == InputConnector::PRIMARY_INPUT_INDEX || input.is_exposed() { input_row_count += 1; } } @@ -2610,7 +2612,7 @@ impl NodeNetworkInterface { LayerPosition::Stack(y_offset) => { let Some(downstream_node_connectors) = self .outward_wires(network_path) - .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(*node_id, 0))) + .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(*node_id, OutputConnector::PRIMARY_OUTPUT_INDEX))) .cloned() else { log::error!("Could not get downstream node in position_from_downstream_node"); @@ -2645,7 +2647,7 @@ impl NodeNetworkInterface { // TODO: Use root node to restore if previewing let Some(downstream_node_connectors) = self .outward_wires(network_path) - .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(current_node_id, 0))) + .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(current_node_id, OutputConnector::PRIMARY_OUTPUT_INDEX))) .cloned() else { log::error!("Could not get downstream node for node {node_id} with Position::Chain"); @@ -3097,7 +3099,8 @@ impl NodeNetworkInterface { let mut modified = vector.clone(); let path_node = self.document_network().nodes.get(&path_node); - let modification_input = path_node.and_then(|node: &DocumentNode| node.inputs.get(1)).and_then(|input| input.as_value()); + const PATH_MODIFICATION_INDEX: usize = 1; + let modification_input = path_node.and_then(|node: &DocumentNode| node.inputs.get(PATH_MODIFICATION_INDEX)).and_then(|input| input.as_value()); if let Some(TaggedValue::VectorModification(modification)) = modification_input { modification.apply(&mut modified); } @@ -3941,11 +3944,11 @@ impl NodeNetworkInterface { (_, NodeInput::Node { node_id: upstream_node_id, .. }) => { // Load structure if the change is to the document network and to the first or second if network_path.is_empty() { - if matches!(input_connector, InputConnector::Export(0)) { + if matches!(input_connector, InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX)) { self.load_structure(); } else if let InputConnector::Node { node_id, input_index } = &input_connector { // If the connection is made to the first or second input of a node connected to the output, then load the structure - if self.connected_to_output(node_id, network_path) && (*input_index == 0 || *input_index == 1) { + if self.connected_to_output(node_id, network_path) && (*input_index == InputConnector::PRIMARY_INPUT_INDEX || *input_index == InputConnector::PRIMARY_INPUT_INDEX + 1) { self.load_structure(); } } @@ -3981,9 +3984,9 @@ impl NodeNetworkInterface { // If the layer feeds into the bottom input of layer, and has no other outputs, set its position to stack at its previous y position let multiple_outward_wires = self .outward_wires(network_path) - .and_then(|all_outward_wires| all_outward_wires.get(&OutputConnector::node(*upstream_node_id, 0))) + .and_then(|all_outward_wires| all_outward_wires.get(&OutputConnector::node(*upstream_node_id, OutputConnector::PRIMARY_OUTPUT_INDEX))) .is_some_and(|outward_wires| outward_wires.len() > 1); - if *input_index == 0 && !multiple_outward_wires { + if *input_index == InputConnector::PRIMARY_INPUT_INDEX && !multiple_outward_wires { self.set_stack_position_calculated_offset(upstream_node_id, downstream_node_id, network_path); } else { self.set_absolute_position(upstream_node_id, current_node_position, network_path); @@ -4022,13 +4025,13 @@ impl NodeNetworkInterface { let old_upstream_node_is_layer = self.is_layer(&old_upstream_node_id, network_path); let Some(outward_wires) = self .outward_wires(network_path) - .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(old_upstream_node_id, 0))) + .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(old_upstream_node_id, OutputConnector::PRIMARY_OUTPUT_INDEX))) else { log::error!("Could not get outward wires in set_input"); return; }; // If it is a layer and is connected to a single layer, set its position to stack at its previous y position - if old_upstream_node_is_layer && outward_wires.len() == 1 && outward_wires[0].input_index() == 0 { + if old_upstream_node_is_layer && outward_wires.len() == 1 && outward_wires[0].input_index() == InputConnector::PRIMARY_INPUT_INDEX { if let Some(downstream_node_id) = outward_wires[0].node_id() && self.is_layer(&downstream_node_id, network_path) { @@ -4047,11 +4050,11 @@ impl NodeNetworkInterface { } // Load structure if the change is to the document network and to the first or second if network_path.is_empty() { - if matches!(input_connector, InputConnector::Export(0)) { + if matches!(input_connector, InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX)) { self.load_structure(); } else if let InputConnector::Node { node_id, input_index } = &input_connector { // If the connection is made to the first or second input of a node connected to the output, then load the structure - if self.connected_to_output(node_id, network_path) && (*input_index == 0 || *input_index == 1) { + if self.connected_to_output(node_id, network_path) && (*input_index == InputConnector::PRIMARY_INPUT_INDEX || *input_index == InputConnector::PRIMARY_INPUT_INDEX + 1) { self.load_structure(); } } @@ -4100,7 +4103,7 @@ impl NodeNetworkInterface { input_index, } = other_outward_wire && self.is_layer(&downstream_node_id, network_path) - && input_index == 0 + && input_index == InputConnector::PRIMARY_INPUT_INDEX { self.set_stack_position_calculated_offset(upstream_node_id, &downstream_node_id, network_path); } @@ -4234,11 +4237,11 @@ impl NodeNetworkInterface { if let InputConnector::Node { node_id: downstream_id, input_index } = downstream_node { // If the downstream node is not in the delete nodes set, then continue iterating // If the downstream node is the bottom input of a layer then continue iterating - if !delete_nodes.contains(downstream_id) || (*input_index == 0 && self.is_layer(downstream_id, network_path)) { + if !delete_nodes.contains(downstream_id) || (*input_index == InputConnector::PRIMARY_INPUT_INDEX && self.is_layer(downstream_id, network_path)) { stack.push(*downstream_id); } // If the traversal reaches the primary input of the node to delete then do not delete it - if node_id == downstream_id && *input_index == 0 { + if node_id == downstream_id && *input_index == InputConnector::PRIMARY_INPUT_INDEX { can_delete = false; stack = Vec::new(); break; @@ -4343,7 +4346,7 @@ impl NodeNetworkInterface { && let Some(reconnect_input) = &reconnect_to_input { reconnect_node = reconnect_input.as_node().and_then(|node_id| if self.is_stack(&node_id, network_path) { Some(node_id) } else { None }); - self.disconnect_input(&InputConnector::node(*node_id, 0), network_path); + self.disconnect_input(&InputConnector::node(*node_id, InputConnector::PRIMARY_INPUT_INDEX), network_path); self.set_input(downstream_input, reconnect_input.clone(), network_path); } } @@ -4398,7 +4401,7 @@ impl NodeNetworkInterface { } = self.previewing(network_path) { self.set_input( - &InputConnector::Export(0), + &InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX), NodeInput::node(root_node_to_restore.node_id, root_node_to_restore.output_index), network_path, ); @@ -4457,10 +4460,11 @@ impl NodeNetworkInterface { return; }; - let label_index = 1; + // Artboard node internal structure: inputs[0]=content, inputs[1]=label(name) + const ARTBOARD_LABEL_INPUT_INDEX: usize = 1; let label = if !display_name.is_empty() { display_name } else { "Artboard".to_string() }; let label_input = NodeInput::value(TaggedValue::String(label), false); - to_artboard.inputs[label_index] = label_input; + to_artboard.inputs[ARTBOARD_LABEL_INPUT_INDEX] = label_input; } self.transaction_modified(); @@ -4557,7 +4561,7 @@ impl NodeNetworkInterface { if self.is_layer(&upstream_sibling_id, network_path) && self .outward_wires(network_path) - .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(upstream_sibling_id, 0))) + .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(upstream_sibling_id, OutputConnector::PRIMARY_OUTPUT_INDEX))) .is_some_and(|outward_wires| outward_wires.len() == 1) { self.set_stack_position_calculated_offset(&upstream_sibling_id, node_id, network_path); @@ -4578,9 +4582,9 @@ impl NodeNetworkInterface { .outward_wires(network_path) .and_then(|outward_wires| { outward_wires - .get(&OutputConnector::node(*node_id, 0)) + .get(&OutputConnector::node(*node_id, OutputConnector::PRIMARY_OUTPUT_INDEX)) .and_then(|outward_wires| (outward_wires.len() == 1).then(|| outward_wires[0])) - .and_then(|downstream_connector| if downstream_connector.input_index() == 0 { downstream_connector.node_id() } else { None }) + .and_then(|downstream_connector| if downstream_connector.input_index() == InputConnector::PRIMARY_INPUT_INDEX { downstream_connector.node_id() } else { None }) }) .filter(|downstream_node_id| self.is_layer(downstream_node_id, network_path)) .and_then(|downstream_layer| self.position(&downstream_layer, network_path)); @@ -4604,7 +4608,7 @@ impl NodeNetworkInterface { // Try build the chain if is_layer { - self.try_set_upstream_to_chain(&InputConnector::node(*node_id, 1), network_path); + self.try_set_upstream_to_chain(&InputConnector::node(*node_id, InputConnector::PRIMARY_INPUT_INDEX + 1), network_path); } else { self.try_set_node_to_chain(node_id, network_path); } @@ -4668,7 +4672,7 @@ impl NodeNetworkInterface { } // The export is not clicked else { - new_export = Some(OutputConnector::node(toggle_id, 0)); + new_export = Some(OutputConnector::node(toggle_id, OutputConnector::PRIMARY_OUTPUT_INDEX)); // There is currently a dashed line being drawn if let Previewing::Yes { root_node_to_restore } = self.previewing(network_path) { @@ -4676,7 +4680,7 @@ impl NodeNetworkInterface { if let Some(root_node_to_restore) = root_node_to_restore { // If the node with the solid line is clicked, then start previewing that node without restore if root_node_to_restore.node_id == toggle_id { - new_export = Some(OutputConnector::node(toggle_id, 0)); + new_export = Some(OutputConnector::node(toggle_id, OutputConnector::PRIMARY_OUTPUT_INDEX)); new_previewing_state = Previewing::Yes { root_node_to_restore: None }; } else { // Root node to restore does not change @@ -4692,7 +4696,7 @@ impl NodeNetworkInterface { } // Not previewing, there is no dashed line being drawn else { - new_export = Some(OutputConnector::node(toggle_id, 0)); + new_export = Some(OutputConnector::node(toggle_id, OutputConnector::PRIMARY_OUTPUT_INDEX)); new_previewing_state = Previewing::Yes { root_node_to_restore: Some(RootNode { node_id: previous_export_id, @@ -4705,16 +4709,16 @@ impl NodeNetworkInterface { // The primary export is disconnected else { // Set node as export and cancel any preview - new_export = Some(OutputConnector::node(toggle_id, 0)); + new_export = Some(OutputConnector::node(toggle_id, OutputConnector::PRIMARY_OUTPUT_INDEX)); self.start_previewing_without_restore(network_path); } } match new_export { Some(new_export) => { - self.create_wire(&new_export, &InputConnector::Export(0), network_path); + self.create_wire(&new_export, &InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX), network_path); } None => { - self.disconnect_input(&InputConnector::Export(0), network_path); + self.disconnect_input(&InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX), network_path); } } let Some(network_metadata) = self.network_metadata_mut(network_path) else { @@ -4798,7 +4802,7 @@ impl NodeNetworkInterface { else { log::error!("Could not set chain position for layer node {node_id}"); } - // let previous_upstream_node = self.upstream_output_connector(&InputConnector::node(*node_id, 0), network_path).and_then(|output| output.node_id()); + // let previous_upstream_node = self.upstream_output_connector(&InputConnector::node(*node_id, InputConnector::PRIMARY_INPUT_INDEX), network_path).and_then(|output| output.node_id()); // let Some(previous_upstream_node_position) = previous_upstream_node.and_then(|upstream| self.position_from_downstream_node(&upstream, network_path)) else { // log::error!("Could not get previous_upstream_node_position"); // return; @@ -4848,7 +4852,7 @@ impl NodeNetworkInterface { return Vec::new(); }; let mut set_position_to_chain = Vec::new(); - if self.is_layer(input_connector_node_id, network_path) && *input_index == 1 || self.is_chain(input_connector_node_id, network_path) && *input_index == 0 { + if self.is_layer(input_connector_node_id, network_path) && *input_index == InputConnector::PRIMARY_INPUT_INDEX + 1 || self.is_chain(input_connector_node_id, network_path) && *input_index == InputConnector::PRIMARY_INPUT_INDEX { let mut downstream_id = *input_connector_node_id; for upstream_node in self .upstream_flow_back_from_nodes(vec![*input_connector_node_id], network_path, FlowType::HorizontalFlow) @@ -4858,7 +4862,7 @@ impl NodeNetworkInterface { if self.is_layer(&upstream_node, network_path) || self.hidden_primary_output(&upstream_node, network_path) { break; } - let Some(outward_wires) = self.outward_wires(network_path).and_then(|outward_wires| outward_wires.get(&OutputConnector::node(upstream_node, 0))) else { + let Some(outward_wires) = self.outward_wires(network_path).and_then(|outward_wires| outward_wires.get(&OutputConnector::node(upstream_node, OutputConnector::PRIMARY_OUTPUT_INDEX))) else { log::error!("Could not get outward wires in try_set_upstream_to_chain"); break; }; @@ -4905,7 +4909,7 @@ impl NodeNetworkInterface { break; }; downstream_layer = outward_wires - .get(&OutputConnector::node(downstream_layer_id, 0)) + .get(&OutputConnector::node(downstream_layer_id, OutputConnector::PRIMARY_OUTPUT_INDEX)) .and_then(|outward_wires| if outward_wires.len() == 1 { outward_wires[0].node_id() } else { None }); } else { break; @@ -4920,7 +4924,7 @@ impl NodeNetworkInterface { fn try_set_node_to_chain(&mut self, node_id: &NodeId, network_path: &[NodeId]) { if let Some(outward_wires) = self .outward_wires(network_path) - .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(*node_id, 0))) + .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(*node_id, OutputConnector::PRIMARY_OUTPUT_INDEX))) .cloned() && outward_wires.len() == 1 { self.try_set_upstream_to_chain(&outward_wires[0], network_path) @@ -4932,7 +4936,7 @@ impl NodeNetworkInterface { if !self.is_layer(upstream_id, network_path) && self .outward_wires(network_path) - .is_some_and(|outward_wires| outward_wires.get(&OutputConnector::node(*upstream_id, 0)).is_some_and(|outward_wires| outward_wires.len() == 1)) + .is_some_and(|outward_wires| outward_wires.get(&OutputConnector::node(*upstream_id, OutputConnector::PRIMARY_OUTPUT_INDEX)).is_some_and(|outward_wires| outward_wires.len() == 1)) { self.set_chain_position(upstream_id, network_path); } @@ -5055,7 +5059,7 @@ impl NodeNetworkInterface { && let LayerPosition::Stack(offset) = layer_metadata.position { // If the upstream layer is selected, then skip - let Some(outward_wires) = self.outward_wires(network_path).and_then(|outward_wires| outward_wires.get(&OutputConnector::node(*node_id, 0))) else { + let Some(outward_wires) = self.outward_wires(network_path).and_then(|outward_wires| outward_wires.get(&OutputConnector::node(*node_id, OutputConnector::PRIMARY_OUTPUT_INDEX))) else { log::error!("Could not get outward wires in shift_selected_nodes"); return; }; @@ -5108,7 +5112,7 @@ impl NodeNetworkInterface { } let Some(downstream_node) = self .outward_wires(network_path) - .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(downstream_absolute_layer, 0))) + .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(downstream_absolute_layer, OutputConnector::PRIMARY_OUTPUT_INDEX))) .and_then(|downstream_nodes| downstream_nodes.first()) .and_then(|downstream_node| downstream_node.node_id()) else { @@ -5493,7 +5497,7 @@ impl NodeNetworkInterface { // Get the height of the downstream node if inserting into a stack let mut downstream_height = 0; let inserting_into_stack = - !(post_node.input_index() == 1 || matches!(post_node, InputConnector::Export(_)) || !post_node.node_id().is_some_and(|post_node_id| self.is_layer(&post_node_id, network_path))); + !(post_node.input_index() == InputConnector::PRIMARY_INPUT_INDEX + 1 || matches!(post_node, InputConnector::Export(_)) || !post_node.node_id().is_some_and(|post_node_id| self.is_layer(&post_node_id, network_path))); if inserting_into_stack && let Some(downstream_node) = post_node.node_id() { let Some(downstream_node_position) = self.position(&downstream_node, network_path) else { log::error!("Could not get downstream node position in move_layer_to_stack"); @@ -5562,7 +5566,7 @@ impl NodeNetworkInterface { match post_node_input { // Create a new stack NodeInput::Value { .. } | NodeInput::Scope(_) | NodeInput::Inline(_) | NodeInput::Reflection(_) => { - self.create_wire(&OutputConnector::node(layer.to_node(), 0), &post_node, network_path); + self.create_wire(&OutputConnector::node(layer.to_node(), OutputConnector::PRIMARY_OUTPUT_INDEX), &post_node, network_path); let final_layer_position = after_move_post_layer_position + IVec2::new(-8, 3); let shift = final_layer_position - previous_layer_position; @@ -5590,7 +5594,7 @@ impl NodeNetworkInterface { NodeInput::Value { .. } | NodeInput::Scope(_) | NodeInput::Inline(_) | NodeInput::Reflection(_) => { let offset = after_move_post_layer_position - previous_layer_position + IVec2::new(0, 3 + height_above_layer); self.shift_absolute_node_position(&layer.to_node(), offset, network_path); - self.create_wire(&OutputConnector::node(layer.to_node(), 0), &post_node, network_path); + self.create_wire(&OutputConnector::node(layer.to_node(), OutputConnector::PRIMARY_OUTPUT_INDEX), &post_node, network_path); } // Insert into the stack NodeInput::Node { .. } => { @@ -5609,7 +5613,7 @@ impl NodeNetworkInterface { self.insert_node_between(&layer.to_node(), &post_node, 0, network_path); // Get the other wires which need to be moved to the output of the moved layer - let layer_input_connector = InputConnector::node(layer.to_node(), 0); + let layer_input_connector = InputConnector::node(layer.to_node(), InputConnector::PRIMARY_INPUT_INDEX); let other_outward_wires = self .upstream_output_connector(&layer_input_connector, network_path) .and_then(|pre_node_output| self.outward_wires(network_path).and_then(|wires| wires.get(&pre_node_output))) @@ -5625,7 +5629,7 @@ impl NodeNetworkInterface { // Disconnect and reconnect for other_outward_wire in &other_outward_wires { self.disconnect_input(other_outward_wire, network_path); - self.create_wire(&OutputConnector::node(layer.to_node(), 0), other_outward_wire, network_path); + self.create_wire(&OutputConnector::node(layer.to_node(), OutputConnector::PRIMARY_OUTPUT_INDEX), other_outward_wire, network_path); } } self.unload_upstream_node_click_targets(vec![layer.to_node()], network_path); @@ -5647,7 +5651,7 @@ impl NodeNetworkInterface { self.disconnect_input(input_connector, network_path); // Connect the input connector to the new node - self.create_wire(&OutputConnector::node(*node_id, 0), input_connector, network_path); + self.create_wire(&OutputConnector::node(*node_id, OutputConnector::PRIMARY_OUTPUT_INDEX), input_connector, network_path); // Connect the new node to the previous node self.create_wire(&upstream_output, &InputConnector::node(*node_id, insert_node_input_index), network_path); @@ -5655,16 +5659,16 @@ impl NodeNetworkInterface { // Moves a node and to the start of a layer chain (feeding into the secondary input of the layer) pub fn move_node_to_chain_start(&mut self, node_id: &NodeId, parent: LayerNodeIdentifier, network_path: &[NodeId]) { - let Some(current_input) = self.input_from_connector(&InputConnector::node(parent.to_node(), 1), network_path) else { + let Some(current_input) = self.input_from_connector(&InputConnector::node(parent.to_node(), InputConnector::PRIMARY_INPUT_INDEX + 1), network_path) else { log::error!("Could not get input for node {node_id}"); return; }; if matches!(current_input, NodeInput::Value { .. }) { - self.create_wire(&OutputConnector::node(*node_id, 0), &InputConnector::node(parent.to_node(), 1), network_path); + self.create_wire(&OutputConnector::node(*node_id, OutputConnector::PRIMARY_OUTPUT_INDEX), &InputConnector::node(parent.to_node(), InputConnector::PRIMARY_INPUT_INDEX + 1), network_path); self.set_chain_position(node_id, network_path); } else { // Insert the node in the gap and set the upstream to a chain - self.insert_node_between(node_id, &InputConnector::node(parent.to_node(), 1), 0, network_path); + self.insert_node_between(node_id, &InputConnector::node(parent.to_node(), InputConnector::PRIMARY_INPUT_INDEX + 1), 0, network_path); self.force_set_upstream_to_chain(node_id, network_path); } } @@ -5710,7 +5714,7 @@ impl Iterator for FlowIter<'_> { let inputs = document_node.inputs.iter().skip(skip).take(take); let node_ids = inputs.filter_map(|input| match input { - NodeInput::Node { output_index, .. } if self.flow_type == FlowType::HorizontalPrimaryOutputFlow && *output_index != 0 => None, + NodeInput::Node { output_index, .. } if self.flow_type == FlowType::HorizontalPrimaryOutputFlow && *output_index != OutputConnector::PRIMARY_OUTPUT_INDEX => None, NodeInput::Node { node_id, .. } => Some(node_id), _ => None, }); @@ -5747,11 +5751,13 @@ pub enum InputConnector { impl Default for InputConnector { fn default() -> Self { - InputConnector::Export(0) + InputConnector::Export(InputConnector::PRIMARY_INPUT_INDEX) } } impl InputConnector { + pub const PRIMARY_INPUT_INDEX: usize = 0; + pub fn node(node_id: NodeId, input_index: usize) -> Self { InputConnector::Node { node_id, input_index } } @@ -5788,11 +5794,13 @@ pub enum OutputConnector { impl Default for OutputConnector { fn default() -> Self { - OutputConnector::Import(0) + OutputConnector::Import(OutputConnector::PRIMARY_OUTPUT_INDEX) } } impl OutputConnector { + pub const PRIMARY_OUTPUT_INDEX: usize = 0; + pub fn node(node_id: NodeId, output_index: usize) -> Self { OutputConnector::Node { node_id, output_index } } @@ -5886,7 +5894,7 @@ impl Ports { } fn insert_layer_input(&mut self, input_index: usize, node_top_left: DVec2) { - let center = if input_index == 0 { + let center = if input_index == InputConnector::PRIMARY_INPUT_INDEX { node_top_left + DVec2::new(2. * 24., 24. * 2. + 8.) } else { node_top_left + DVec2::new(0., 24. * 1.) diff --git a/editor/src/messages/portfolio/document/utility_types/network_interface/resolved_types.rs b/editor/src/messages/portfolio/document/utility_types/network_interface/resolved_types.rs index 2d285f7e89..c2e1646579 100644 --- a/editor/src/messages/portfolio/document/utility_types/network_interface/resolved_types.rs +++ b/editor/src/messages/portfolio/document/utility_types/network_interface/resolved_types.rs @@ -12,6 +12,9 @@ use crate::messages::portfolio::document::node_graph::utility_types::FrontendGra use crate::messages::portfolio::document::utility_types::network_interface::{InputConnector, NodeNetworkInterface, OutputConnector}; // This file contains utility methods for interfacing with the resolved types returned from the compiler + +/// Index of the `editor_api` parameter in the render node (second parameter after the primary context input). +const RENDER_NODE_EDITOR_API_INDEX: usize = 1; #[derive(Debug, Default)] pub struct ResolvedDocumentNodeTypes { pub types: HashMap, NodeTypes>, @@ -284,7 +287,7 @@ impl NodeNetworkInterface { log::error!("Protonode {proto_node_identifier:?} not found in registry in complete_valid_input_types"); return Vec::new(); }; - let valid_output_types = self.valid_output_types(&OutputConnector::node(*node_id, 0), network_path); + let valid_output_types = self.valid_output_types(&OutputConnector::node(*node_id, OutputConnector::PRIMARY_OUTPUT_INDEX), network_path); implementations .iter() @@ -317,7 +320,7 @@ impl NodeNetworkInterface { log::error!("Protonode {render_node:?} not found in registry"); return Vec::new(); }; - implementations.keys().map(|types| types.inputs[1].clone()).collect() + implementations.keys().map(|types| types.inputs[RENDER_NODE_EDITOR_API_INDEX].clone()).collect() } } } diff --git a/editor/src/messages/portfolio/portfolio_message_handler.rs b/editor/src/messages/portfolio/portfolio_message_handler.rs index dbc9c2d182..0c8dad29d3 100644 --- a/editor/src/messages/portfolio/portfolio_message_handler.rs +++ b/editor/src/messages/portfolio/portfolio_message_handler.rs @@ -14,7 +14,7 @@ use crate::messages::portfolio::document::DocumentMessageContext; use crate::messages::portfolio::document::graph_operation::utility_types::TransformIn; use crate::messages::portfolio::document::node_graph::document_node_definitions::{self, resolve_network_node_type}; use crate::messages::portfolio::document::utility_types::clipboards::{Clipboard, CopyBufferEntry, INTERNAL_CLIPBOARD_COUNT}; -use crate::messages::portfolio::document::utility_types::network_interface::OutputConnector; +use crate::messages::portfolio::document::utility_types::network_interface::{InputConnector, OutputConnector}; use crate::messages::portfolio::document::utility_types::nodes::SelectedNodes; use crate::messages::portfolio::document_migration::*; use crate::messages::portfolio::utility_types::FileContent; @@ -612,7 +612,7 @@ impl MessageHandler> for Portfolio let Some((downstream_node, input_index)) = document .network_interface .outward_wires(&[]) - .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(layer.to_node(), 0))) + .and_then(|outward_wires| outward_wires.get(&OutputConnector::node(layer.to_node(), OutputConnector::PRIMARY_OUTPUT_INDEX))) .and_then(|outward_wires| outward_wires.first()) .and_then(|input_connector| input_connector.node_id().map(|node_id| (node_id, input_connector.input_index()))) else { @@ -620,7 +620,7 @@ impl MessageHandler> for Portfolio }; // If the downstream node is a layer and the input is the first input and the current layer is not in a stack - if input_index == 0 && document.network_interface.is_layer(&downstream_node, &[]) && !document.network_interface.is_stack(&layer.to_node(), &[]) { + if input_index == InputConnector::PRIMARY_INPUT_INDEX && document.network_interface.is_layer(&downstream_node, &[]) && !document.network_interface.is_stack(&layer.to_node(), &[]) { // Ensure the layer is horizontally aligned with the downstream layer to prevent changing the layout of old files let (Some(layer_position), Some(downstream_position)) = (document.network_interface.position(&layer.to_node(), &[]), document.network_interface.position(&downstream_node, &[])) diff --git a/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/circle_arc_radius_handle.rs b/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/circle_arc_radius_handle.rs index 6152a6a5dd..9a50889ffc 100644 --- a/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/circle_arc_radius_handle.rs +++ b/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/circle_arc_radius_handle.rs @@ -11,6 +11,7 @@ use crate::messages::tool::common_functionality::shapes::shape_utility::{extract use glam::{DAffine2, DVec2}; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; use std::collections::VecDeque; use std::f64::consts::FRAC_PI_2; @@ -165,7 +166,7 @@ impl RadiusHandle { self.previous_mouse_position = input.mouse.position; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 1), + input_connector: InputConnector::node(node_id, graphene_std::vector::generator_nodes::circle::RadiusInput::INDEX), input: NodeInput::value(TaggedValue::F64(current_radius + net_delta), false), }); responses.add(NodeGraphMessage::RunDocumentGraph); diff --git a/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/number_of_points_dial.rs b/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/number_of_points_dial.rs index c6fef1fbda..e2f9651117 100644 --- a/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/number_of_points_dial.rs +++ b/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/number_of_points_dial.rs @@ -13,6 +13,9 @@ use crate::messages::tool::common_functionality::shapes::shape_utility::{extract use glam::{DAffine2, DVec2}; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::regular_polygon; +use graphene_std::vector::generator_nodes::star; use std::collections::VecDeque; use std::f64::consts::TAU; @@ -194,14 +197,18 @@ impl NumberOfPointsDial { let net_delta = (delta.length() / 25.).round() * sign; let Some(layer) = self.layer else { return }; - let Some(node_id) = graph_modification_utils::get_star_id(layer, &document.network_interface).or(graph_modification_utils::get_polygon_id(layer, &document.network_interface)) else { + let (node_id, sides_input_index) = if let Some(id) = graph_modification_utils::get_star_id(layer, &document.network_interface) { + (id, star::SidesInput::::INDEX) + } else if let Some(id) = graph_modification_utils::get_polygon_id(layer, &document.network_interface) { + (id, regular_polygon::SidesInput::::INDEX) + } else { return; }; let new_point_count = ((self.initial_points as i32) + (net_delta as i32)).max(3); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 1), + input_connector: InputConnector::node(node_id, sides_input_index), input: NodeInput::value(TaggedValue::U32(new_point_count as u32), false), }); responses.add(NodeGraphMessage::RunDocumentGraph); diff --git a/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/point_radius_handle.rs b/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/point_radius_handle.rs index d72414f48a..efead9c19e 100644 --- a/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/point_radius_handle.rs +++ b/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/point_radius_handle.rs @@ -14,6 +14,9 @@ use crate::messages::tool::common_functionality::shapes::shape_utility::{extract use glam::DVec2; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::regular_polygon; +use graphene_std::vector::generator_nodes::star::*; use std::collections::VecDeque; use std::f64::consts::{FRAC_1_SQRT_2, FRAC_PI_4, PI, SQRT_2}; @@ -63,7 +66,7 @@ impl PointRadiusHandle { let viewport = document.metadata().transform_to_viewport(layer); for i in 0..2 * sides { - let (radius, radius_index) = if i % 2 == 0 { (radius1, 2) } else { (radius2, 3) }; + let (radius, radius_index) = if i % 2 == 0 { (radius1, Radius1Input::INDEX) } else { (radius2, Radius2Input::INDEX) }; let point = star_vertex_position(viewport, i as i32, sides, radius1, radius2); let center = viewport.transform_point2(DVec2::ZERO); @@ -100,7 +103,7 @@ impl PointRadiusHandle { } if point.distance(mouse_position) < 5. { - self.radius_index = 2; + self.radius_index = regular_polygon::RadiusInput::INDEX; self.layer = Some(layer); self.point = i; self.snap_radii.clear(); @@ -337,13 +340,13 @@ impl PointRadiusHandle { return snap_radii; }; - let (Some(&TaggedValue::F64(radius_1)), Some(&TaggedValue::F64(radius_2))) = (node_inputs[2].as_value(), node_inputs[3].as_value()) else { + let (Some(&TaggedValue::F64(radius_1)), Some(&TaggedValue::F64(radius_2))) = (node_inputs[Radius1Input::INDEX].as_value(), node_inputs[Radius2Input::INDEX].as_value()) else { return snap_radii; }; - let other_radius = if radius_index == 3 { radius_1 } else { radius_2 }; + let other_radius = if radius_index == Radius2Input::INDEX { radius_1 } else { radius_2 }; - let Some(&TaggedValue::U32(sides)) = node_inputs[1].as_value() else { + let Some(&TaggedValue::U32(sides)) = node_inputs[SidesInput::::INDEX].as_value() else { return snap_radii; }; @@ -416,13 +419,21 @@ impl PointRadiusHandle { pub fn update_inner_radius(&mut self, document: &DocumentMessageHandler, input: &InputPreprocessorMessageHandler, responses: &mut VecDeque, drag_start: DVec2) { let Some(layer) = self.layer else { return }; - let Some(node_id) = graph_modification_utils::get_star_id(layer, &document.network_interface).or(graph_modification_utils::get_polygon_id(layer, &document.network_interface)) else { + let radius_index = self.radius_index; + + // Radius2Input (index 3) only exists in star nodes + // RadiusInput (index 2) exists in both star (as Radius1Input) and polygon nodes + let node_id = if radius_index == Radius2Input::INDEX { + graph_modification_utils::get_star_id(layer, &document.network_interface) + } else { + graph_modification_utils::get_star_id(layer, &document.network_interface).or(graph_modification_utils::get_polygon_id(layer, &document.network_interface)) + }; + let Some(node_id) = node_id else { return; }; let viewport_transform = document.network_interface.document_metadata().transform_to_viewport(layer); let center = viewport_transform.transform_point2(DVec2::ZERO); - let radius_index = self.radius_index; let original_radius = self.initial_radius; @@ -456,11 +467,11 @@ impl PointRadiusHandle { return; }; - let (Some(&TaggedValue::F64(radius_1)), Some(&TaggedValue::F64(radius_2))) = (node_inputs[2].as_value(), node_inputs[3].as_value()) else { + let (Some(&TaggedValue::F64(radius_1)), Some(&TaggedValue::F64(radius_2))) = (node_inputs[Radius1Input::INDEX].as_value(), node_inputs[Radius2Input::INDEX].as_value()) else { return; }; - let other_radius = if radius_index == 3 { radius_1 } else { radius_2 }; + let other_radius = if radius_index == Radius2Input::INDEX { radius_1 } else { radius_2 }; let flipped = (other_radius.is_sign_positive() && original_radius.is_sign_negative() && new_radius.is_sign_positive()) || (other_radius.is_sign_negative() && original_radius.is_sign_positive() && new_radius.is_sign_negative()); diff --git a/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/sweep_angle_gizmo.rs b/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/sweep_angle_gizmo.rs index efa4b18351..6b03b6f8ac 100644 --- a/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/sweep_angle_gizmo.rs +++ b/editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/sweep_angle_gizmo.rs @@ -11,6 +11,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*; use glam::DVec2; use graph_craft::document::value::TaggedValue; use graph_craft::document::{NodeId, NodeInput}; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::arc::*; use std::collections::VecDeque; use std::f64::consts::FRAC_PI_4; @@ -332,11 +334,11 @@ impl SweepAngleGizmo { self.snap_angles = Self::calculate_snap_angles(); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 2), + input_connector: InputConnector::node(node_id, StartAngleInput::INDEX), input: NodeInput::value(TaggedValue::F64(start_angle), false), }); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 3), + input_connector: InputConnector::node(node_id, SweepAngleInput::INDEX), input: NodeInput::value(TaggedValue::F64(sweep_angle), false), }); diff --git a/editor/src/messages/tool/common_functionality/graph_modification_utils.rs b/editor/src/messages/tool/common_functionality/graph_modification_utils.rs index c71f199078..95c806528c 100644 --- a/editor/src/messages/tool/common_functionality/graph_modification_utils.rs +++ b/editor/src/messages/tool/common_functionality/graph_modification_utils.rs @@ -9,6 +9,7 @@ use graph_craft::document::{NodeId, NodeInput}; use graph_craft::{ProtoNodeIdentifier, concrete}; use graphene_std::Color; use graphene_std::NodeInputDecleration; +use graphene_std::blending_nodes::blending::*; use graphene_std::raster::BlendMode; use graphene_std::raster_types::{CPU, GPU, Raster}; use graphene_std::subpath::Subpath; @@ -19,6 +20,10 @@ use graphene_std::vector::style::{Fill, Gradient}; use graphene_std::vector::{PointId, SegmentId, VectorModificationType}; use std::collections::VecDeque; +const LAYER_SECONDARY_INPUT_INDEX: usize = 1; +const MERGE_CONTENT_INPUT_INDEX: usize = 1; +const FILL_NODE_FILL_INPUT_INDEX: usize = 1; + /// Returns the ID of the first Spline node in the horizontal flow which is not followed by a `Path` node, or `None` if none exists. pub fn find_spline(document: &DocumentMessageHandler, layer: LayerNodeIdentifier) -> Option { document @@ -93,8 +98,8 @@ pub fn merge_layers(document: &DocumentMessageHandler, first_layer: LayerNodeIde parent: first_layer, }); responses.add(NodeGraphMessage::ConnectUpstreamOutputToInput { - downstream_input: InputConnector::node(second_layer.to_node(), 1), - input_connector: InputConnector::node(merge_node_id, 1), + downstream_input: InputConnector::node(second_layer.to_node(), LAYER_SECONDARY_INPUT_INDEX), + input_connector: InputConnector::node(merge_node_id, MERGE_CONTENT_INPUT_INDEX), }); responses.add(NodeGraphMessage::DeleteNodes { node_ids: vec![second_layer.to_node()], @@ -275,10 +280,8 @@ pub fn get_viewport_center(layer: LayerNodeIdentifier, network_interface: &NodeN /// Get the current gradient of a layer from the closest "Fill" node. pub fn get_gradient(layer: LayerNodeIdentifier, network_interface: &NodeNetworkInterface) -> Option { - let fill_index = 1; - let inputs = NodeGraphLayer::new(layer, network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::fill::IDENTIFIER))?; - let TaggedValue::Fill(Fill::Gradient(gradient)) = inputs.get(fill_index)?.as_value()? else { + let TaggedValue::Fill(Fill::Gradient(gradient)) = inputs.get(FILL_NODE_FILL_INPUT_INDEX)?.as_value()? else { return None; }; Some(gradient.clone()) @@ -286,10 +289,8 @@ pub fn get_gradient(layer: LayerNodeIdentifier, network_interface: &NodeNetworkI /// Get the current fill of a layer from the closest "Fill" node. pub fn get_fill_color(layer: LayerNodeIdentifier, network_interface: &NodeNetworkInterface) -> Option { - let fill_index = 1; - let inputs = NodeGraphLayer::new(layer, network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::fill::IDENTIFIER))?; - let TaggedValue::Fill(Fill::Solid(color)) = inputs.get(fill_index)?.as_value()? else { + let TaggedValue::Fill(Fill::Solid(color)) = inputs.get(FILL_NODE_FILL_INPUT_INDEX)?.as_value()? else { return None; }; Some(color.to_linear_srgb()) @@ -298,7 +299,7 @@ pub fn get_fill_color(layer: LayerNodeIdentifier, network_interface: &NodeNetwor /// Get the current blend mode of a layer from the closest "Blending" node. pub fn get_blend_mode(layer: LayerNodeIdentifier, network_interface: &NodeNetworkInterface) -> Option { let inputs = NodeGraphLayer::new(layer, network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::blending_nodes::blending::IDENTIFIER))?; - let TaggedValue::BlendMode(blend_mode) = inputs.get(1)?.as_value()? else { + let TaggedValue::BlendMode(blend_mode) = inputs.get(BlendModeInput::INDEX)?.as_value()? else { return None; }; Some(*blend_mode) @@ -314,7 +315,7 @@ pub fn get_blend_mode(layer: LayerNodeIdentifier, network_interface: &NodeNetwor /// With those limitations in mind, the intention of this function is to show just the value already present in an upstream Opacity node so that value can be directly edited. pub fn get_opacity(layer: LayerNodeIdentifier, network_interface: &NodeNetworkInterface) -> Option { let inputs = NodeGraphLayer::new(layer, network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::blending_nodes::blending::IDENTIFIER))?; - let TaggedValue::F64(opacity) = inputs.get(2)?.as_value()? else { + let TaggedValue::F64(opacity) = inputs.get(OpacityInput::INDEX)?.as_value()? else { return None; }; Some(*opacity) @@ -322,7 +323,7 @@ pub fn get_opacity(layer: LayerNodeIdentifier, network_interface: &NodeNetworkIn pub fn get_clip_mode(layer: LayerNodeIdentifier, network_interface: &NodeNetworkInterface) -> Option { let inputs = NodeGraphLayer::new(layer, network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::blending_nodes::blending::IDENTIFIER))?; - let TaggedValue::Bool(clip) = inputs.get(4)?.as_value()? else { + let TaggedValue::Bool(clip) = inputs.get(ClipInput::INDEX)?.as_value()? else { return None; }; Some(*clip) @@ -330,7 +331,7 @@ pub fn get_clip_mode(layer: LayerNodeIdentifier, network_interface: &NodeNetwork pub fn get_fill(layer: LayerNodeIdentifier, network_interface: &NodeNetworkInterface) -> Option { let inputs = NodeGraphLayer::new(layer, network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::blending_nodes::blending::IDENTIFIER))?; - let TaggedValue::F64(fill) = inputs.get(3)?.as_value()? else { + let TaggedValue::F64(fill) = inputs.get(FillInput::INDEX)?.as_value()? else { return None; }; Some(*fill) @@ -518,7 +519,7 @@ impl<'a> NodeGraphLayer<'a> { /// Check if a layer is a raster layer pub fn is_raster_layer(layer: LayerNodeIdentifier, network_interface: &mut NodeNetworkInterface) -> bool { - let layer_input_type = network_interface.input_type(&InputConnector::node(layer.to_node(), 1), &[]); + let layer_input_type = network_interface.input_type(&InputConnector::node(layer.to_node(), InputConnector::PRIMARY_INPUT_INDEX + 1), &[]); layer_input_type.compiled_nested_type() == Some(&concrete!(Table>)) || layer_input_type.compiled_nested_type() == Some(&concrete!(Table>)) } diff --git a/editor/src/messages/tool/common_functionality/shapes/arc_shape.rs b/editor/src/messages/tool/common_functionality/shapes/arc_shape.rs index 7eabb3c619..027a58fe30 100644 --- a/editor/src/messages/tool/common_functionality/shapes/arc_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/arc_shape.rs @@ -12,6 +12,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*; use glam::DAffine2; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::arc::*; use graphene_std::vector::misc::ArcType; use std::collections::VecDeque; @@ -172,7 +174,7 @@ impl Arc { } responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 1), + input_connector: InputConnector::node(node_id, RadiusInput::INDEX), input: NodeInput::value(TaggedValue::F64(radius), false), }); diff --git a/editor/src/messages/tool/common_functionality/shapes/arrow_shape.rs b/editor/src/messages/tool/common_functionality/shapes/arrow_shape.rs index df04b578ff..cce19bb1e6 100644 --- a/editor/src/messages/tool/common_functionality/shapes/arrow_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/arrow_shape.rs @@ -14,6 +14,8 @@ use crate::messages::tool::common_functionality::snapping::SnapData; use glam::{DAffine2, DVec2}; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::arrow::*; use std::collections::VecDeque; #[derive(Default)] @@ -67,7 +69,7 @@ impl Arrow { let document_to_viewport = document.metadata().document_to_viewport; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 1), + input_connector: InputConnector::node(node_id, StartInput::INDEX), input: NodeInput::value(TaggedValue::DVec2(arrow_to), false), }); let downstream = document.metadata().downstream_transform_to_viewport(layer); diff --git a/editor/src/messages/tool/common_functionality/shapes/circle_shape.rs b/editor/src/messages/tool/common_functionality/shapes/circle_shape.rs index 836f50f9e6..466d293a43 100644 --- a/editor/src/messages/tool/common_functionality/shapes/circle_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/circle_shape.rs @@ -12,6 +12,7 @@ use crate::messages::tool::tool_messages::tool_prelude::*; use glam::DAffine2; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; #[derive(Clone, Debug, Default)] pub struct CircleGizmoHandler { @@ -107,7 +108,7 @@ impl Circle { let radius: f64 = if dimensions.x > dimensions.y { dimensions.y / 2. } else { dimensions.x / 2. }; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 1), + input_connector: InputConnector::node(node_id, graphene_std::vector::generator_nodes::circle::RadiusInput::INDEX), input: NodeInput::value(TaggedValue::F64(radius), false), }); diff --git a/editor/src/messages/tool/common_functionality/shapes/ellipse_shape.rs b/editor/src/messages/tool/common_functionality/shapes/ellipse_shape.rs index eb33a08427..be796a3bce 100644 --- a/editor/src/messages/tool/common_functionality/shapes/ellipse_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/ellipse_shape.rs @@ -9,6 +9,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*; use glam::DAffine2; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::ellipse::*; use std::collections::VecDeque; #[derive(Default)] @@ -37,11 +39,11 @@ impl Ellipse { }; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 1), + input_connector: InputConnector::node(node_id, RadiusXInput::INDEX), input: NodeInput::value(TaggedValue::F64(((start.x - end.x) / 2.).abs()), false), }); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 2), + input_connector: InputConnector::node(node_id, RadiusYInput::INDEX), input: NodeInput::value(TaggedValue::F64(((start.y - end.y) / 2.).abs()), false), }); responses.add(GraphOperationMessage::TransformSet { diff --git a/editor/src/messages/tool/common_functionality/shapes/line_shape.rs b/editor/src/messages/tool/common_functionality/shapes/line_shape.rs index 397dc02a5e..7287f6afa1 100644 --- a/editor/src/messages/tool/common_functionality/shapes/line_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/line_shape.rs @@ -13,6 +13,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*; use glam::{DAffine2, DVec2}; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::line::*; use std::collections::VecDeque; #[derive(Clone, PartialEq, Debug, Default)] @@ -73,7 +75,7 @@ impl Line { let line_to = document_points[1] - document_points[0]; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 1), + input_connector: InputConnector::node(node_id, StartInput::INDEX), input: NodeInput::value(TaggedValue::DVec2(line_to), false), }); let document_to_viewport = document.metadata().document_to_viewport; @@ -96,7 +98,7 @@ impl Line { let node_inputs = NodeGraphLayer::new(layer, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::line::IDENTIFIER))?; - let Some(&TaggedValue::DVec2(line_to)) = node_inputs[1].as_value() else { + let Some(&TaggedValue::DVec2(line_to)) = node_inputs[StartInput::INDEX].as_value() else { return None; }; @@ -194,6 +196,8 @@ mod test_line_tool { use crate::test_utils::test_prelude::*; use glam::DAffine2; use graph_craft::document::value::TaggedValue; + use graphene_std::NodeInputDecleration; + use graphene_std::vector::generator_nodes::line::{StartInput, EndInput}; /// Get the line's document-space start and end points by reading line_to from the node /// and computing the actual positions via the layer's transform. @@ -206,7 +210,7 @@ mod test_line_tool { .selected_visible_and_unlocked_layers(network_interface) .filter_map(|layer| { let node_inputs = NodeGraphLayer::new(layer, network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::line::IDENTIFIER))?; - let Some(&TaggedValue::DVec2(line_to)) = node_inputs[1].as_value() else { + let Some(&TaggedValue::DVec2(line_to)) = node_inputs[StartInput::INDEX].as_value() else { return None; }; diff --git a/editor/src/messages/tool/common_functionality/shapes/polygon_shape.rs b/editor/src/messages/tool/common_functionality/shapes/polygon_shape.rs index 7b22144a71..0f291c87ff 100644 --- a/editor/src/messages/tool/common_functionality/shapes/polygon_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/polygon_shape.rs @@ -15,6 +15,9 @@ use crate::messages::tool::tool_messages::tool_prelude::*; use glam::DAffine2; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::regular_polygon::*; +use graphene_std::vector::generator_nodes::star; use std::collections::VecDeque; #[derive(Clone, Debug, Default)] @@ -147,7 +150,7 @@ impl Polygon { }; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 2), + input_connector: InputConnector::node(node_id, RadiusInput::INDEX), input: NodeInput::value(TaggedValue::F64(radius), false), }); @@ -163,18 +166,26 @@ impl Polygon { /// Updates the number of sides of a polygon or star node and syncs the Shape tool UI widget accordingly. /// Increases or decreases the side count based on user input, clamped to a minimum of 3. pub fn decrease_or_increase_sides(decrease: bool, layer: LayerNodeIdentifier, document: &DocumentMessageHandler, responses: &mut VecDeque) { - let Some(node_id) = graph_modification_utils::get_polygon_id(layer, &document.network_interface).or(graph_modification_utils::get_star_id(layer, &document.network_interface)) else { - return; - }; - - let Some(node_inputs) = NodeGraphLayer::new(layer, &document.network_interface) - .find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::regular_polygon::IDENTIFIER)) - .or(NodeGraphLayer::new(layer, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::star::IDENTIFIER))) - else { - return; - }; - - let Some(&TaggedValue::U32(n)) = node_inputs.get(1).unwrap().as_value() else { + let (node_id, sides_input_index, n) = if let Some(id) = graph_modification_utils::get_polygon_id(layer, &document.network_interface) { + let Some(node_inputs) = + NodeGraphLayer::new(layer, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::regular_polygon::IDENTIFIER)) + else { + return; + }; + let Some(&TaggedValue::U32(n)) = node_inputs.get(SidesInput::::INDEX).and_then(|input| input.as_value()) else { + return; + }; + (id, SidesInput::::INDEX, n) + } else if let Some(id) = graph_modification_utils::get_star_id(layer, &document.network_interface) { + let Some(node_inputs) = NodeGraphLayer::new(layer, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::star::IDENTIFIER)) + else { + return; + }; + let Some(&TaggedValue::U32(n)) = node_inputs.get(star::SidesInput::::INDEX).and_then(|input| input.as_value()) else { + return; + }; + (id, star::SidesInput::::INDEX, n) + } else { return; }; @@ -185,7 +196,7 @@ impl Polygon { }); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 1), + input_connector: InputConnector::node(node_id, sides_input_index), input: NodeInput::value(TaggedValue::U32(new_dimension), false), }); responses.add(NodeGraphMessage::RunDocumentGraph); diff --git a/editor/src/messages/tool/common_functionality/shapes/rectangle_shape.rs b/editor/src/messages/tool/common_functionality/shapes/rectangle_shape.rs index 787684a8fa..a98efd2216 100644 --- a/editor/src/messages/tool/common_functionality/shapes/rectangle_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/rectangle_shape.rs @@ -9,6 +9,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*; use glam::DAffine2; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::rectangle::*; use std::collections::VecDeque; #[derive(Default)] @@ -37,11 +39,11 @@ impl Rectangle { }; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 1), + input_connector: InputConnector::node(node_id, WidthInput::INDEX), input: NodeInput::value(TaggedValue::F64((start.x - end.x).abs()), false), }); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 2), + input_connector: InputConnector::node(node_id, HeightInput::INDEX), input: NodeInput::value(TaggedValue::F64((start.y - end.y).abs()), false), }); responses.add(GraphOperationMessage::TransformSet { diff --git a/editor/src/messages/tool/common_functionality/shapes/shape_utility.rs b/editor/src/messages/tool/common_functionality/shapes/shape_utility.rs index 96dbdd5165..7cae6cc752 100644 --- a/editor/src/messages/tool/common_functionality/shapes/shape_utility.rs +++ b/editor/src/messages/tool/common_functionality/shapes/shape_utility.rs @@ -19,6 +19,8 @@ use graph_craft::document::value::TaggedValue; use graphene_std::NodeInputDecleration; use graphene_std::subpath::{self, Subpath}; use graphene_std::vector::click_target::ClickTargetType; +use graphene_std::vector::generator_nodes::regular_polygon::SidesInput as PolygonSidesInput; +use graphene_std::vector::generator_nodes::star::SidesInput as StarSidesInput; use graphene_std::vector::misc::{ArcType, GridType, SpiralType, dvec2_to_point}; use kurbo::{BezPath, PathEl, Shape}; use std::collections::VecDeque; @@ -194,7 +196,7 @@ pub fn update_radius_sign(end: DVec2, start: DVec2, layer: LayerNodeIdentifier, let new_layer = NodeGraphLayer::new(layer, &document.network_interface); if new_layer - .find_input(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::regular_polygon::IDENTIFIER), 1) + .find_input(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::regular_polygon::IDENTIFIER), PolygonSidesInput::::INDEX) .unwrap_or(&TaggedValue::U32(0)) .to_u32() % 2 == 1 @@ -204,14 +206,14 @@ pub fn update_radius_sign(end: DVec2, start: DVec2, layer: LayerNodeIdentifier, }; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(polygon_node_id, 2), + input_connector: InputConnector::node(polygon_node_id, graphene_std::vector::generator_nodes::regular_polygon::RadiusInput::INDEX), input: NodeInput::value(TaggedValue::F64(sign_num * 0.5), false), }); return; } if new_layer - .find_input(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::star::IDENTIFIER), 1) + .find_input(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::star::IDENTIFIER), StarSidesInput::::INDEX) .unwrap_or(&TaggedValue::U32(0)) .to_u32() % 2 == 1 @@ -221,11 +223,11 @@ pub fn update_radius_sign(end: DVec2, start: DVec2, layer: LayerNodeIdentifier, }; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(star_node_id, 2), + input_connector: InputConnector::node(star_node_id, graphene_std::vector::generator_nodes::star::Radius1Input::INDEX), input: NodeInput::value(TaggedValue::F64(sign_num * 0.5), false), }); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(star_node_id, 3), + input_connector: InputConnector::node(star_node_id, graphene_std::vector::generator_nodes::star::Radius2Input::INDEX), input: NodeInput::value(TaggedValue::F64(sign_num * 0.25), false), }); } @@ -287,11 +289,15 @@ pub fn anchor_overlays(document: &DocumentMessageHandler, overlay_context: &mut /// Extract the node input values of Star. /// Returns an option of (sides, radius1, radius2). pub fn extract_star_parameters(layer: Option, document: &DocumentMessageHandler) -> Option<(u32, f64, f64)> { + use graphene_std::vector::generator_nodes::star::*; + let node_inputs = NodeGraphLayer::new(layer?, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::star::IDENTIFIER))?; - let (Some(&TaggedValue::U32(sides)), Some(&TaggedValue::F64(radius_1)), Some(&TaggedValue::F64(radius_2))) = - (node_inputs.get(1)?.as_value(), node_inputs.get(2)?.as_value(), node_inputs.get(3)?.as_value()) - else { + let (Some(&TaggedValue::U32(sides)), Some(&TaggedValue::F64(radius_1)), Some(&TaggedValue::F64(radius_2))) = ( + node_inputs.get(SidesInput::::INDEX)?.as_value(), + node_inputs.get(Radius1Input::INDEX)?.as_value(), + node_inputs.get(Radius2Input::INDEX)?.as_value(), + ) else { return None; }; @@ -301,10 +307,12 @@ pub fn extract_star_parameters(layer: Option, document: &Do /// Extract the node input values of Polygon. /// Returns an option of (sides, radius). pub fn extract_polygon_parameters(layer: Option, document: &DocumentMessageHandler) -> Option<(u32, f64)> { + use graphene_std::vector::generator_nodes::regular_polygon::*; + let node_inputs = NodeGraphLayer::new(layer?, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::regular_polygon::IDENTIFIER))?; - let (Some(&TaggedValue::U32(n)), Some(&TaggedValue::F64(radius))) = (node_inputs.get(1)?.as_value(), node_inputs.get(2)?.as_value()) else { + let (Some(&TaggedValue::U32(n)), Some(&TaggedValue::F64(radius))) = (node_inputs.get(SidesInput::::INDEX)?.as_value(), node_inputs.get(RadiusInput::INDEX)?.as_value()) else { return None; }; @@ -314,13 +322,15 @@ pub fn extract_polygon_parameters(layer: Option, document: /// Extract the node input values of an arc. /// Returns an option of (radius, start angle, sweep angle, arc type). pub fn extract_arc_parameters(layer: Option, document: &DocumentMessageHandler) -> Option<(f64, f64, f64, ArcType)> { + use graphene_std::vector::generator_nodes::arc::*; + let node_inputs = NodeGraphLayer::new(layer?, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::arc::IDENTIFIER))?; let (Some(&TaggedValue::F64(radius)), Some(&TaggedValue::F64(start_angle)), Some(&TaggedValue::F64(sweep_angle)), Some(&TaggedValue::ArcType(arc_type))) = ( - node_inputs.get(1)?.as_value(), - node_inputs.get(2)?.as_value(), - node_inputs.get(3)?.as_value(), - node_inputs.get(4)?.as_value(), + node_inputs.get(RadiusInput::INDEX)?.as_value(), + node_inputs.get(StartAngleInput::INDEX)?.as_value(), + node_inputs.get(SweepAngleInput::INDEX)?.as_value(), + node_inputs.get(ArcTypeInput::INDEX)?.as_value(), ) else { return None; }; @@ -385,7 +395,7 @@ pub fn arc_end_points_ignore_layer(radius: f64, start_angle: f64, sweep_angle: f pub fn extract_circle_radius(layer: LayerNodeIdentifier, document: &DocumentMessageHandler) -> Option { let node_inputs = NodeGraphLayer::new(layer, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::circle::IDENTIFIER))?; - let Some(&TaggedValue::F64(radius)) = node_inputs.get(1)?.as_value() else { + let Some(&TaggedValue::F64(radius)) = node_inputs.get(graphene_std::vector::generator_nodes::circle::RadiusInput::INDEX)?.as_value() else { return None; }; diff --git a/editor/src/messages/tool/common_functionality/shapes/star_shape.rs b/editor/src/messages/tool/common_functionality/shapes/star_shape.rs index acdde2c286..85bf964e34 100644 --- a/editor/src/messages/tool/common_functionality/shapes/star_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/star_shape.rs @@ -15,6 +15,8 @@ use core::f64; use glam::DAffine2; use graph_craft::document::NodeInput; use graph_craft::document::value::TaggedValue; +use graphene_std::NodeInputDecleration; +use graphene_std::vector::generator_nodes::star::*; use std::collections::VecDeque; #[derive(Clone, Debug, Default)] @@ -152,12 +154,12 @@ impl Star { }; responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 2), + input_connector: InputConnector::node(node_id, Radius1Input::INDEX), input: NodeInput::value(TaggedValue::F64(radius), false), }); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(node_id, 3), + input_connector: InputConnector::node(node_id, Radius2Input::INDEX), input: NodeInput::value(TaggedValue::F64(radius / 2.), false), }); diff --git a/editor/src/messages/tool/common_functionality/utility_functions.rs b/editor/src/messages/tool/common_functionality/utility_functions.rs index e8d4293721..83a2e2d21f 100644 --- a/editor/src/messages/tool/common_functionality/utility_functions.rs +++ b/editor/src/messages/tool/common_functionality/utility_functions.rs @@ -22,6 +22,8 @@ use graphene_std::vector::misc::{HandleId, ManipulatorPointId, dvec2_to_point}; use graphene_std::vector::{HandleExt, PointId, SegmentId, Vector, VectorModification, VectorModificationType}; use kurbo::{CubicBez, DEFAULT_ACCURACY, Line, ParamCurve, PathSeg, Point, QuadBez, Shape}; +const PATH_MODIFICATION_INPUT_INDEX: usize = 1; + /// Determines if a path should be extended. Goal in viewport space. Returns the path and if it is extending from the start, if applicable. pub fn should_extend(document: &DocumentMessageHandler, goal: DVec2, tolerance: f64, layers: impl Iterator) -> Option<(LayerNodeIdentifier, PointId, DVec2)> { closest_point(document, goal, tolerance, layers, |_| false) @@ -575,14 +577,15 @@ pub fn make_path_editable_is_allowed(network_interface: &mut NodeNetworkInterfac // Must be a layer of type Table let node_id = NodeGraphLayer::new(first_layer, network_interface).horizontal_layer_flow().nth(1)?; - let output_type = network_interface.output_type(&OutputConnector::node(node_id, 0), &[]); + let output_type = network_interface.output_type(&OutputConnector::node(node_id, OutputConnector::PRIMARY_OUTPUT_INDEX), &[]); if output_type.compiled_nested_type() != Some(&concrete!(Table)) { return None; } // Must not already have an existing Path node, in the right-most part of the layer chain, which has an empty set of modifications // (otherwise users could repeatedly keep running this command and stacking up empty Path nodes) - if let Some(TaggedValue::VectorModification(modifications)) = NodeGraphLayer::new(first_layer, network_interface).find_input(&DefinitionIdentifier::Network("Path".into()), 1) + if let Some(TaggedValue::VectorModification(modifications)) = + NodeGraphLayer::new(first_layer, network_interface).find_input(&DefinitionIdentifier::Network("Path".into()), PATH_MODIFICATION_INPUT_INDEX) && modifications.as_ref() == &VectorModification::default() { return None; diff --git a/editor/src/messages/tool/tool_messages/brush_tool.rs b/editor/src/messages/tool/tool_messages/brush_tool.rs index 5319e21aa4..186f0d87c9 100644 --- a/editor/src/messages/tool/tool_messages/brush_tool.rs +++ b/editor/src/messages/tool/tool_messages/brush_tool.rs @@ -12,6 +12,7 @@ use graphene_std::brush::brush_stroke::{BrushInputSample, BrushStroke, BrushStyl use graphene_std::raster::BlendMode; const BRUSH_MAX_SIZE: f64 = 5000.; +const BRUSH_STROKES_INDEX: usize = 1; #[cfg_attr(feature = "wasm", derive(tsify::Tsify))] #[derive(PartialEq, Copy, Clone, Debug, serde::Serialize, serde::Deserialize)] @@ -320,7 +321,7 @@ impl BrushToolData { }; if reference == DefinitionIdentifier::Network("Brush".into()) && node_id != layer.to_node() { - let points_input = node.inputs.get(1)?; + let points_input = node.inputs.get(BRUSH_STROKES_INDEX)?; let Some(TaggedValue::BrushStrokes(strokes)) = points_input.as_value() else { continue }; self.strokes.clone_from(strokes); diff --git a/editor/src/messages/tool/tool_messages/spline_tool.rs b/editor/src/messages/tool/tool_messages/spline_tool.rs index 62e9b8e600..6cc9e5ad07 100644 --- a/editor/src/messages/tool/tool_messages/spline_tool.rs +++ b/editor/src/messages/tool/tool_messages/spline_tool.rs @@ -396,7 +396,7 @@ impl Fsm for SplineToolFsmState { let path_node_type = resolve_network_node_type("Path").expect("Path node does not exist"); let path_node = path_node_type.default_node_template(); let spline_node_type = resolve_proto_node_type(graphene_std::vector::spline::IDENTIFIER).expect("Spline node does not exist"); - let spline_node = spline_node_type.node_template_input_override([Some(NodeInput::node(NodeId(1), 0))]); + let spline_node = spline_node_type.node_template_input_override([Some(NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX))]); let nodes = vec![(NodeId(1), path_node), (NodeId(0), spline_node)]; let layer = graph_modification_utils::new_custom(NodeId::new(), nodes, parent, responses); diff --git a/editor/src/messages/tool/tool_messages/text_tool.rs b/editor/src/messages/tool/tool_messages/text_tool.rs index c5471f0bff..01c7d1508d 100644 --- a/editor/src/messages/tool/tool_messages/text_tool.rs +++ b/editor/src/messages/tool/tool_messages/text_tool.rs @@ -465,7 +465,10 @@ impl TextToolData { responses.add(NodeGraphMessage::SelectedNodesSet { nodes: vec![self.layer.to_node()] }); // Make the rendered text invisible while editing responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(graph_modification_utils::get_text_id(self.layer, &document.network_interface).unwrap(), 1), + input_connector: InputConnector::node( + graph_modification_utils::get_text_id(self.layer, &document.network_interface).unwrap(), + graphene_std::text::text::TextInput::INDEX, + ), input: NodeInput::value(TaggedValue::String("".to_string()), false), }); responses.add(NodeGraphMessage::RunDocumentGraph); @@ -945,7 +948,10 @@ impl Fsm for TextToolFsmState { tool_data.set_editing(false, font_cache, responses); responses.add(NodeGraphMessage::SetInput { - input_connector: InputConnector::node(graph_modification_utils::get_text_id(tool_data.layer, &document.network_interface).unwrap(), 1), + input_connector: InputConnector::node( + graph_modification_utils::get_text_id(tool_data.layer, &document.network_interface).unwrap(), + graphene_std::text::text::TextInput::INDEX, + ), input: NodeInput::value(TaggedValue::String(tool_data.new_text.clone()), false), }); responses.add(NodeGraphMessage::RunDocumentGraph); diff --git a/editor/src/node_graph_executor.rs b/editor/src/node_graph_executor.rs index aa63da4076..56d2d3d053 100644 --- a/editor/src/node_graph_executor.rs +++ b/editor/src/node_graph_executor.rs @@ -564,7 +564,7 @@ mod test { let mut monitor_node_ids = Vec::with_capacity(node.inputs.len()); for input in &mut node.inputs { let node_id = NodeId::new(); - let old_input = std::mem::replace(input, NodeInput::node(node_id, 0)); + let old_input = std::mem::replace(input, NodeInput::node(node_id, NodeInput::PRIMARY_OUTPUT_INDEX)); monitor_nodes.push((old_input, node_id)); path.push(node_id); monitor_node_ids.push(path.clone()); diff --git a/editor/src/node_graph_executor/runtime.rs b/editor/src/node_graph_executor/runtime.rs index 26102cda07..68c501823d 100644 --- a/editor/src/node_graph_executor/runtime.rs +++ b/editor/src/node_graph_executor/runtime.rs @@ -648,7 +648,7 @@ impl InspectState { } let monitor_node = DocumentNode { - inputs: vec![NodeInput::node(inspect_node, 0)], // Connect to the primary output of the inspect node + inputs: vec![NodeInput::node(inspect_node, NodeInput::PRIMARY_OUTPUT_INDEX)], // Connect to the primary output of the inspect node implementation: DocumentNodeImplementation::ProtoNode(graphene_std::memo::monitor::IDENTIFIER), call_argument: graph_craft::generic!(T), skip_deduplication: true, diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/difference-ours.png b/libraries/path-bool/visual-tests/dangling-01/test-results/difference-ours.png new file mode 100644 index 0000000000..ec9682729c Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/dangling-01/test-results/difference-ours.svg new file mode 100644 index 0000000000..fcbe297fb2 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-01/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/difference.png b/libraries/path-bool/visual-tests/dangling-01/test-results/difference.png new file mode 100644 index 0000000000..ec9682729c Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/division-ours.png b/libraries/path-bool/visual-tests/dangling-01/test-results/division-ours.png new file mode 100644 index 0000000000..7d802d273f Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/division-ours.svg b/libraries/path-bool/visual-tests/dangling-01/test-results/division-ours.svg new file mode 100644 index 0000000000..167a3ee3f2 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-01/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/division.png b/libraries/path-bool/visual-tests/dangling-01/test-results/division.png new file mode 100644 index 0000000000..7d802d273f Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/dangling-01/test-results/exclusion-ours.png new file mode 100644 index 0000000000..6d5e65b5d4 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/dangling-01/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..676429d9b4 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-01/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/exclusion.png b/libraries/path-bool/visual-tests/dangling-01/test-results/exclusion.png new file mode 100644 index 0000000000..6d5e65b5d4 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/dangling-01/test-results/fracture-ours.png new file mode 100644 index 0000000000..c0ee8cc5e0 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/dangling-01/test-results/fracture-ours.svg new file mode 100644 index 0000000000..31fe475c04 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-01/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/fracture.png b/libraries/path-bool/visual-tests/dangling-01/test-results/fracture.png new file mode 100644 index 0000000000..2b741ccb25 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/dangling-01/test-results/intersection-ours.png new file mode 100644 index 0000000000..23f575c9ac Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/dangling-01/test-results/intersection-ours.svg new file mode 100644 index 0000000000..b851550714 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-01/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/intersection.png b/libraries/path-bool/visual-tests/dangling-01/test-results/intersection.png new file mode 100644 index 0000000000..23f575c9ac Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/union-ours.png b/libraries/path-bool/visual-tests/dangling-01/test-results/union-ours.png new file mode 100644 index 0000000000..80f44b6b46 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/union-ours.svg b/libraries/path-bool/visual-tests/dangling-01/test-results/union-ours.svg new file mode 100644 index 0000000000..bd4a91e587 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-01/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-01/test-results/union.png b/libraries/path-bool/visual-tests/dangling-01/test-results/union.png new file mode 100644 index 0000000000..80f44b6b46 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-01/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/difference-ours.png b/libraries/path-bool/visual-tests/dangling-02/test-results/difference-ours.png new file mode 100644 index 0000000000..ec9682729c Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/dangling-02/test-results/difference-ours.svg new file mode 100644 index 0000000000..fcbe297fb2 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-02/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/difference.png b/libraries/path-bool/visual-tests/dangling-02/test-results/difference.png new file mode 100644 index 0000000000..ec9682729c Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/division-ours.png b/libraries/path-bool/visual-tests/dangling-02/test-results/division-ours.png new file mode 100644 index 0000000000..7d802d273f Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/division-ours.svg b/libraries/path-bool/visual-tests/dangling-02/test-results/division-ours.svg new file mode 100644 index 0000000000..11838b9547 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-02/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/division.png b/libraries/path-bool/visual-tests/dangling-02/test-results/division.png new file mode 100644 index 0000000000..7d802d273f Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/dangling-02/test-results/exclusion-ours.png new file mode 100644 index 0000000000..78f96145ad Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/dangling-02/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..1556a5bce7 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-02/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/exclusion.png b/libraries/path-bool/visual-tests/dangling-02/test-results/exclusion.png new file mode 100644 index 0000000000..78f96145ad Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/dangling-02/test-results/fracture-ours.png new file mode 100644 index 0000000000..7fe6893e12 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/dangling-02/test-results/fracture-ours.svg new file mode 100644 index 0000000000..47471c0913 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-02/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/fracture.png b/libraries/path-bool/visual-tests/dangling-02/test-results/fracture.png new file mode 100644 index 0000000000..7fe6893e12 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/dangling-02/test-results/intersection-ours.png new file mode 100644 index 0000000000..23f575c9ac Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/dangling-02/test-results/intersection-ours.svg new file mode 100644 index 0000000000..8ccda51f9d --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-02/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/intersection.png b/libraries/path-bool/visual-tests/dangling-02/test-results/intersection.png new file mode 100644 index 0000000000..23f575c9ac Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/union-ours.png b/libraries/path-bool/visual-tests/dangling-02/test-results/union-ours.png new file mode 100644 index 0000000000..e18e27bf37 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/union-ours.svg b/libraries/path-bool/visual-tests/dangling-02/test-results/union-ours.svg new file mode 100644 index 0000000000..0da83903cb --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-02/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-02/test-results/union.png b/libraries/path-bool/visual-tests/dangling-02/test-results/union.png new file mode 100644 index 0000000000..e18e27bf37 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-02/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/difference-ours.png b/libraries/path-bool/visual-tests/dangling-03/test-results/difference-ours.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/dangling-03/test-results/difference-ours.svg new file mode 100644 index 0000000000..fc10f11050 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-03/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/difference.png b/libraries/path-bool/visual-tests/dangling-03/test-results/difference.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/division-ours.png b/libraries/path-bool/visual-tests/dangling-03/test-results/division-ours.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/division-ours.svg b/libraries/path-bool/visual-tests/dangling-03/test-results/division-ours.svg new file mode 100644 index 0000000000..7c2232c34b --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-03/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/division.png b/libraries/path-bool/visual-tests/dangling-03/test-results/division.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/dangling-03/test-results/exclusion-ours.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/dangling-03/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..fc10f11050 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-03/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/exclusion.png b/libraries/path-bool/visual-tests/dangling-03/test-results/exclusion.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/dangling-03/test-results/fracture-ours.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/dangling-03/test-results/fracture-ours.svg new file mode 100644 index 0000000000..7c2232c34b --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-03/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/fracture.png b/libraries/path-bool/visual-tests/dangling-03/test-results/fracture.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/dangling-03/test-results/intersection-ours.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/dangling-03/test-results/intersection-ours.svg new file mode 100644 index 0000000000..fc10f11050 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-03/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/intersection.png b/libraries/path-bool/visual-tests/dangling-03/test-results/intersection.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/union-ours.png b/libraries/path-bool/visual-tests/dangling-03/test-results/union-ours.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/union-ours.svg b/libraries/path-bool/visual-tests/dangling-03/test-results/union-ours.svg new file mode 100644 index 0000000000..fc10f11050 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-03/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-03/test-results/union.png b/libraries/path-bool/visual-tests/dangling-03/test-results/union.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-03/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/difference-ours.png b/libraries/path-bool/visual-tests/dangling-04/test-results/difference-ours.png new file mode 100644 index 0000000000..b5c1b220fe Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/dangling-04/test-results/difference-ours.svg new file mode 100644 index 0000000000..1bd64bd7dd --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-04/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/difference.png b/libraries/path-bool/visual-tests/dangling-04/test-results/difference.png new file mode 100644 index 0000000000..b5c1b220fe Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/division-ours.png b/libraries/path-bool/visual-tests/dangling-04/test-results/division-ours.png new file mode 100644 index 0000000000..d3a30a5b5f Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/division-ours.svg b/libraries/path-bool/visual-tests/dangling-04/test-results/division-ours.svg new file mode 100644 index 0000000000..7de29807c6 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-04/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/division.png b/libraries/path-bool/visual-tests/dangling-04/test-results/division.png new file mode 100644 index 0000000000..d3a30a5b5f Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/dangling-04/test-results/exclusion-ours.png new file mode 100644 index 0000000000..d29136bc0f Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/dangling-04/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..ca6c767521 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-04/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/exclusion.png b/libraries/path-bool/visual-tests/dangling-04/test-results/exclusion.png new file mode 100644 index 0000000000..d29136bc0f Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/dangling-04/test-results/fracture-ours.png new file mode 100644 index 0000000000..fefafc0c96 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/dangling-04/test-results/fracture-ours.svg new file mode 100644 index 0000000000..df9d862ef9 --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-04/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/fracture.png b/libraries/path-bool/visual-tests/dangling-04/test-results/fracture.png new file mode 100644 index 0000000000..51002747e2 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/dangling-04/test-results/intersection-ours.png new file mode 100644 index 0000000000..b0e1400fca Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/dangling-04/test-results/intersection-ours.svg new file mode 100644 index 0000000000..738e9f3a9b --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-04/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/intersection.png b/libraries/path-bool/visual-tests/dangling-04/test-results/intersection.png new file mode 100644 index 0000000000..b0e1400fca Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/union-ours.png b/libraries/path-bool/visual-tests/dangling-04/test-results/union-ours.png new file mode 100644 index 0000000000..ac0bc3ef64 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/union-ours.svg b/libraries/path-bool/visual-tests/dangling-04/test-results/union-ours.svg new file mode 100644 index 0000000000..934cdfd65e --- /dev/null +++ b/libraries/path-bool/visual-tests/dangling-04/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/dangling-04/test-results/union.png b/libraries/path-bool/visual-tests/dangling-04/test-results/union.png new file mode 100644 index 0000000000..ac0bc3ef64 Binary files /dev/null and b/libraries/path-bool/visual-tests/dangling-04/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/difference-ours.png b/libraries/path-bool/visual-tests/nesting-01/test-results/difference-ours.png new file mode 100644 index 0000000000..a1ebcc0b28 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/nesting-01/test-results/difference-ours.svg new file mode 100644 index 0000000000..6afbb7e69d --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-01/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/difference.png b/libraries/path-bool/visual-tests/nesting-01/test-results/difference.png new file mode 100644 index 0000000000..a1ebcc0b28 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/division-ours.png b/libraries/path-bool/visual-tests/nesting-01/test-results/division-ours.png new file mode 100644 index 0000000000..d913c062f1 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/division-ours.svg b/libraries/path-bool/visual-tests/nesting-01/test-results/division-ours.svg new file mode 100644 index 0000000000..c3d7137664 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-01/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/division.png b/libraries/path-bool/visual-tests/nesting-01/test-results/division.png new file mode 100644 index 0000000000..d913c062f1 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/nesting-01/test-results/exclusion-ours.png new file mode 100644 index 0000000000..a1ebcc0b28 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/nesting-01/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..6afbb7e69d --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-01/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/exclusion.png b/libraries/path-bool/visual-tests/nesting-01/test-results/exclusion.png new file mode 100644 index 0000000000..a1ebcc0b28 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/nesting-01/test-results/fracture-ours.png new file mode 100644 index 0000000000..d913c062f1 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/nesting-01/test-results/fracture-ours.svg new file mode 100644 index 0000000000..c3d7137664 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-01/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/fracture.png b/libraries/path-bool/visual-tests/nesting-01/test-results/fracture.png new file mode 100644 index 0000000000..d913c062f1 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/nesting-01/test-results/intersection-ours.png new file mode 100644 index 0000000000..121b3299f5 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/nesting-01/test-results/intersection-ours.svg new file mode 100644 index 0000000000..010a43c2ac --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-01/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/intersection.png b/libraries/path-bool/visual-tests/nesting-01/test-results/intersection.png new file mode 100644 index 0000000000..121b3299f5 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/union-ours.png b/libraries/path-bool/visual-tests/nesting-01/test-results/union-ours.png new file mode 100644 index 0000000000..123a97c987 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/union-ours.svg b/libraries/path-bool/visual-tests/nesting-01/test-results/union-ours.svg new file mode 100644 index 0000000000..13f1626731 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-01/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-01/test-results/union.png b/libraries/path-bool/visual-tests/nesting-01/test-results/union.png new file mode 100644 index 0000000000..123a97c987 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-01/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/difference-ours.png b/libraries/path-bool/visual-tests/nesting-02/test-results/difference-ours.png new file mode 100644 index 0000000000..39c2cd1433 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/nesting-02/test-results/difference-ours.svg new file mode 100644 index 0000000000..1792e26cfa --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-02/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/difference.png b/libraries/path-bool/visual-tests/nesting-02/test-results/difference.png new file mode 100644 index 0000000000..aaf6b615cb Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/division-ours.png b/libraries/path-bool/visual-tests/nesting-02/test-results/division-ours.png new file mode 100644 index 0000000000..b03fde6dff Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/division-ours.svg b/libraries/path-bool/visual-tests/nesting-02/test-results/division-ours.svg new file mode 100644 index 0000000000..4b666db937 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-02/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/division.png b/libraries/path-bool/visual-tests/nesting-02/test-results/division.png new file mode 100644 index 0000000000..a0689e3de6 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/nesting-02/test-results/exclusion-ours.png new file mode 100644 index 0000000000..eaf024dbee Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/nesting-02/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..544e6fcae1 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-02/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/exclusion.png b/libraries/path-bool/visual-tests/nesting-02/test-results/exclusion.png new file mode 100644 index 0000000000..c471e1d519 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/nesting-02/test-results/fracture-ours.png new file mode 100644 index 0000000000..4e71413352 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/nesting-02/test-results/fracture-ours.svg new file mode 100644 index 0000000000..dc1090e73b --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-02/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/fracture.png b/libraries/path-bool/visual-tests/nesting-02/test-results/fracture.png new file mode 100644 index 0000000000..c999b217ba Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/nesting-02/test-results/intersection-ours.png new file mode 100644 index 0000000000..331c97c578 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/nesting-02/test-results/intersection-ours.svg new file mode 100644 index 0000000000..332339c278 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-02/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/intersection.png b/libraries/path-bool/visual-tests/nesting-02/test-results/intersection.png new file mode 100644 index 0000000000..331c97c578 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/union-ours.png b/libraries/path-bool/visual-tests/nesting-02/test-results/union-ours.png new file mode 100644 index 0000000000..47c8cb95c4 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/union-ours.svg b/libraries/path-bool/visual-tests/nesting-02/test-results/union-ours.svg new file mode 100644 index 0000000000..675c1b298e --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-02/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-02/test-results/union.png b/libraries/path-bool/visual-tests/nesting-02/test-results/union.png new file mode 100644 index 0000000000..a7bbc4fe65 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-02/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/difference-ours.png b/libraries/path-bool/visual-tests/nesting-03/test-results/difference-ours.png new file mode 100644 index 0000000000..615418e626 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/nesting-03/test-results/difference-ours.svg new file mode 100644 index 0000000000..cb24bdefe6 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-03/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/difference.png b/libraries/path-bool/visual-tests/nesting-03/test-results/difference.png new file mode 100644 index 0000000000..615418e626 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/division-ours.png b/libraries/path-bool/visual-tests/nesting-03/test-results/division-ours.png new file mode 100644 index 0000000000..f8ddda123c Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/division-ours.svg b/libraries/path-bool/visual-tests/nesting-03/test-results/division-ours.svg new file mode 100644 index 0000000000..5f187ee43b --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-03/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/division.png b/libraries/path-bool/visual-tests/nesting-03/test-results/division.png new file mode 100644 index 0000000000..a6a9ac7476 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/nesting-03/test-results/exclusion-ours.png new file mode 100644 index 0000000000..615418e626 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/nesting-03/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..cb24bdefe6 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-03/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/exclusion.png b/libraries/path-bool/visual-tests/nesting-03/test-results/exclusion.png new file mode 100644 index 0000000000..615418e626 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/nesting-03/test-results/fracture-ours.png new file mode 100644 index 0000000000..f8ddda123c Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/nesting-03/test-results/fracture-ours.svg new file mode 100644 index 0000000000..5f187ee43b --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-03/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/fracture.png b/libraries/path-bool/visual-tests/nesting-03/test-results/fracture.png new file mode 100644 index 0000000000..a6a9ac7476 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/nesting-03/test-results/intersection-ours.png new file mode 100644 index 0000000000..78da053e6e Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/nesting-03/test-results/intersection-ours.svg new file mode 100644 index 0000000000..4fd3f3538c --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-03/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/intersection.png b/libraries/path-bool/visual-tests/nesting-03/test-results/intersection.png new file mode 100644 index 0000000000..78da053e6e Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/union-ours.png b/libraries/path-bool/visual-tests/nesting-03/test-results/union-ours.png new file mode 100644 index 0000000000..123a97c987 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/union-ours.svg b/libraries/path-bool/visual-tests/nesting-03/test-results/union-ours.svg new file mode 100644 index 0000000000..13f1626731 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-03/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-03/test-results/union.png b/libraries/path-bool/visual-tests/nesting-03/test-results/union.png new file mode 100644 index 0000000000..123a97c987 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-03/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/difference-ours.png b/libraries/path-bool/visual-tests/nesting-04/test-results/difference-ours.png new file mode 100644 index 0000000000..604aa1b6e5 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/nesting-04/test-results/difference-ours.svg new file mode 100644 index 0000000000..d566f674dc --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-04/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/difference.png b/libraries/path-bool/visual-tests/nesting-04/test-results/difference.png new file mode 100644 index 0000000000..2515025b51 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/division-ours.png b/libraries/path-bool/visual-tests/nesting-04/test-results/division-ours.png new file mode 100644 index 0000000000..06a53378be Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/division-ours.svg b/libraries/path-bool/visual-tests/nesting-04/test-results/division-ours.svg new file mode 100644 index 0000000000..4e132a82d9 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-04/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/division.png b/libraries/path-bool/visual-tests/nesting-04/test-results/division.png new file mode 100644 index 0000000000..1910afdb27 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/nesting-04/test-results/exclusion-ours.png new file mode 100644 index 0000000000..604aa1b6e5 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/nesting-04/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..d566f674dc --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-04/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/exclusion.png b/libraries/path-bool/visual-tests/nesting-04/test-results/exclusion.png new file mode 100644 index 0000000000..2515025b51 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/nesting-04/test-results/fracture-ours.png new file mode 100644 index 0000000000..06a53378be Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/nesting-04/test-results/fracture-ours.svg new file mode 100644 index 0000000000..4e132a82d9 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-04/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/fracture.png b/libraries/path-bool/visual-tests/nesting-04/test-results/fracture.png new file mode 100644 index 0000000000..1910afdb27 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/nesting-04/test-results/intersection-ours.png new file mode 100644 index 0000000000..8636123726 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/nesting-04/test-results/intersection-ours.svg new file mode 100644 index 0000000000..64a310b6a3 --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-04/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/intersection.png b/libraries/path-bool/visual-tests/nesting-04/test-results/intersection.png new file mode 100644 index 0000000000..8636123726 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/union-ours.png b/libraries/path-bool/visual-tests/nesting-04/test-results/union-ours.png new file mode 100644 index 0000000000..b9ad549610 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/union-ours.svg b/libraries/path-bool/visual-tests/nesting-04/test-results/union-ours.svg new file mode 100644 index 0000000000..f128d496ae --- /dev/null +++ b/libraries/path-bool/visual-tests/nesting-04/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/nesting-04/test-results/union.png b/libraries/path-bool/visual-tests/nesting-04/test-results/union.png new file mode 100644 index 0000000000..b9ad549610 Binary files /dev/null and b/libraries/path-bool/visual-tests/nesting-04/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/difference-ours.png b/libraries/path-bool/visual-tests/real-01/test-results/difference-ours.png new file mode 100644 index 0000000000..9c7aca6397 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/real-01/test-results/difference-ours.svg new file mode 100644 index 0000000000..62ee30eb9b --- /dev/null +++ b/libraries/path-bool/visual-tests/real-01/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-01/test-results/difference.png b/libraries/path-bool/visual-tests/real-01/test-results/difference.png new file mode 100644 index 0000000000..03fdcfc14f Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/division-ours.png b/libraries/path-bool/visual-tests/real-01/test-results/division-ours.png new file mode 100644 index 0000000000..12d9110d6a Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/division-ours.svg b/libraries/path-bool/visual-tests/real-01/test-results/division-ours.svg new file mode 100644 index 0000000000..905bbf587e --- /dev/null +++ b/libraries/path-bool/visual-tests/real-01/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-01/test-results/division.png b/libraries/path-bool/visual-tests/real-01/test-results/division.png new file mode 100644 index 0000000000..5257744223 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/real-01/test-results/exclusion-ours.png new file mode 100644 index 0000000000..1b9e6efb9c Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/real-01/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..6b2d0d4ec2 --- /dev/null +++ b/libraries/path-bool/visual-tests/real-01/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-01/test-results/exclusion.png b/libraries/path-bool/visual-tests/real-01/test-results/exclusion.png new file mode 100644 index 0000000000..55747ff4c2 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/real-01/test-results/fracture-ours.png new file mode 100644 index 0000000000..3a9dc0e030 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/real-01/test-results/fracture-ours.svg new file mode 100644 index 0000000000..2122fdbddd --- /dev/null +++ b/libraries/path-bool/visual-tests/real-01/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-01/test-results/fracture.png b/libraries/path-bool/visual-tests/real-01/test-results/fracture.png new file mode 100644 index 0000000000..0e91aa9465 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/real-01/test-results/intersection-ours.png new file mode 100644 index 0000000000..6bd4da7ad5 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/real-01/test-results/intersection-ours.svg new file mode 100644 index 0000000000..e339e06b87 --- /dev/null +++ b/libraries/path-bool/visual-tests/real-01/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-01/test-results/intersection.png b/libraries/path-bool/visual-tests/real-01/test-results/intersection.png new file mode 100644 index 0000000000..96c55f499e Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/union-ours.png b/libraries/path-bool/visual-tests/real-01/test-results/union-ours.png new file mode 100644 index 0000000000..53d7c9483a Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-01/test-results/union-ours.svg b/libraries/path-bool/visual-tests/real-01/test-results/union-ours.svg new file mode 100644 index 0000000000..e2ba1cee50 --- /dev/null +++ b/libraries/path-bool/visual-tests/real-01/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-01/test-results/union.png b/libraries/path-bool/visual-tests/real-01/test-results/union.png new file mode 100644 index 0000000000..53d7c9483a Binary files /dev/null and b/libraries/path-bool/visual-tests/real-01/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/difference-ours.png b/libraries/path-bool/visual-tests/real-02/test-results/difference-ours.png new file mode 100644 index 0000000000..d2c7b533bc Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/real-02/test-results/difference-ours.svg new file mode 100644 index 0000000000..95cb192242 --- /dev/null +++ b/libraries/path-bool/visual-tests/real-02/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-02/test-results/difference.png b/libraries/path-bool/visual-tests/real-02/test-results/difference.png new file mode 100644 index 0000000000..ca17ca727d Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/division-ours.png b/libraries/path-bool/visual-tests/real-02/test-results/division-ours.png new file mode 100644 index 0000000000..511c7a6da4 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/division-ours.svg b/libraries/path-bool/visual-tests/real-02/test-results/division-ours.svg new file mode 100644 index 0000000000..51d475cd27 --- /dev/null +++ b/libraries/path-bool/visual-tests/real-02/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-02/test-results/division.png b/libraries/path-bool/visual-tests/real-02/test-results/division.png new file mode 100644 index 0000000000..89e8590d2a Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/real-02/test-results/exclusion-ours.png new file mode 100644 index 0000000000..6b8e9716f9 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/real-02/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..4ca6b37dad --- /dev/null +++ b/libraries/path-bool/visual-tests/real-02/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-02/test-results/exclusion.png b/libraries/path-bool/visual-tests/real-02/test-results/exclusion.png new file mode 100644 index 0000000000..7367ca962a Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/real-02/test-results/fracture-ours.png new file mode 100644 index 0000000000..021f4569d1 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/real-02/test-results/fracture-ours.svg new file mode 100644 index 0000000000..a7768511a5 --- /dev/null +++ b/libraries/path-bool/visual-tests/real-02/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-02/test-results/fracture.png b/libraries/path-bool/visual-tests/real-02/test-results/fracture.png new file mode 100644 index 0000000000..fdcf238f23 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/real-02/test-results/intersection-ours.png new file mode 100644 index 0000000000..4add67a277 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/real-02/test-results/intersection-ours.svg new file mode 100644 index 0000000000..278e75926f --- /dev/null +++ b/libraries/path-bool/visual-tests/real-02/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-02/test-results/intersection.png b/libraries/path-bool/visual-tests/real-02/test-results/intersection.png new file mode 100644 index 0000000000..5a9b9b90fe Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/union-ours.png b/libraries/path-bool/visual-tests/real-02/test-results/union-ours.png new file mode 100644 index 0000000000..0517f9207b Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-02/test-results/union-ours.svg b/libraries/path-bool/visual-tests/real-02/test-results/union-ours.svg new file mode 100644 index 0000000000..6d1be6bb5b --- /dev/null +++ b/libraries/path-bool/visual-tests/real-02/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-02/test-results/union.png b/libraries/path-bool/visual-tests/real-02/test-results/union.png new file mode 100644 index 0000000000..0517f9207b Binary files /dev/null and b/libraries/path-bool/visual-tests/real-02/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/difference-ours.png b/libraries/path-bool/visual-tests/real-03/test-results/difference-ours.png new file mode 100644 index 0000000000..96604fba31 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/real-03/test-results/difference-ours.svg new file mode 100644 index 0000000000..baec7207bf --- /dev/null +++ b/libraries/path-bool/visual-tests/real-03/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-03/test-results/difference.png b/libraries/path-bool/visual-tests/real-03/test-results/difference.png new file mode 100644 index 0000000000..96604fba31 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/division-ours.png b/libraries/path-bool/visual-tests/real-03/test-results/division-ours.png new file mode 100644 index 0000000000..9a29546545 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/division-ours.svg b/libraries/path-bool/visual-tests/real-03/test-results/division-ours.svg new file mode 100644 index 0000000000..30e868f75d --- /dev/null +++ b/libraries/path-bool/visual-tests/real-03/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-03/test-results/division.png b/libraries/path-bool/visual-tests/real-03/test-results/division.png new file mode 100644 index 0000000000..05dc971368 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/real-03/test-results/exclusion-ours.png new file mode 100644 index 0000000000..8b8692f6b7 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/real-03/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..ea085d1f67 --- /dev/null +++ b/libraries/path-bool/visual-tests/real-03/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-03/test-results/exclusion.png b/libraries/path-bool/visual-tests/real-03/test-results/exclusion.png new file mode 100644 index 0000000000..8b8692f6b7 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/real-03/test-results/fracture-ours.png new file mode 100644 index 0000000000..1bab8f7d9e Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/real-03/test-results/fracture-ours.svg new file mode 100644 index 0000000000..a954d81e0e --- /dev/null +++ b/libraries/path-bool/visual-tests/real-03/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-03/test-results/fracture.png b/libraries/path-bool/visual-tests/real-03/test-results/fracture.png new file mode 100644 index 0000000000..c8c0eb7f05 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/real-03/test-results/intersection-ours.png new file mode 100644 index 0000000000..2b735ef634 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/real-03/test-results/intersection-ours.svg new file mode 100644 index 0000000000..ea5ad48fa7 --- /dev/null +++ b/libraries/path-bool/visual-tests/real-03/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-03/test-results/intersection.png b/libraries/path-bool/visual-tests/real-03/test-results/intersection.png new file mode 100644 index 0000000000..2b735ef634 Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/union-ours.png b/libraries/path-bool/visual-tests/real-03/test-results/union-ours.png new file mode 100644 index 0000000000..f3940d086a Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/real-03/test-results/union-ours.svg b/libraries/path-bool/visual-tests/real-03/test-results/union-ours.svg new file mode 100644 index 0000000000..facfc109bf --- /dev/null +++ b/libraries/path-bool/visual-tests/real-03/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/real-03/test-results/union.png b/libraries/path-bool/visual-tests/real-03/test-results/union.png new file mode 100644 index 0000000000..f3940d086a Binary files /dev/null and b/libraries/path-bool/visual-tests/real-03/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/difference-ours.png b/libraries/path-bool/visual-tests/simple-01/test-results/difference-ours.png new file mode 100644 index 0000000000..ac890941ea Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/simple-01/test-results/difference-ours.svg new file mode 100644 index 0000000000..ba43c78501 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-01/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/difference.png b/libraries/path-bool/visual-tests/simple-01/test-results/difference.png new file mode 100644 index 0000000000..ac890941ea Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/division-ours.png b/libraries/path-bool/visual-tests/simple-01/test-results/division-ours.png new file mode 100644 index 0000000000..256bbdf246 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/division-ours.svg b/libraries/path-bool/visual-tests/simple-01/test-results/division-ours.svg new file mode 100644 index 0000000000..43885c29e5 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-01/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/division.png b/libraries/path-bool/visual-tests/simple-01/test-results/division.png new file mode 100644 index 0000000000..256bbdf246 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/simple-01/test-results/exclusion-ours.png new file mode 100644 index 0000000000..e657efded8 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/simple-01/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..4b7137bc9a --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-01/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/exclusion.png b/libraries/path-bool/visual-tests/simple-01/test-results/exclusion.png new file mode 100644 index 0000000000..e657efded8 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/simple-01/test-results/fracture-ours.png new file mode 100644 index 0000000000..1a9c942b7f Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/simple-01/test-results/fracture-ours.svg new file mode 100644 index 0000000000..0302c569e3 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-01/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/fracture.png b/libraries/path-bool/visual-tests/simple-01/test-results/fracture.png new file mode 100644 index 0000000000..1a9c942b7f Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/simple-01/test-results/intersection-ours.png new file mode 100644 index 0000000000..b492a239a7 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/simple-01/test-results/intersection-ours.svg new file mode 100644 index 0000000000..ea433c565c --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-01/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/intersection.png b/libraries/path-bool/visual-tests/simple-01/test-results/intersection.png new file mode 100644 index 0000000000..b492a239a7 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/union-ours.png b/libraries/path-bool/visual-tests/simple-01/test-results/union-ours.png new file mode 100644 index 0000000000..742a9dbcbf Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/union-ours.svg b/libraries/path-bool/visual-tests/simple-01/test-results/union-ours.svg new file mode 100644 index 0000000000..cc09babcb1 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-01/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-01/test-results/union.png b/libraries/path-bool/visual-tests/simple-01/test-results/union.png new file mode 100644 index 0000000000..de9f762159 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-01/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/difference-ours.png b/libraries/path-bool/visual-tests/simple-02/test-results/difference-ours.png new file mode 100644 index 0000000000..270ee6d5d9 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/simple-02/test-results/difference-ours.svg new file mode 100644 index 0000000000..50e183e817 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-02/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/difference.png b/libraries/path-bool/visual-tests/simple-02/test-results/difference.png new file mode 100644 index 0000000000..270ee6d5d9 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/division-ours.png b/libraries/path-bool/visual-tests/simple-02/test-results/division-ours.png new file mode 100644 index 0000000000..7113613f23 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/division-ours.svg b/libraries/path-bool/visual-tests/simple-02/test-results/division-ours.svg new file mode 100644 index 0000000000..53e494468b --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-02/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/division.png b/libraries/path-bool/visual-tests/simple-02/test-results/division.png new file mode 100644 index 0000000000..7113613f23 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/simple-02/test-results/exclusion-ours.png new file mode 100644 index 0000000000..603dd15907 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/simple-02/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..68dc5af54e --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-02/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/exclusion.png b/libraries/path-bool/visual-tests/simple-02/test-results/exclusion.png new file mode 100644 index 0000000000..603dd15907 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/simple-02/test-results/fracture-ours.png new file mode 100644 index 0000000000..3c07d90af6 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/simple-02/test-results/fracture-ours.svg new file mode 100644 index 0000000000..c64ccfc142 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-02/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/fracture.png b/libraries/path-bool/visual-tests/simple-02/test-results/fracture.png new file mode 100644 index 0000000000..d5aa7c7ee1 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/simple-02/test-results/intersection-ours.png new file mode 100644 index 0000000000..2b0e2938b7 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/simple-02/test-results/intersection-ours.svg new file mode 100644 index 0000000000..7c176e1e5c --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-02/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/intersection.png b/libraries/path-bool/visual-tests/simple-02/test-results/intersection.png new file mode 100644 index 0000000000..2b0e2938b7 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/union-ours.png b/libraries/path-bool/visual-tests/simple-02/test-results/union-ours.png new file mode 100644 index 0000000000..dfa39f6fd0 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/union-ours.svg b/libraries/path-bool/visual-tests/simple-02/test-results/union-ours.svg new file mode 100644 index 0000000000..317afdb39a --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-02/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-02/test-results/union.png b/libraries/path-bool/visual-tests/simple-02/test-results/union.png new file mode 100644 index 0000000000..dfa39f6fd0 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-02/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/difference-ours.png b/libraries/path-bool/visual-tests/simple-03/test-results/difference-ours.png new file mode 100644 index 0000000000..2b60e27ad7 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/simple-03/test-results/difference-ours.svg new file mode 100644 index 0000000000..65bd904139 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-03/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/difference.png b/libraries/path-bool/visual-tests/simple-03/test-results/difference.png new file mode 100644 index 0000000000..2b60e27ad7 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/division-ours.png b/libraries/path-bool/visual-tests/simple-03/test-results/division-ours.png new file mode 100644 index 0000000000..6a1f540681 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/division-ours.svg b/libraries/path-bool/visual-tests/simple-03/test-results/division-ours.svg new file mode 100644 index 0000000000..dcb960fb3d --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-03/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/division.png b/libraries/path-bool/visual-tests/simple-03/test-results/division.png new file mode 100644 index 0000000000..5ae9cd6581 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/simple-03/test-results/exclusion-ours.png new file mode 100644 index 0000000000..1b8e016ce5 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/simple-03/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..cfda7e0d50 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-03/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/exclusion.png b/libraries/path-bool/visual-tests/simple-03/test-results/exclusion.png new file mode 100644 index 0000000000..1b8e016ce5 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/simple-03/test-results/fracture-ours.png new file mode 100644 index 0000000000..863827b8f4 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/simple-03/test-results/fracture-ours.svg new file mode 100644 index 0000000000..6016edc41c --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-03/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/fracture.png b/libraries/path-bool/visual-tests/simple-03/test-results/fracture.png new file mode 100644 index 0000000000..c74f52b6ec Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/simple-03/test-results/intersection-ours.png new file mode 100644 index 0000000000..075981599b Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/simple-03/test-results/intersection-ours.svg new file mode 100644 index 0000000000..15aad055ec --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-03/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/intersection.png b/libraries/path-bool/visual-tests/simple-03/test-results/intersection.png new file mode 100644 index 0000000000..075981599b Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/union-ours.png b/libraries/path-bool/visual-tests/simple-03/test-results/union-ours.png new file mode 100644 index 0000000000..6d79e49d2f Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/union-ours.svg b/libraries/path-bool/visual-tests/simple-03/test-results/union-ours.svg new file mode 100644 index 0000000000..febc3cc4a6 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-03/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-03/test-results/union.png b/libraries/path-bool/visual-tests/simple-03/test-results/union.png new file mode 100644 index 0000000000..6d79e49d2f Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-03/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/difference-ours.png b/libraries/path-bool/visual-tests/simple-04/test-results/difference-ours.png new file mode 100644 index 0000000000..1493687500 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/simple-04/test-results/difference-ours.svg new file mode 100644 index 0000000000..c2c569d120 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-04/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/difference.png b/libraries/path-bool/visual-tests/simple-04/test-results/difference.png new file mode 100644 index 0000000000..1493687500 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/division-ours.png b/libraries/path-bool/visual-tests/simple-04/test-results/division-ours.png new file mode 100644 index 0000000000..1c8378a552 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/division-ours.svg b/libraries/path-bool/visual-tests/simple-04/test-results/division-ours.svg new file mode 100644 index 0000000000..fd6bde8190 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-04/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/division.png b/libraries/path-bool/visual-tests/simple-04/test-results/division.png new file mode 100644 index 0000000000..1c8378a552 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/simple-04/test-results/exclusion-ours.png new file mode 100644 index 0000000000..549006db9a Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/simple-04/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..2e69593502 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-04/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/exclusion.png b/libraries/path-bool/visual-tests/simple-04/test-results/exclusion.png new file mode 100644 index 0000000000..549006db9a Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/simple-04/test-results/fracture-ours.png new file mode 100644 index 0000000000..095ccd9c78 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/simple-04/test-results/fracture-ours.svg new file mode 100644 index 0000000000..992eb2b858 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-04/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/fracture.png b/libraries/path-bool/visual-tests/simple-04/test-results/fracture.png new file mode 100644 index 0000000000..fd1acfaa4e Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/simple-04/test-results/intersection-ours.png new file mode 100644 index 0000000000..6fb6fb379b Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/simple-04/test-results/intersection-ours.svg new file mode 100644 index 0000000000..5d11444969 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-04/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/intersection.png b/libraries/path-bool/visual-tests/simple-04/test-results/intersection.png new file mode 100644 index 0000000000..c09f33748f Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/union-ours.png b/libraries/path-bool/visual-tests/simple-04/test-results/union-ours.png new file mode 100644 index 0000000000..7502c79c13 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/union-ours.svg b/libraries/path-bool/visual-tests/simple-04/test-results/union-ours.svg new file mode 100644 index 0000000000..9cd1d6726a --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-04/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-04/test-results/union.png b/libraries/path-bool/visual-tests/simple-04/test-results/union.png new file mode 100644 index 0000000000..53a199249d Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-04/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/difference-ours.png b/libraries/path-bool/visual-tests/simple-05/test-results/difference-ours.png new file mode 100644 index 0000000000..1943e75a63 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/simple-05/test-results/difference-ours.svg new file mode 100644 index 0000000000..a35498d1f7 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-05/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/difference.png b/libraries/path-bool/visual-tests/simple-05/test-results/difference.png new file mode 100644 index 0000000000..1943e75a63 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/division-ours.png b/libraries/path-bool/visual-tests/simple-05/test-results/division-ours.png new file mode 100644 index 0000000000..0231c4bbd4 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/division-ours.svg b/libraries/path-bool/visual-tests/simple-05/test-results/division-ours.svg new file mode 100644 index 0000000000..86d31f44a1 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-05/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/division.png b/libraries/path-bool/visual-tests/simple-05/test-results/division.png new file mode 100644 index 0000000000..8d66be1e56 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/simple-05/test-results/exclusion-ours.png new file mode 100644 index 0000000000..a9e1f2d45c Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/simple-05/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..92f8926785 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-05/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/exclusion.png b/libraries/path-bool/visual-tests/simple-05/test-results/exclusion.png new file mode 100644 index 0000000000..a9e1f2d45c Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/simple-05/test-results/fracture-ours.png new file mode 100644 index 0000000000..aacd95dab8 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/simple-05/test-results/fracture-ours.svg new file mode 100644 index 0000000000..365a43f732 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-05/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/fracture.png b/libraries/path-bool/visual-tests/simple-05/test-results/fracture.png new file mode 100644 index 0000000000..50c6a0a16c Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/simple-05/test-results/intersection-ours.png new file mode 100644 index 0000000000..666afa7ebc Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/simple-05/test-results/intersection-ours.svg new file mode 100644 index 0000000000..9dbf7c21f6 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-05/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/intersection.png b/libraries/path-bool/visual-tests/simple-05/test-results/intersection.png new file mode 100644 index 0000000000..85b3986924 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/union-ours.png b/libraries/path-bool/visual-tests/simple-05/test-results/union-ours.png new file mode 100644 index 0000000000..534122024a Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/union-ours.svg b/libraries/path-bool/visual-tests/simple-05/test-results/union-ours.svg new file mode 100644 index 0000000000..77a207499d --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-05/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-05/test-results/union.png b/libraries/path-bool/visual-tests/simple-05/test-results/union.png new file mode 100644 index 0000000000..534122024a Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-05/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/difference-ours.png b/libraries/path-bool/visual-tests/simple-06/test-results/difference-ours.png new file mode 100644 index 0000000000..f5e5abefff Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/simple-06/test-results/difference-ours.svg new file mode 100644 index 0000000000..80817e0eb9 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-06/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/difference.png b/libraries/path-bool/visual-tests/simple-06/test-results/difference.png new file mode 100644 index 0000000000..f5e5abefff Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/division-ours.png b/libraries/path-bool/visual-tests/simple-06/test-results/division-ours.png new file mode 100644 index 0000000000..f5e5abefff Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/division-ours.svg b/libraries/path-bool/visual-tests/simple-06/test-results/division-ours.svg new file mode 100644 index 0000000000..80817e0eb9 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-06/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/division.png b/libraries/path-bool/visual-tests/simple-06/test-results/division.png new file mode 100644 index 0000000000..f5e5abefff Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/simple-06/test-results/exclusion-ours.png new file mode 100644 index 0000000000..7c76ee96bc Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/simple-06/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..ad52e77a42 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-06/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/exclusion.png b/libraries/path-bool/visual-tests/simple-06/test-results/exclusion.png new file mode 100644 index 0000000000..7c76ee96bc Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/simple-06/test-results/fracture-ours.png new file mode 100644 index 0000000000..7c76ee96bc Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/simple-06/test-results/fracture-ours.svg new file mode 100644 index 0000000000..d89637b5ef --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-06/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/fracture.png b/libraries/path-bool/visual-tests/simple-06/test-results/fracture.png new file mode 100644 index 0000000000..7c76ee96bc Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/simple-06/test-results/intersection-ours.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/simple-06/test-results/intersection-ours.svg new file mode 100644 index 0000000000..fc10f11050 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-06/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/intersection.png b/libraries/path-bool/visual-tests/simple-06/test-results/intersection.png new file mode 100644 index 0000000000..d7a2ffac39 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/union-ours.png b/libraries/path-bool/visual-tests/simple-06/test-results/union-ours.png new file mode 100644 index 0000000000..7c76ee96bc Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/union-ours.svg b/libraries/path-bool/visual-tests/simple-06/test-results/union-ours.svg new file mode 100644 index 0000000000..ad52e77a42 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-06/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-06/test-results/union.png b/libraries/path-bool/visual-tests/simple-06/test-results/union.png new file mode 100644 index 0000000000..7c76ee96bc Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-06/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/difference-ours.png b/libraries/path-bool/visual-tests/simple-07/test-results/difference-ours.png new file mode 100644 index 0000000000..c5bbeabad8 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/simple-07/test-results/difference-ours.svg new file mode 100644 index 0000000000..1228c4be6e --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-07/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/difference.png b/libraries/path-bool/visual-tests/simple-07/test-results/difference.png new file mode 100644 index 0000000000..c5bbeabad8 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/division-ours.png b/libraries/path-bool/visual-tests/simple-07/test-results/division-ours.png new file mode 100644 index 0000000000..49ef0803b7 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/division-ours.svg b/libraries/path-bool/visual-tests/simple-07/test-results/division-ours.svg new file mode 100644 index 0000000000..bd75b40bd9 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-07/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/division.png b/libraries/path-bool/visual-tests/simple-07/test-results/division.png new file mode 100644 index 0000000000..2a5ae3c092 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/simple-07/test-results/exclusion-ours.png new file mode 100644 index 0000000000..ac4f73f956 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/simple-07/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..6756d4cca3 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-07/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/exclusion.png b/libraries/path-bool/visual-tests/simple-07/test-results/exclusion.png new file mode 100644 index 0000000000..ac4f73f956 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/simple-07/test-results/fracture-ours.png new file mode 100644 index 0000000000..ea8557822c Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/simple-07/test-results/fracture-ours.svg new file mode 100644 index 0000000000..4fbad5808b --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-07/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/fracture.png b/libraries/path-bool/visual-tests/simple-07/test-results/fracture.png new file mode 100644 index 0000000000..8709521ed7 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/simple-07/test-results/intersection-ours.png new file mode 100644 index 0000000000..0aaf6eb20a Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/simple-07/test-results/intersection-ours.svg new file mode 100644 index 0000000000..cb8f780877 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-07/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/intersection.png b/libraries/path-bool/visual-tests/simple-07/test-results/intersection.png new file mode 100644 index 0000000000..0aaf6eb20a Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/union-ours.png b/libraries/path-bool/visual-tests/simple-07/test-results/union-ours.png new file mode 100644 index 0000000000..3169f6a856 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/union-ours.svg b/libraries/path-bool/visual-tests/simple-07/test-results/union-ours.svg new file mode 100644 index 0000000000..387964ef79 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-07/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-07/test-results/union.png b/libraries/path-bool/visual-tests/simple-07/test-results/union.png new file mode 100644 index 0000000000..3169f6a856 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-07/test-results/union.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/difference-ours.png b/libraries/path-bool/visual-tests/simple-08/test-results/difference-ours.png new file mode 100644 index 0000000000..008d2ba4f6 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/difference-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/difference-ours.svg b/libraries/path-bool/visual-tests/simple-08/test-results/difference-ours.svg new file mode 100644 index 0000000000..a296055ad5 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-08/test-results/difference-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/difference.png b/libraries/path-bool/visual-tests/simple-08/test-results/difference.png new file mode 100644 index 0000000000..008d2ba4f6 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/difference.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/division-ours.png b/libraries/path-bool/visual-tests/simple-08/test-results/division-ours.png new file mode 100644 index 0000000000..e6470c686e Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/division-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/division-ours.svg b/libraries/path-bool/visual-tests/simple-08/test-results/division-ours.svg new file mode 100644 index 0000000000..50585b010c --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-08/test-results/division-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/division.png b/libraries/path-bool/visual-tests/simple-08/test-results/division.png new file mode 100644 index 0000000000..49d65e5ed4 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/division.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/exclusion-ours.png b/libraries/path-bool/visual-tests/simple-08/test-results/exclusion-ours.png new file mode 100644 index 0000000000..bdc8bd8764 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/exclusion-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/exclusion-ours.svg b/libraries/path-bool/visual-tests/simple-08/test-results/exclusion-ours.svg new file mode 100644 index 0000000000..050442f9ef --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-08/test-results/exclusion-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/exclusion.png b/libraries/path-bool/visual-tests/simple-08/test-results/exclusion.png new file mode 100644 index 0000000000..bdc8bd8764 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/exclusion.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/fracture-ours.png b/libraries/path-bool/visual-tests/simple-08/test-results/fracture-ours.png new file mode 100644 index 0000000000..9b3bc08339 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/fracture-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/fracture-ours.svg b/libraries/path-bool/visual-tests/simple-08/test-results/fracture-ours.svg new file mode 100644 index 0000000000..ace6bb5669 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-08/test-results/fracture-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/fracture.png b/libraries/path-bool/visual-tests/simple-08/test-results/fracture.png new file mode 100644 index 0000000000..f95496ac7d Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/fracture.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/intersection-ours.png b/libraries/path-bool/visual-tests/simple-08/test-results/intersection-ours.png new file mode 100644 index 0000000000..8179107b59 Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/intersection-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/intersection-ours.svg b/libraries/path-bool/visual-tests/simple-08/test-results/intersection-ours.svg new file mode 100644 index 0000000000..2422318d54 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-08/test-results/intersection-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/intersection.png b/libraries/path-bool/visual-tests/simple-08/test-results/intersection.png new file mode 100644 index 0000000000..45c13d39ec Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/intersection.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/union-ours.png b/libraries/path-bool/visual-tests/simple-08/test-results/union-ours.png new file mode 100644 index 0000000000..31cb84caae Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/union-ours.png differ diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/union-ours.svg b/libraries/path-bool/visual-tests/simple-08/test-results/union-ours.svg new file mode 100644 index 0000000000..9a0f39bd25 --- /dev/null +++ b/libraries/path-bool/visual-tests/simple-08/test-results/union-ours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/path-bool/visual-tests/simple-08/test-results/union.png b/libraries/path-bool/visual-tests/simple-08/test-results/union.png new file mode 100644 index 0000000000..31cb84caae Binary files /dev/null and b/libraries/path-bool/visual-tests/simple-08/test-results/union.png differ diff --git a/node-graph/graph-craft/src/document.rs b/node-graph/graph-craft/src/document.rs index 0cb33bf3ff..6368e3bc0c 100644 --- a/node-graph/graph-craft/src/document.rs +++ b/node-graph/graph-craft/src/document.rs @@ -222,6 +222,8 @@ impl DocumentNodeMetadata { } impl NodeInput { + pub const PRIMARY_OUTPUT_INDEX: usize = 0; + pub const fn node(node_id: NodeId, output_index: usize) -> Self { Self::Node { node_id, output_index } } @@ -573,7 +575,7 @@ impl NodeNetwork { pub fn value_network(node: DocumentNode) -> Self { Self { - exports: vec![NodeInput::node(NodeId(0), 0)], + exports: vec![NodeInput::node(NodeId(0), NodeInput::PRIMARY_OUTPUT_INDEX)], nodes: [(NodeId(0), node)].into_iter().collect(), ..Default::default() } @@ -767,7 +769,7 @@ impl NodeNetwork { if let NodeInput::Scope(key) = input { let (import_id, _ty) = self.scope_injections.get(key.as_ref()).expect("Tried to import a non existent key from scope"); // TODO use correct output index - *input = NodeInput::node(*import_id, 0); + *input = NodeInput::node(*import_id, NodeInput::PRIMARY_OUTPUT_INDEX); } } } @@ -866,7 +868,7 @@ impl NodeNetwork { NodeInput::Scope(ref key) => { let (import_id, _ty) = self.scope_injections.get(key.as_ref()).expect("Tried to import a non existent key from scope"); // TODO use correct output index - nested_node.inputs[nested_input_index] = NodeInput::node(*import_id, 0); + nested_node.inputs[nested_input_index] = NodeInput::node(*import_id, NodeInput::PRIMARY_OUTPUT_INDEX); } NodeInput::Reflection(_) => unreachable!("Reflection inputs should have been replaced with value nodes"), } @@ -946,7 +948,7 @@ impl NodeNetwork { ); *export = NodeInput::Node { node_id: merged_node_id, - output_index: 0, + output_index: NodeInput::PRIMARY_OUTPUT_INDEX, }; } } @@ -1149,7 +1151,7 @@ mod test { fn add_network() -> NodeNetwork { NodeNetwork { - exports: vec![NodeInput::node(NodeId(1), 0)], + exports: vec![NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX)], nodes: [ ( NodeId(0), @@ -1162,7 +1164,7 @@ mod test { ( NodeId(1), DocumentNode { - inputs: vec![NodeInput::node(NodeId(0), 0)], + inputs: vec![NodeInput::node(NodeId(0), NodeInput::PRIMARY_OUTPUT_INDEX)], implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("core_types::ops::AddPairNode")), ..Default::default() }, @@ -1179,7 +1181,7 @@ mod test { let mut network = add_network(); network.map_ids(|id| NodeId(id.0 + 1)); let mapped_add = NodeNetwork { - exports: vec![NodeInput::node(NodeId(2), 0)], + exports: vec![NodeInput::node(NodeId(2), NodeInput::PRIMARY_OUTPUT_INDEX)], nodes: [ ( NodeId(1), @@ -1192,7 +1194,7 @@ mod test { ( NodeId(2), DocumentNode { - inputs: vec![NodeInput::node(NodeId(1), 0)], + inputs: vec![NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX)], implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("core_types::ops::AddPairNode")), ..Default::default() }, @@ -1214,11 +1216,11 @@ mod test { }; // TODO: Extend test cases to test nested network let mut extraction_network = NodeNetwork { - exports: vec![NodeInput::node(NodeId(1), 0)], + exports: vec![NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX)], nodes: [ id_node.clone(), DocumentNode { - inputs: vec![NodeInput::node(NodeId(0), 0)], + inputs: vec![NodeInput::node(NodeId(0), NodeInput::PRIMARY_OUTPUT_INDEX)], implementation: DocumentNodeImplementation::Extract, ..Default::default() }, @@ -1239,7 +1241,7 @@ mod test { #[test] fn flatten_add() { let mut network = NodeNetwork { - exports: vec![NodeInput::node(NodeId(1), 0)], + exports: vec![NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX)], nodes: [( NodeId(1), DocumentNode { @@ -1264,7 +1266,7 @@ mod test { #[test] fn resolve_proto_node_add() { let document_node = DocumentNode { - inputs: vec![NodeInput::node(NodeId(0), 0)], + inputs: vec![NodeInput::node(NodeId(0), NodeInput::PRIMARY_OUTPUT_INDEX)], call_argument: concrete!(u32), implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("core_types::structural::ConsNode")), ..Default::default() @@ -1347,12 +1349,12 @@ mod test { fn flat_network() -> NodeNetwork { NodeNetwork { - exports: vec![NodeInput::node(NodeId(11), 0)], + exports: vec![NodeInput::node(NodeId(11), NodeInput::PRIMARY_OUTPUT_INDEX)], nodes: [ ( NodeId(10), DocumentNode { - inputs: vec![NodeInput::node(NodeId(14), 0)], + inputs: vec![NodeInput::node(NodeId(14), NodeInput::PRIMARY_OUTPUT_INDEX)], call_argument: concrete!(u32), implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("core_types::structural::ConsNode")), original_location: OriginalLocation { @@ -1381,7 +1383,7 @@ mod test { ( NodeId(11), DocumentNode { - inputs: vec![NodeInput::node(NodeId(10), 0)], + inputs: vec![NodeInput::node(NodeId(10), NodeInput::PRIMARY_OUTPUT_INDEX)], implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("core_types::ops::AddPairNode")), original_location: OriginalLocation { path: Some(vec![NodeId(1), NodeId(1)]), @@ -1401,7 +1403,7 @@ mod test { fn two_node_identity() -> NodeNetwork { NodeNetwork { - exports: vec![NodeInput::node(NodeId(1), 0), NodeInput::node(NodeId(2), 0)], + exports: vec![NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX), NodeInput::node(NodeId(2), NodeInput::PRIMARY_OUTPUT_INDEX)], nodes: [ ( NodeId(1), @@ -1461,10 +1463,10 @@ mod test { #[test] fn simple_duplicate() { - let result = output_duplicate(vec![NodeInput::node(NodeId(1), 0)], NodeInput::node(NodeId(1), 0)); + let result = output_duplicate(vec![NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX)], NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX)); println!("{result:#?}"); assert_eq!(result.exports.len(), 1, "The number of outputs should remain as 1"); - assert_eq!(result.exports[0], NodeInput::node(NodeId(11), 0), "The outer network output should be from a duplicated inner network"); + assert_eq!(result.exports[0], NodeInput::node(NodeId(11), NodeInput::PRIMARY_OUTPUT_INDEX), "The outer network output should be from a duplicated inner network"); let mut ids = result.nodes.keys().copied().collect::>(); ids.sort(); assert_eq!(ids, vec![NodeId(11), NodeId(10010)], "Should only contain identity and values"); diff --git a/node-graph/interpreted-executor/src/lib.rs b/node-graph/interpreted-executor/src/lib.rs index be3c3a7d6a..a0683431ba 100644 --- a/node-graph/interpreted-executor/src/lib.rs +++ b/node-graph/interpreted-executor/src/lib.rs @@ -14,7 +14,7 @@ mod tests { use graph_craft::*; let network = NodeNetwork { - exports: vec![NodeInput::node(NodeId(1), 0)], + exports: vec![NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX)], nodes: [ // Simple identity node taking a number as input from outside the graph ( @@ -30,7 +30,7 @@ mod tests { ( NodeId(1), DocumentNode { - inputs: vec![NodeInput::node(NodeId(0), 0), NodeInput::node(NodeId(0), 0)], + inputs: vec![NodeInput::node(NodeId(0), NodeInput::PRIMARY_OUTPUT_INDEX), NodeInput::node(NodeId(0), NodeInput::PRIMARY_OUTPUT_INDEX)], implementation: DocumentNodeImplementation::ProtoNode(graphene_std::math_nodes::add::IDENTIFIER), ..Default::default() }, diff --git a/node-graph/interpreted-executor/src/util.rs b/node-graph/interpreted-executor/src/util.rs index 036db17b2d..c8e763ac8d 100644 --- a/node-graph/interpreted-executor/src/util.rs +++ b/node-graph/interpreted-executor/src/util.rs @@ -22,13 +22,13 @@ pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc>>>>>> ab83b34a (fix:) implementation: DocumentNodeImplementation::ProtoNode(graphene_std::render_node::create_context::IDENTIFIER), context_features: graphene_std::ContextDependencies { // We add the extract index annotation here to force the compiler to add a context nullification node before this node so the render context is properly nullified so the render cache node can do its's work @@ -107,14 +111,14 @@ pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc")), - inputs: vec![NodeInput::node(NodeId(2), 0)], + inputs: vec![NodeInput::node(NodeId(2), NodeInput::PRIMARY_OUTPUT_INDEX)], ..Default::default() }); scope_injections.push(("wgpu-executor".to_string(), (NodeId(3), concrete!(&WgpuExecutor)))); } NodeNetwork { - exports: vec![NodeInput::node(NodeId(1), 0)], + exports: vec![NodeInput::node(NodeId(1), NodeInput::PRIMARY_OUTPUT_INDEX)], nodes: nodes.into_iter().enumerate().map(|(id, node)| (NodeId(id as u64), node)).collect(), scope_injections: scope_injections.into_iter().collect(), // TODO(TrueDoctor): check if it makes sense to set `generated` to `true` diff --git a/node-graph/preprocessor/src/lib.rs b/node-graph/preprocessor/src/lib.rs index 0f9bf398e4..7db2a23acd 100644 --- a/node-graph/preprocessor/src/lib.rs +++ b/node-graph/preprocessor/src/lib.rs @@ -52,7 +52,7 @@ pub fn generate_node_substitutions() -> HashMap = node_inputs(fields, first_node_io); let input_count = inputs.len(); - let network_inputs = (0..input_count).map(|i| NodeInput::node(NodeId(i as u64), 0)).collect(); + let network_inputs = (0..input_count).map(|i| NodeInput::node(NodeId(i as u64), NodeInput::PRIMARY_OUTPUT_INDEX)).collect(); let identity_node = ops::identity::IDENTIFIER; @@ -125,7 +125,7 @@ pub fn generate_node_substitutions() -> HashMap