#ifndef __GE_RENDER_COMPONENT_H__ #define __GE_RENDER_COMPONENT_H__ #include typedef enum { GE_RENDER_COMP_TYPE_NONE, GE_RENDER_COMP_TYPE_POINT, GE_RENDER_COMP_TYPE_TEXT, GE_RENDER_COMP_TYPE_RECT, GE_RENDER_COMP_TYPE_RECOURCE, GE_RENDER_COMP_TYPE_TILEMAP, GE_RENDER_COMP_TYPE_SIZE, /* never used, only for calulate size */ } ge_render_component_type_t; struct ge_render_component; typedef struct ge_render_component ge_render_component_t; struct ge_render_component { ge_render_component_type_t type; union { struct { ge_render_color_t color; } point; struct { ge_render_pos2_t size; ge_render_color_t color; } rect; struct { ge_render_pos2_t map_size; // number of tiles ge_render_unit_t tile_size; ge_render_component_t** components; // not be tilemap } tilemap; } data; }; #endif // __GE_RENDER_COMPONENT_H__