updated font asset handling
parent
57c507bb00
commit
a5d9d5ec96
|
@ -53,10 +53,13 @@ TTF_Font* load_font(const char* file, int size) {
|
|||
.type = RESOURCETYPE_FONT,
|
||||
.hash = hashstr(file),
|
||||
.name = calloc(len+1, sizeof(char)),
|
||||
.font = TTF_OpenFont(file, size)
|
||||
.font = {
|
||||
.size = size,
|
||||
.font = TTF_OpenFont(file, size)
|
||||
}
|
||||
};
|
||||
strcpy(res.name, file);
|
||||
return insert_asset(&res)->font;
|
||||
return insert_asset(&res)->font.font;
|
||||
}
|
||||
|
||||
SDL_Texture* get_texture(const char* file) {
|
||||
|
@ -68,6 +71,19 @@ SDL_Texture* get_texture(const char* file) {
|
|||
}
|
||||
}
|
||||
|
||||
TTF_Font* get_font(const char *file, int size) {
|
||||
uint32_t hash = hashstr(file);
|
||||
for(resource_t* res = g_assets; res != g_assets_endptr; ++res) {
|
||||
if(res->hash == hash
|
||||
&& strcmp(res->name, file) == 0
|
||||
&& res->type == RESOURCETYPE_FONT
|
||||
&& res->font.size == size) {
|
||||
return res->font.font;
|
||||
}
|
||||
}
|
||||
return load_font(file, size);
|
||||
}
|
||||
|
||||
resource_t* get_asset(const char* file) {
|
||||
uint32_t hash = hashstr(file);
|
||||
for(resource_t* res = g_assets; res != g_assets_endptr; ++res) {
|
||||
|
@ -88,7 +104,7 @@ void _delete_referenced_asset(resource_t* res) {
|
|||
SDL_DestroyTexture(res->texture);
|
||||
break;
|
||||
case RESOURCETYPE_FONT:
|
||||
TTF_CloseFont(res->font);
|
||||
TTF_CloseFont(res->font.font);
|
||||
break;
|
||||
case RESOURCETYPE_ARBITRARY:
|
||||
res->arbitrary_type.deleter(res->arbitrary_type.memory);
|
||||
|
|
|
@ -25,7 +25,10 @@ typedef struct resource_t {
|
|||
char* name;
|
||||
union {
|
||||
SDL_Texture* texture;
|
||||
TTF_Font* font;
|
||||
struct {
|
||||
int size;
|
||||
TTF_Font* font;
|
||||
} font;
|
||||
struct {
|
||||
void* memory;
|
||||
deleter_t deleter;
|
||||
|
|
Loading…
Reference in New Issue