From 2f9c468eee85c53ade4791df7c1cd3e2512bee43 Mon Sep 17 00:00:00 2001 From: Menase Teshale Date: Thu, 27 Aug 2026 01:30:08 +0300 Subject: Fonts working - No scaling - No rotation --- src/font.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'src/font.c') diff --git a/src/font.c b/src/font.c index 85f7498..17c62ad 100644 --- a/src/font.c +++ b/src/font.c @@ -168,6 +168,7 @@ bool load_sprite_font(SDL_Renderer* renderer, const char* filename, sprite_font* else if (strncmp(line, "char", 4) == 0) { font_char new_font_char; + new_font_char.active = true; int val; @@ -289,6 +290,7 @@ bool load_sprite_font(SDL_Renderer* renderer, const char* filename, sprite_font* font_char* characters_arranged = malloc((largest_char-smallest_char+1) * sizeof(font_char)); + memset(characters_arranged, 0, (largest_char-smallest_char+1) * sizeof(font_char)); if (characters_arranged == NULL) { SDL_Log("Failed to allocate space while loading font %s, error %s", @@ -312,7 +314,8 @@ bool load_sprite_font(SDL_Renderer* renderer, const char* filename, sprite_font* *font = (sprite_font) { .smallest_character = smallest_char, .largest_character = largest_char, - .characters = characters_arranged + .characters = characters_arranged, + .spritesheet = font_spritesheet }; strncpy(font->name, font_name, FONT_NAME_SIZE-1); @@ -322,3 +325,36 @@ bool load_sprite_font(SDL_Renderer* renderer, const char* filename, sprite_font* fclose(f); return true; } + +void draw_text_with_spritefont +( + SDL_Renderer* renderer, + sprite_font* font, + const unsigned char* text, + float x_position, float y_position +) { + while (*text) { + const font_char* fc = &font->characters[*text-font->smallest_character]; + if (!fc->active) { + text++; + continue; + } + + SDL_RenderTexture(renderer, + font->spritesheet, + &(SDL_FRect){ + .x = fc->x, + .y = fc->y, + .w = fc->width, + .h = fc->height + }, + &(SDL_FRect){ + .x = x_position + fc->x_offset, + .y = y_position + fc->y_offset, + .w = fc->width, + .h = fc->height + }); + x_position += fc->x_advance; + text++; + } +} -- cgit v1.2.3