compositor-test/include/window.h

85 lines
1.6 KiB
C

#ifndef WINDOW_H
#define WINDOW_H
#include "aliases/aliases.h"
#include <SDL2/SDL_pixels.h>
#include <SDL2/SDL_render.h>
#include <SDL2/SDL_video.h>
#include <stdbool.h>
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