diff options
| author | Menase Teshale <osome3717@gmail.com> | 2026-08-27 01:30:08 +0300 |
|---|---|---|
| committer | Menase Teshale <osome3717@gmail.com> | 2026-08-27 01:30:08 +0300 |
| commit | 2f9c468eee85c53ade4791df7c1cd3e2512bee43 (patch) | |
| tree | 954d04e5d7fb959b6650fb3298247738aca7eca0 /src/font.c | |
| parent | bf502b35ec7f470fbd251e8c51c1e60f22f60dbd (diff) | |
Fonts working
- No scaling
- No rotation
Diffstat (limited to 'src/font.c')
| -rw-r--r-- | src/font.c | 38 |
1 files changed, 37 insertions, 1 deletions
@@ -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++; + } +} |
