Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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());
Expand All @@ -91,7 +105,13 @@ pub fn get_current_transform(inputs: &[NodeInput]) -> DAffine2 {

/// 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) }
const ORIGIN_OFFSET_INDEX: usize = 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -367,23 +367,23 @@ 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);
}

pub fn opacity_set(&mut self, opacity: f64) {
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);
}

pub fn blending_fill_set(&mut self, fill: f64) {
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);
}

Expand All @@ -392,7 +392,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);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,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::TAU;

Expand Down Expand Up @@ -201,7 +202,7 @@ impl NumberOfPointsDial {
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, graphene_std::vector::generator_nodes::star::SidesInput::<u32>::INDEX),
input: NodeInput::value(TaggedValue::U32(new_point_count as u32), false),
});
responses.add(NodeGraphMessage::RunDocumentGraph);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ use crate::messages::tool::common_functionality::graph_modification_utils;
use glam::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)]
Expand Down Expand Up @@ -58,11 +60,11 @@ impl Arrow {

// Update Arrow node start and end points with document space coordinates
responses.add(NodeGraphMessage::SetInput {
input_connector: InputConnector::node(node_id, 1),
input_connector: InputConnector::node(node_id, StartInput::INDEX),
input: NodeInput::value(TaggedValue::DVec2(start_document), false),
});
responses.add(NodeGraphMessage::SetInput {
input_connector: InputConnector::node(node_id, 2),
input_connector: InputConnector::node(node_id, EndInput::INDEX),
input: NodeInput::value(TaggedValue::DVec2(end_document), false),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*;
use glam::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)]
Expand Down Expand Up @@ -73,11 +75,11 @@ impl Line {
};

responses.add(NodeGraphMessage::SetInput {
input_connector: InputConnector::node(node_id, 1),
input_connector: InputConnector::node(node_id, StartInput::INDEX),
input: NodeInput::value(TaggedValue::DVec2(document_points[0]), false),
});
responses.add(NodeGraphMessage::SetInput {
input_connector: InputConnector::node(node_id, 2),
input_connector: InputConnector::node(node_id, EndInput::INDEX),
input: NodeInput::value(TaggedValue::DVec2(document_points[1]), false),
});
responses.add(NodeGraphMessage::RunDocumentGraph);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There seems to be a typo in NodeInputDecleration. It should likely be NodeInputDeclaration. This might be an issue in the upstream graphene_std crate that should be corrected.

Suggested change
use graphene_std::NodeInputDecleration;
use graphene_std::NodeInputDeclaration;

use graphene_std::vector::generator_nodes::regular_polygon::*;
use std::collections::VecDeque;

#[derive(Clone, Debug, Default)]
Expand Down Expand Up @@ -147,7 +149,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),
});

Expand Down Expand Up @@ -185,7 +187,7 @@ impl Polygon {
});

responses.add(NodeGraphMessage::SetInput {
input_connector: InputConnector::node(node_id, 1),
input_connector: InputConnector::node(node_id, SidesInput::<u32>::INDEX),
input: NodeInput::value(TaggedValue::U32(new_dimension), false),
});
responses.add(NodeGraphMessage::RunDocumentGraph);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There seems to be a typo in NodeInputDecleration. It should likely be NodeInputDeclaration. This might be an issue in the upstream graphene_std crate that should be corrected.

Suggested change
use graphene_std::NodeInputDecleration;
use graphene_std::NodeInputDeclaration;

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is a module introduced in March 2025

use graphene_std::vector::generator_nodes::rectangle::*;
use std::collections::VecDeque;

#[derive(Default)]
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ 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;
Expand All @@ -186,11 +186,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),
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down Expand Up @@ -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),
});

Expand Down
5 changes: 5 additions & 0 deletions node-graph/libraries/no-std-types/src/color/discrete_srgb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,11 @@ mod tests {
#[test]
fn test_float_to_srgb_u8() {
for u in 0..=u8::MAX {
// let a = srgb_u8_to_float(u);
// let b = srgb_u8_to_float_ref(u);
// if a != b {
// panic!("Mismatch at u={}: {} != {}", u, a, b);
// }
assert!(srgb_u8_to_float(u) == srgb_u8_to_float_ref(u));
}
}
Expand Down