Update node_t struct definition
This commit is contained in:
parent
fc0e3524fe
commit
10ff46cfe4
@ -1,6 +1,7 @@
|
||||
#ifndef NODES_H
|
||||
#define NODES_H
|
||||
|
||||
#include "aliases/aliases.h"
|
||||
#include "window.h"
|
||||
|
||||
#define MAX_NODES 1024
|
||||
@ -13,20 +14,27 @@
|
||||
#define OP_NODE_FILL_COLOUR ((colour_t){.abgr = 0xffad6c3a})
|
||||
#define OP_NODE_BORDER_COLOUR ((colour_t){.abgr = 0xff8e4a33})
|
||||
|
||||
typedef i32 (*node_func_t)(i32 a, i32 b);
|
||||
typedef enum node_type node_type_t;
|
||||
typedef union node_data node_data_t;
|
||||
typedef struct node node_t;
|
||||
|
||||
enum comp_ops {
|
||||
COMP_OP_ADD,
|
||||
COMP_OP_SUB,
|
||||
COMP_OP_MUL,
|
||||
COMP_OP_DIV,
|
||||
enum node_type {
|
||||
NODE_TYPE_IO,
|
||||
NODE_TYPE_OP,
|
||||
|
||||
COUNT_COMP_OPS,
|
||||
COUNT_NODE_TYPES,
|
||||
};
|
||||
|
||||
union node_data {
|
||||
const char *path;
|
||||
node_func_t func;
|
||||
};
|
||||
|
||||
struct node {
|
||||
rect_t rect;
|
||||
const char *path;
|
||||
node_type_t type;
|
||||
node_data_t data;
|
||||
};
|
||||
|
||||
bool aabb(const node_t *node, i32 x, i32 y);
|
||||
|
24
src/nodes.c
24
src/nodes.c
@ -1,13 +1,33 @@
|
||||
#include "nodes.h"
|
||||
#include "aliases/aliases.h"
|
||||
#include "window.h"
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef struct node_colours node_colours_t;
|
||||
struct node_colours {
|
||||
colour_t fill;
|
||||
colour_t border;
|
||||
};
|
||||
|
||||
INTERNAL node_colours_t colours[COUNT_NODE_TYPES] = {
|
||||
[NODE_TYPE_IO] =
|
||||
(node_colours_t){
|
||||
.fill = IO_NODE_FILL_COLOUR,
|
||||
.border = IO_NODE_BORDER_COLOUR,
|
||||
},
|
||||
[NODE_TYPE_OP] =
|
||||
(node_colours_t){
|
||||
.fill = OP_NODE_FILL_COLOUR,
|
||||
.border = OP_NODE_BORDER_COLOUR,
|
||||
},
|
||||
};
|
||||
|
||||
bool aabb(const node_t *node, i32 x, i32 y) {
|
||||
return x > node->rect.topleft.x && x <= node->rect.topleft.x + node->rect.w &&
|
||||
y > node->rect.topleft.y && y <= node->rect.topleft.y + node->rect.h;
|
||||
}
|
||||
|
||||
void draw_node(const window_t *wnd, const node_t *node) {
|
||||
fill_rect(wnd, &(node->rect), IO_NODE_FILL_COLOUR);
|
||||
draw_rect(wnd, &(node->rect), IO_NODE_BORDER_COLOUR);
|
||||
fill_rect(wnd, &(node->rect), colours[node->type].fill);
|
||||
draw_rect(wnd, &(node->rect), colours[node->type].border);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user