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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#ifndef RENDERING_H
#define RENDERING_H
#include "types.h"
#include "vector.h"
/* Definitions */
#define RGBA(_r,_g,_b,_a) ((Engine_color){.r=_r, .g=_g, .b=_b, .a=_a})
#define RGB(_r,_g,_b) RGBA(_r,_g,_b,0xFF)
/* Types */
typedef struct {
u8 r;
u8 g;
u8 b;
u8 a;
} Engine_color;
typedef struct {
u32 texture_id;
v2_i32 coord;
} Sprite;
#include "ui.h"
#include "engine.h"
/* Rendering functions */
void render_begin(Window *w);
void render_present(Window *w);
void drawcall_reset(void);
void render(Window *w);
/* Misc */
void engine_window_resize_pointers(i32* w, i32* h);
void engine_window_resize_pointers_reset(void);
/* UI rendering */
/* See rendering_ui.c for implementation */
i64 engine_render_text(i32 font_id, Engine_color fg, char *text, v2_i32 *size_out, bool wrapped);
void engine_draw_uitree(UITree *t);
void engine_draw_sprite(Sprite *s, v2_i32 *pos, f32 scale);
void engine_draw_sprite_ex(Sprite *s, v2_i32 *pos, f32 scale, Engine_color colormod);
Sprite sprite_new(u64 tid, u8 coord);
#ifdef ENGINE_INTERNALS
#include "engine.h"
#define TEXTURES_INCREMENT 512
typedef enum {
RenderDrawCallType_UITree,
/*RenderDrawCallType_UIButton,*/
RenderDrawCallType_Text,
RenderDrawCallType_Sprite,
} RenderDrawCallType;
typedef struct {
RenderDrawCallType type;
union {
void *data;
struct {
Sprite *sprite;
i32 x; i32 y;
f32 scale;
SDL_Color mod;
} sprite;
} data;
} RenderDrawCall;
void render_uitree(Window *w, UITree *t);
void render_container(Window *w, UITree_container *t);
void render_button(Window *w, UITree_button *t);
void render_title(Window *w, UITree_title *t);
void render_text(Window *w, UITree_text *t);
v2_i32 elem_size(UITree *root);
#endif
#endif
|