#ifndef __GE_RENDER_H__ #define __GE_RENDER_H__ #include "ge_resource.h" typedef int ge_render_unit_t; typedef int ge_render_color_t; typedef struct ge_render_pos2 { ge_render_unit_t x; ge_render_unit_t y; } ge_render_pos2_t; typedef struct ge_render_rect { ge_render_pos2_t pos; ge_render_pos2_t size; } ge_render_rect_t; struct ge_render; typedef struct ge_render ge_render_t; typedef int(*ge_render_init_func_t) (ge_render_t* ctx, const ge_render_pos2_t* init_screen_size); typedef int(*ge_render_flush_func_t) (ge_render_t* ctx); typedef int(*ge_render_draw_point_func_t) (ge_render_t* ctx, const ge_render_pos2_t* pos, ge_render_color_t color); typedef int(*ge_render_draw_rect_func_t) (ge_render_t* ctx, const ge_render_rect_t* rect, ge_render_color_t color); typedef int(*ge_render_draw_text_func_t) (ge_render_t* ctx, const ge_render_pos2_t* pos, const char* text); typedef int(*ge_render_draw_resource_func_t)(ge_render_t* ctx, const ge_render_pos2_t* pos, const ge_resource_t* res); struct ge_render { void* context; ge_render_pos2_t screen_size; ge_render_init_func_t init_func; ge_render_flush_func_t func_flush; ge_render_draw_point_func_t func_draw_point; ge_render_draw_rect_func_t func_draw_rect; ge_render_draw_text_func_t func_draw_text; ge_render_draw_resource_func_t func_draw_res; }; #endif // __GE_RENDER_H__