Add Circular Repeat Node (#1373)

* Add Circular Repeat Node

Repeats a given set of Vector Data in a circular pattern a specified
amount of times.

* Remove debug statement from RepeatNode
This commit is contained in:
isiko
2023-08-08 18:13:44 +02:00
committed by GitHub
parent 5c08248681
commit f57fa2e7c9
4 changed files with 58 additions and 1 deletions

View File

@@ -1867,6 +1867,20 @@ fn static_nodes() -> Vec<DocumentNodeType> {
properties: node_properties::repeat_properties,
..Default::default()
},
DocumentNodeType {
name: "Circular Repeat",
category: "Vector",
identifier: NodeImplementation::proto("graphene_core::vector::CircularRepeatNode<_, _, _>"),
inputs: vec![
DocumentInputType::value("Vector Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true),
DocumentInputType::value("Rotation Offset", TaggedValue::F32(0.), false),
DocumentInputType::value("Radius", TaggedValue::F32(5.), false),
DocumentInputType::value("Count", TaggedValue::U32(10), false),
],
outputs: vec![DocumentOutputType::new("Vector", FrontendGraphDataType::Subpath)],
properties: node_properties::circle_repeat_properties,
..Default::default()
},
DocumentNodeType {
name: "Image Segmentation",
category: "Image Adjustments",

View File

@@ -1680,6 +1680,14 @@ pub fn repeat_properties(document_node: &DocumentNode, node_id: NodeId, _context
vec![direction, LayoutGroup::Row { widgets: count }]
}
pub fn circle_repeat_properties(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec<LayoutGroup> {
let angle_radius = number_widget(document_node, node_id, 1, "Rotation Offset", NumberInput::default(), true);
let radius = number_widget(document_node, node_id, 2, "Radius", NumberInput::default().min(0.), true);
let count = number_widget(document_node, node_id, 3, "Count", NumberInput::default().min(1.), true);
vec![LayoutGroup::Row { widgets: angle_radius }, LayoutGroup::Row { widgets: radius }, LayoutGroup::Row { widgets: count }]
}
/// Fill Node Widgets LayoutGroup
pub fn fill_properties(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec<LayoutGroup> {
let fill_type_index = 1;