/****** Contained are all functions, etc. for creating, loading, and freeing Font structs. ******/ #include "interface.h" #include "font.h" struct Font *newFont() { struct Font *font = malloc(sizeof(struct Font)); font->width = 0; font->height = 0; font->s_width = 0; font->s_height = 0; font->scale_x = 1.0f; font->scale_y = 1.0f; font->surface = NULL; font->s_surface = NULL; font->texture = 0; return font; } void loadFontFromMemory(struct Font *font, unsigned char *memory, unsigned int length, int width, int height) { if (length <= 0) return; font->width = width; font->height = height; font->surface = IMG_Load_RW(SDL_RWFromMem(memory, length), 1); setFontScale(font, 1.0f, 1.0f); } void setFontScale(struct Font *font, float scale_x, float scale_y) { font->scale_x = scale_x; font->scale_y = scale_y; font->s_width = font->width * scale_x; font->s_height = font->height * scale_y; if (font->s_surface != NULL) SDL_FreeSurface(font->s_surface); font->s_surface = SDL_ScaleSurface(font->surface, scale_x, scale_y); } void freeFont(struct Font *font) { if (font->surface != NULL) SDL_FreeSurface(font->surface); if (font->s_surface != NULL) SDL_FreeSurface(font->s_surface); free(font); }