#ifndef WINDOW_H #define WINDOW_H #include "aliases.h" #include #include #include #include typedef struct point point; typedef point vec2; typedef struct line line; typedef struct triangle triangle; typedef struct quad quad; typedef struct rect rect; typedef struct window window; struct point { i32 x; i32 y; }; struct line { point p0; point p1; }; struct triangle { point p0; point p1; point p2; }; struct quad { point p0; point p1; point p2; point p3; }; struct rect { point topleft; i32 w; i32 h; }; struct window { u32 id; u64 x; u64 y; u64 width; u64 height; const char *title; SDL_Window *window; SDL_Renderer *renderer; }; typedef struct colour colour; struct colour { union { u32 abgr; SDL_Color colour; }; }; bool init_window(window *wnd, const char *title, u32 width, u32 height, i32 x, i32 y); void cleanup_window(window *wnd); void clear_window(const window *wnd, colour colour); void swap_buffers(const window *wnd); vec2 line_direction(const line *ln); void draw_point(const window *wnd, point p, colour colour); void draw_line(const window *wnd, const line *ln, colour colour); void draw_triangle(const window *wnd, triangle triangle, colour colour); void draw_quad(const window *wnd, quad qd, colour colour); void draw_rect(const window *wnd, rect rec, colour colour); void fill_triangle(const window *wnd, triangle triangle, colour colour); void fill_quad(const window *wnd, quad qd, colour colour); void fill_rect(const window *wnd, rect rec, colour colour); #endif // !WINDOW_H