arrow-drawing-test/drawing.h

56 lines
1.1 KiB
C

#ifndef DRAWING_H
#define DRAWING_H
#include "aliases/aliases.h"
#include <SDL_pixels.h>
#include <SDL_render.h>
#include <stdbool.h>
#define DEFAULT_ARROWS_CAPACITY 1024
#define init_arrows_default(arrows) \
init_arrows_arr(arrows, DEFAULT_ARROWS_CAPACITY)
#define init_arrows_with_capacity(arrows, capacity) \
init_arrows_arr(arrows, capacity)
typedef struct colour colour_t;
struct colour {
union {
u32 abgr;
SDL_Color colour;
};
};
typedef struct point point_t;
struct point {
i32 x;
i32 y;
};
typedef struct vec2 vec2_t;
struct vec2 {
i32 x;
i32 y;
};
typedef struct arrow arrow_t;
struct arrow {
point_t origin;
vec2_t direction;
};
typedef struct arrows arrows_t;
struct arrows {
arrow_t *lines;
u64 count;
u64 capacity;
};
bool init_arrows_arr(arrows_t *lines, u64 capacity);
void add_arrow(arrows_t *lines, arrow_t ln);
void draw_arrows(SDL_Renderer *renderer, const arrows_t *arrows,
colour_t colour);
void draw_arrow(SDL_Renderer *renderer, const arrow_t *arrow, colour_t colour);
#endif // !DRAWING_H