// // Created by bruno on 1.2.2025. // #include "font.h" BitmapFont prepText(SDL_Renderer *renderer, unsigned char pxSize, const char *file, uint8_t r, uint8_t g, uint8_t b, uint8_t a) { const unsigned char ptSize = floor(pxSize * 0.75); TTF_Font *gFont = TTF_OpenFont(file, ptSize); BitmapFont out; out.size = pxSize; out.color = (SDL_Color) {r, g, b, a}; unsigned char i = 0; do { char tmpOut[2] = {i, 0}; out.surface[i] = TTF_RenderText_Solid(gFont, tmpOut, out.color); SDL_Rect dstRect; dstRect.x = 0; dstRect.y = 0; dstRect.w = pxSize; dstRect.h = pxSize; out.texture[i] = SDL_CreateTextureFromSurface(renderer, out.surface[i]); i++; } while (i < 255); TTF_CloseFont(gFont); return out; } void renderText(SDL_Renderer *renderer, BitmapFont font, char *string, uint16_t x, uint16_t y) { SDL_Rect charRect; charRect.x = 0; charRect.y = 0; charRect.w = font.size; charRect.h = font.size; SDL_Rect outRect = charRect; outRect.x = x; outRect.y = y; while (*string) { if (*string == '\n') { outRect.x = x; outRect.y += charRect.h + 4; string++; continue; } SDL_RenderCopy(renderer, font.texture[*string], &charRect, &outRect); outRect.x += charRect.w + 1; string++; } }