Add functionality to draw nodes with user-defined inputs count
This commit is contained in:
@@ -32,8 +32,8 @@ struct compositor {
|
||||
ui_ctx ctx;
|
||||
};
|
||||
|
||||
void add_node(compositor *comp, node_type type, node_data data, i32 x, i32 y,
|
||||
ui_elem_colours colours);
|
||||
void add_node(compositor *comp, node_type type, node_data data, u64 inputs,
|
||||
i32 x, i32 y, ui_elem_colours colours);
|
||||
|
||||
i32 run_main_loop(void) {
|
||||
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
|
||||
@@ -124,8 +124,8 @@ i32 run_main_loop(void) {
|
||||
if (comp.event.drop.windowID == main_window->id) {
|
||||
node_data data = (node_data){.path = comp.event.drop.file};
|
||||
|
||||
add_node(&comp, NODEYPE_IO, data, comp.ctx.mouse_x, comp.ctx.mouse_y,
|
||||
io_node_colours);
|
||||
add_node(&comp, NODEYPE_IO, data, IO_INPUT_COUNT, comp.ctx.mouse_x,
|
||||
comp.ctx.mouse_y, io_node_colours);
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -147,8 +147,8 @@ i32 run_main_loop(void) {
|
||||
if (ui_button(toolbox, &(comp.ctx), rect, button_colours)) {
|
||||
node_data data = (node_data){.func = ops[i]};
|
||||
|
||||
add_node(&comp, NODEYPE_OP, data, comp.ctx.mouse_x, comp.ctx.mouse_y,
|
||||
op_node_colours);
|
||||
add_node(&comp, NODEYPE_OP, data, OP_INPUT_COUNT, comp.ctx.mouse_x,
|
||||
comp.ctx.mouse_y, op_node_colours);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,24 +175,31 @@ i32 run_main_loop(void) {
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
void add_node(compositor *comp, node_type type, node_data data, i32 x, i32 y,
|
||||
ui_elem_colours colours) {
|
||||
void add_node(compositor *comp, node_type type, node_data data, u64 inputs,
|
||||
i32 x, i32 y, ui_elem_colours colours) {
|
||||
if (comp->count + 1 >= MAX_NODES) {
|
||||
return;
|
||||
}
|
||||
|
||||
comp->nodes[(comp->count)++] = (node){
|
||||
.node =
|
||||
(ui_node_elem){
|
||||
.rec =
|
||||
(rect){
|
||||
.topleft.x = x,
|
||||
.topleft.y = y,
|
||||
.w = NODE_WIDTH,
|
||||
.h = NODE_HEIGHT,
|
||||
},
|
||||
.noodle = (line){0},
|
||||
line *noodles = mem_arena_alloc(comp->arena, inputs * sizeof(line));
|
||||
if (!noodles) {
|
||||
return;
|
||||
}
|
||||
|
||||
ui_node_elem elem = {
|
||||
.rec =
|
||||
(rect){
|
||||
.topleft.x = x,
|
||||
.topleft.y = y,
|
||||
.w = NODE_WIDTH,
|
||||
.h = NODE_HEIGHT,
|
||||
},
|
||||
.inputs = inputs,
|
||||
.noodles = noodles,
|
||||
};
|
||||
|
||||
comp->nodes[(comp->count)++] = (node){
|
||||
.node = elem,
|
||||
.colours = colours,
|
||||
.type = type,
|
||||
.data.path = data.path,
|
||||
|
||||
Reference in New Issue
Block a user