mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-08-02 20:42:16 +00:00
Add bounding box node (#1376)
* Add bounding box node Generates a rectangle based on the bounding box of the input vector data * Remove redundant <> * Fix formatting --------- Co-authored-by: Dennis Kobert <dennis@kobert.dev>
This commit is contained in:
parent
f57fa2e7c9
commit
77e5ec9d4f
4 changed files with 23 additions and 1 deletions
|
@ -133,3 +133,15 @@ fn circular_repeat_vector_data(mut vector_data: VectorData, rotation_offset: f32
|
|||
vector_data.subpaths = new_subpaths;
|
||||
vector_data
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct BoundingBoxNode;
|
||||
|
||||
#[node_macro::node_fn(BoundingBoxNode)]
|
||||
fn generate_bounding_box(mut vector_data: VectorData) -> VectorData {
|
||||
let bounding_box = vector_data.bounding_box().unwrap();
|
||||
VectorData::from_subpaths(vec![Subpath::new_rect(
|
||||
vector_data.transform.transform_point2(bounding_box[0]),
|
||||
vector_data.transform.transform_point2(bounding_box[1]),
|
||||
)])
|
||||
}
|
||||
|
|
|
@ -307,7 +307,7 @@ impl ProtoNetwork {
|
|||
let outwards_edges = self.collect_outwards_edges();
|
||||
|
||||
for index in 0..self.nodes.len() {
|
||||
let Some(sni) = self.nodes[index].1.stable_node_id() else {
|
||||
let Some(sni) = self.nodes[index].1.stable_node_id() else {
|
||||
panic!("failed to generate stable node id for node {:#?}", self.nodes[index].1);
|
||||
};
|
||||
self.replace_node_id(&outwards_edges, index as NodeId, sni, false);
|
||||
|
|
|
@ -567,6 +567,7 @@ fn node_registry() -> HashMap<NodeIdentifier, HashMap<NodeIOTypes, NodeConstruct
|
|||
register_node!(graphene_core::vector::SetFillNode<_, _, _, _, _, _, _>, input: VectorData, params: [graphene_core::vector::style::FillType, Option<graphene_core::Color>, graphene_core::vector::style::GradientType, DVec2, DVec2, DAffine2, Vec<(f64, Option<graphene_core::Color>)>]),
|
||||
register_node!(graphene_core::vector::SetStrokeNode<_, _, _, _, _, _, _>, input: VectorData, params: [Option<graphene_core::Color>, f32, Vec<f32>, f32, graphene_core::vector::style::LineCap, graphene_core::vector::style::LineJoin, f32]),
|
||||
register_node!(graphene_core::vector::RepeatNode<_, _>, input: VectorData, params: [DVec2, u32]),
|
||||
register_node!(graphene_core::vector::BoundingBoxNode, input: VectorData, params: []),
|
||||
register_node!(graphene_core::vector::CircularRepeatNode<_, _, _>, input: VectorData, params: [f32, f32, u32]),
|
||||
register_node!(graphene_core::vector::generator_nodes::UnitCircleGenerator, input: (), params: []),
|
||||
register_node!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue