cg-from-scratch/include/window/window.h

47 lines
933 B
C

#ifndef WINDOW_H
#define WINDOW_H
#include "c_cpp_aliases/aliases.h"
#include "vector/vec.h"
#include <SDL2/SDL_video.h>
#include <stdbool.h>
typedef struct {
u8 a;
u8 b;
u8 g;
u8 r;
} rgba_t;
typedef struct {
union {
rgba_t rgba;
u32 colour;
};
} colour_t;
typedef struct {
u32 width;
u32 height;
u32 half_width;
u32 half_height;
const char *title;
SDL_Window *window;
SDL_Surface *front_buffer;
SDL_Surface *back_buffer;
} window_t;
bool init_window(window_t *wnd, u32 width, u32 height, const char *title);
void close_window(window_t *wnd);
void clear_window(window_t *wnd, colour_t colour);
void set_pixel(window_t *wnd, i32 x, i32 y, colour_t colour);
void swap_buffers(window_t *wnd);
vec3f_t window_to_viewport(window_t *wnd, i32 x, i32 y, vec3f_t viewport);
colour_t colour_add_colour(colour_t a, colour_t b);
colour_t colour_mul(colour_t colour, f32 scalar);
#endif // !WINDOW_H