#ifndef WINDOW_H #define WINDOW_H #include "aliases.h" #include "mem_arena.h" #include "vector/vec.h" #include #include 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; f32 *z_buffer; } window_t; bool init_window(Arena *arena, 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 set_z_pixel(window_t *wnd, i32 x, i32 y, f32 value); f32 get_z_pixel(const window_t *wnd, i32 x, i32 y); void swap_buffers(window_t *wnd); vec3f_t window_to_viewport(const window_t *wnd, i32 x, i32 y, vec3f_t viewport); vec2i_t viewport_to_window(const window_t *wnd, f32 x, f32 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