aboutsummaryrefslogtreecommitdiff
path: root/headers/TZR_render.h
blob: b3f2ba3c0168e1443a0981fda29ae26e24f90d5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#pragma once
#include "TZR_types.h"
#include <SDL2/SDL_render.h>
#include <limits.h>

/* All draw calls should happen between TZR_DrawBegin and TZR_DrawEnd.
 * Return -1 on error. */
[[nodiscard]]
int TZR_DrawBegin(void);

/* Return -1 on error. */
[[nodiscard]]
int TZR_DrawEnd(void);

/* Return -1 on error. */
#define TZR_DrawSetColor(...) _TZR_DrawSetColor(&(const TZR_Color){ \
	.r=-1.0f, .g=-1.0f, .b=-1.0f, .a=-1.0f, ._=0, __VA_ARGS__ })
[[nodiscard]]
int _TZR_DrawSetColor(const TZR_Color *color);

/* Return -1 on error. */
[[nodiscard]]
int TZR_DrawClear(void);

/* Return -1 on error. Draw point on `x`;`y` in the framebuffer. */
[[nodiscard]]
int TZR_DrawPoint(int x, int y);

/* Return -1 on error. Draw line between `x0`;`y0` and `x1`;`y1` in the
 * framebuffer. */
[[nodiscard]]
int TZR_DrawLine(int x0, int y0, int x1, int y1);

/* Return -1 on error. Draw rectangle at `x`;`y` position of size `w`x`h` in the
 * framebuffer. */
[[nodiscard]]
int TZR_DrawRectangle(bool fill, int x, int y, int w, int h);

/* Return -1 on error. Draw texture ressource `id` at `x`;`y` position of
 * the framebuffer. */
#define TZR_DrawImage(...) _TZR_DrawImage(&(const TZR_DrawImageArgs){ \
	.x=0, .y=0, .ix=0, .iy=0, .w=INT_MIN, .h=INT_MIN, .r=0.0f, .sx=1.0f, \
	.sy=1.0f, .center=false, ._=0, __VA_ARGS__ })
[[nodiscard]]
int _TZR_DrawImage(const TZR_DrawImageArgs *args);