Files
armorpaint/paint/sources/nodes_brush.c
T

69 lines
2.1 KiB
C
Raw Normal View History

2026-03-09 13:17:15 +01:00
#include "global.h"
2026-03-06 12:56:38 +01:00
void nodes_brush_init() {
gc_unroot(nodes_brush_creates);
nodes_brush_creates = any_map_create();
gc_root(nodes_brush_creates);
any_map_set(nodes_brush_creates, "brush_output_node", brush_output_node_create);
// any_map_set(nodes_brush_creates, "tex_image_node", tex_image_node_create);
any_map_set(nodes_brush_creates, "TEX_IMAGE", tex_image_node_create);
any_map_set(nodes_brush_creates, "input_node", input_node_create);
any_map_set(nodes_brush_creates, "math_node", math_node_create);
any_map_set(nodes_brush_creates, "random_node", random_node_create);
any_map_set(nodes_brush_creates, "separate_vector_node", separate_vector_node_create);
any_map_set(nodes_brush_creates, "time_node", time_node_create);
any_map_set(nodes_brush_creates, "float_node", float_node_create);
any_map_set(nodes_brush_creates, "vector_node", vector_node_create);
any_map_set(nodes_brush_creates, "vector_math_node", vector_math_node_create);
nodes_brush_list_init();
}
void nodes_brush_list_init() {
2026-03-07 21:12:59 +01:00
if (nodes_brush_list != NULL) {
2026-03-06 12:56:38 +01:00
return;
}
gc_unroot(nodes_brush_category0);
nodes_brush_category0 = any_array_create_from_raw(
2026-03-08 08:39:29 +01:00
(void *[]){
2026-03-06 12:56:38 +01:00
tex_image_node_def,
input_node_def,
math_node_def,
random_node_def,
separate_vector_node_def,
time_node_def,
float_node_def,
vector_node_def,
vector_math_node_def,
},
9);
gc_root(nodes_brush_category0);
gc_unroot(nodes_brush_list);
nodes_brush_list = any_array_create_from_raw(
2026-03-08 08:39:29 +01:00
(void *[]){
2026-03-06 12:56:38 +01:00
nodes_brush_category0,
},
1);
gc_root(nodes_brush_list);
}
2026-03-07 21:12:59 +01:00
ui_node_t *nodes_brush_create_node(char *node_type) {
2026-03-06 12:56:38 +01:00
for (i32 i = 0; i < nodes_brush_list->length; ++i) {
ui_node_t_array_t *c = nodes_brush_list->buffer[i];
for (i32 i = 0; i < c->length; ++i) {
ui_node_t *n = c->buffer[i];
if (string_equals(n->type, node_type)) {
ui_node_canvas_t *canvas = context_raw->brush->canvas;
ui_nodes_t *nodes = context_raw->brush->nodes;
ui_node_t *node = ui_nodes_make_node(n, nodes, canvas);
any_array_push(canvas->nodes, node);
return node;
}
}
}
2026-03-07 21:12:59 +01:00
return NULL;
2026-03-06 12:56:38 +01:00
}