diff options
author | quou <quou@disroot.org> | 2024-06-01 12:19:16 +1000 |
---|---|---|
committer | quou <quou@disroot.org> | 2024-06-01 12:20:17 +1000 |
commit | ea7cd94f7aeb177618db3907a6c86b7252e018f0 (patch) | |
tree | e972f9cf590ef756c2e41f3eac5b03e16db08300 /rcache.h |
Initial commit.
Diffstat (limited to 'rcache.h')
-rw-r--r-- | rcache.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/rcache.h b/rcache.h new file mode 100644 index 0000000..ff24f0c --- /dev/null +++ b/rcache.h @@ -0,0 +1,148 @@ +#ifndef rcache_h +#define rcache_h + +#include "render.h" + +#if rcache_enable +typedef enum { + rc_cmd_bmp, + rc_cmd_bmp_mod, + rc_cmd_bmp_cp, + rc_cmd_bmp_cp_mod, + rc_cmd_rfont_text, + rc_cmd_rfont_text_col, + rc_cmd_set_clip, + rc_cmd_reset_clip, + rc_cmd_rect +} RC_Cmd_Type; + +typedef struct { + RC_Cmd_Type type; + int size; + int x, y, w, h; +} RC_Cmd; + +typedef struct { + RC_Cmd cmd; + const Bitmap* bmp; + int sx, sy; +} RC_Cmd_Bmp; + +typedef struct { + RC_Cmd cmd; + const Bitmap* bmp; + int sx, sy; + Colour col; +} RC_Cmd_Bmp_Mod; + +typedef struct { + RC_Cmd cmd; + Bitmap bmp; + int sx, sy; +} RC_Cmd_Bmp_Cp; + +typedef struct { + RC_Cmd cmd; + Bitmap bmp; + int sx, sy; + Colour col; +} RC_Cmd_Bmp_Cp_Mod; + +typedef struct { + RC_Cmd cmd; + Font* font; +} RC_Cmd_RFont_Text; + +typedef struct { + RC_Cmd cmd; + Colour col; + Font* font; +} RC_Cmd_RFont_Text_Col; + +typedef struct { + RC_Cmd cmd; + Colour col; +} RC_Cmd_Rect; + +typedef RC_Cmd RC_Cmd_Set_Clip; +typedef RC_Cmd RC_Cmd_Reset_Clip; + +void rc_init(void); +RC_Cmd* rc_add_cmd(RC_Cmd* cmd); +void rc_add_cmd_bmp( + const Bitmap* bmp, + int x, + int y, + const Rectangle* src +); +void rc_add_cmd_bmp_col( + const Bitmap* bmp, + int x, + int y, + const Rectangle* src, + Colour col +); +void rc_add_cmd_bmp_cp( + const Bitmap* bmp, + int x, + int y, + const Rectangle* src +); +void rc_add_cmd_bmp_cp_col( + const Bitmap* bmp, + int x, + int y, + const Rectangle* src, + Colour col +); +void rc_add_cmd_rfont_text( + Font* font, + int x, + int y, + const char* text +); +void rc_add_cmd_rfont_text_col( + Font* font, + int x, + int y, + const char* text, + Colour col +); +void rc_add_cmd_clip( + const Rectangle* rect +); +void rc_add_cmd_reset_clip(void); +void rc_add_cmd_rect( + const Rectangle* r, + Colour col +); +void rc_begin(void); +void rc_flush(void); +void rc_invalidate(const Rectangle* r); + +#else +void rc_init(void); +#define rc_add_cmd_bmp(bmp, x, y, src) \ + render_bitmap(bmp, x, y, src) +#define rc_add_cmd_bmp_col(bmp, x, y, src, col) \ + render_bitmap_col(bmp, x, y, src, col) +#define rc_add_cmd_bmp_cp(bmp, x, y, src) \ + render_bitmap(bmp, x, y, src) +#define rc_add_cmd_bmp_cp_col(bmp, x, y, src, col) \ + render_bitmap_col(bmp, x, y, src, col) +#define rc_add_cmd_rfont_text(font, x, y, text) \ + rfont_text(font, x, y, text) +#define rc_add_cmd_rfont_text_col(font, x, y, text, col) \ + rfont_text_col(font, x, y, text, col) +#define rc_add_cmd_clip(rect) \ + render_clip(rect) +#define rc_add_cmd_reset_clip() \ + render_reset_clip() +#define rc_add_cmd_rect(r, col) \ + render_rect(r, col) +#define rc_invalidate(r) +#define rc_begin() +void rc_flush(void); +#endif + +#endif |