summaryrefslogtreecommitdiff
path: root/rcache.h
diff options
context:
space:
mode:
authorquou <quou@disroot.org>2024-06-01 12:19:16 +1000
committerquou <quou@disroot.org>2024-06-01 12:20:17 +1000
commitea7cd94f7aeb177618db3907a6c86b7252e018f0 (patch)
treee972f9cf590ef756c2e41f3eac5b03e16db08300 /rcache.h
Initial commit.
Diffstat (limited to 'rcache.h')
-rw-r--r--rcache.h148
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