86 lines
2.3 KiB
C
86 lines
2.3 KiB
C
#ifndef RENDERER_H
|
|
#define RENDERER_H
|
|
|
|
#include "SDL.h"
|
|
#include "SDL_pixels.h"
|
|
#include "SDL_render.h"
|
|
#include "SDL_surface.h"
|
|
#include "SDL_ttf.h"
|
|
#include "SDL_video.h"
|
|
#include "aliases.h"
|
|
#include <aliases.h>
|
|
#include <stdbool.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // !__cplusplus
|
|
|
|
typedef struct renderer Renderer;
|
|
|
|
typedef struct {
|
|
i32 width;
|
|
i32 height;
|
|
} TextSize;
|
|
|
|
typedef enum {
|
|
FONT_DIRECTION_LTR = TTF_DIRECTION_LTR,
|
|
FONT_DIRECTION_RTL = TTF_DIRECTION_RTL,
|
|
FONT_DIRECTION_TTB = TTF_DIRECTION_TTB,
|
|
FONT_DIRECTION_BTT = TTF_DIRECTION_BTT,
|
|
} FontDirection;
|
|
|
|
typedef struct {
|
|
f32 x;
|
|
f32 y;
|
|
f32 width;
|
|
f32 height;
|
|
} RenderRect;
|
|
|
|
/**
|
|
* Attempts to allocate a Renderer object on the heap.
|
|
*
|
|
* Returns the pointer to the object when it succeeds, or NULL if it fails.
|
|
*/
|
|
Renderer *create_renderer(SDL_Window *window);
|
|
|
|
/**
|
|
* Returns the valid drawable area that the renderer can use.
|
|
*
|
|
* Useful when rendering on screens that support high DPI since the drawable
|
|
* area is usually bigger than the user-defined size.
|
|
*/
|
|
void get_render_output_size(Renderer *renderer, i32 *w, i32 *h);
|
|
|
|
void set_render_draw_color(const Renderer *renderer, SDL_Color color);
|
|
void set_texture_color_modulation(SDL_Texture *texture, SDL_Color color);
|
|
void set_texture_alpha_modulation(SDL_Texture *texture, u8 alpha);
|
|
void render_clear(const Renderer *renderer, SDL_Color color);
|
|
void draw_rect(const Renderer *renderer, SDL_Color color, f32 x, f32 y, f32 w,
|
|
f32 h);
|
|
void fill_rect(const Renderer *renderer, SDL_Color color, f32 x, f32 y, f32 w,
|
|
f32 h);
|
|
void render_surface(const Renderer *renderer, SDL_Surface *surface,
|
|
const RenderRect *dest);
|
|
void render_texture(const Renderer *renderer, SDL_Texture *texture,
|
|
const RenderRect *src, const RenderRect *dest);
|
|
void swap_buffers(const Renderer *renderer);
|
|
|
|
/**
|
|
* Attempts to load an SDL_Texture from a file path.
|
|
*
|
|
* Returns a pointer to the object if it succeeds or NULL when it fails.
|
|
*/
|
|
SDL_Texture *load_texture(const Renderer *renderer, const char *path);
|
|
|
|
/**
|
|
* Frees the memory allocated to the Renderer object and performs the
|
|
* necessary cleanup.
|
|
*/
|
|
void destroy_renderer(Renderer **renderer);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // !__cplusplus
|
|
|
|
#endif // !RENDERER_H
|