46 lines
1.2 KiB
C
46 lines
1.2 KiB
C
//
|
|
// 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) {
|
|
TTF_Font *gFont = TTF_OpenFont(file, pxSize);
|
|
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);
|
|
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++;
|
|
}
|
|
} |