Generalize the 'Map Vector' node as 'Map' with support for all graphical types (#3793)

* Rename Map Vector to Map

* Fix compilation errors

* Move to the Graphic module and add Read {Graphic, Raster, Color} nodes

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
Dennis Kobert
2026-02-20 22:33:02 +01:00
committed by GitHub
parent bd1c54907d
commit ba177c4c5d
5 changed files with 74 additions and 37 deletions

View File

@@ -1325,25 +1325,6 @@ async fn separate_subpaths(_: impl Ctx, content: Table<Vector>) -> Table<Vector>
.collect()
}
// TODO: Call this "Map" once it's fully generic
#[node_macro::node(category("Vector"), path(graphene_core::vector))]
async fn map_vector(ctx: impl Ctx + CloneVarArgs + ExtractAll, content: Table<Vector>, mapped: impl Node<Context<'static>, Output = Table<Vector>>) -> Table<Vector> {
let mut rows = Vec::new();
for (i, row) in content.into_iter().enumerate() {
let owned_ctx = OwnedContextImpl::from(ctx.clone());
let owned_ctx = owned_ctx.with_vararg(Box::new(Table::new_from_row(row))).with_index(i);
let table = mapped.eval(owned_ctx.into_context()).await;
for inner_row in table {
rows.push(inner_row);
}
}
rows.into_iter().collect()
}
// TODO: Call this "Map" once it's fully generic
#[node_macro::node(category("Vector"), path(graphene_core::vector))]
async fn map_points(ctx: impl Ctx + CloneVarArgs + ExtractAll, content: Table<Vector>, mapped: impl Node<Context<'static>, Output = DVec2>) -> Table<Vector> {
let mut content = content;