#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