refactor text stuff

main
Henri Vasserman 2024-12-30 13:38:15 +02:00
parent 052d1d9c84
commit 65a7b6dcb5
3 changed files with 14 additions and 16 deletions

19
font.c
View File

@ -2,17 +2,18 @@
#include <SDL3/SDL.h>
SDL_Texture *load_font(SDL_Renderer *renderer) {
SDL_Surface *s = SDL_LoadBMP_IO(SDL_IOFromConstMem(font_data, font_data_len), true);
SDL_SetSurfaceColorKey(s, true, SDL_MapSurfaceRGB(s, 255, 0, 255));
SDL_Texture *font_texture = SDL_CreateTextureFromSurface(renderer, s);
SDL_DestroySurface(s);
return font_texture;
}
static SDL_Texture *font = NULL;
void draw_text(SDL_Renderer *renderer, SDL_Texture *font,
void draw_text(SDL_Renderer *renderer,
char *text, size_t len, int x, int y, uint8_t r, uint8_t g, uint8_t b) {
if (font == NULL) return;
if (font == NULL) {
SDL_Surface *s = SDL_LoadBMP_IO(SDL_IOFromConstMem(font_data, font_data_len), true);
SDL_SetSurfaceColorKey(s, true, SDL_MapSurfaceRGB(s, 255, 0, 255));
font = SDL_CreateTextureFromSurface(renderer, s);
SDL_DestroySurface(s);
}
SDL_SetTextureColorMod(font, r, g, b);
SDL_FRect src = { .w = font_w, .h = font_h },
dst = { .x = x, .y = y, .w = font_w, .h = font_h };

3
font.h
View File

@ -4,6 +4,5 @@
#define RC(r, c) (c)*font_w, (r)*font_h
SDL_Texture *load_font(SDL_Renderer *renderer);
void draw_text(SDL_Renderer *renderer, SDL_Texture *font,
void draw_text(SDL_Renderer *renderer,
char *text, size_t len, int x, int y, uint8_t r, uint8_t g, uint8_t b);

View File

@ -27,8 +27,6 @@ int main() {
SDL_Renderer *rend = SDL_CreateRenderer(window, NULL);
SDL_Texture *font = load_font(rend);
Field f;
Field_init(&f, rend, w, h);
@ -79,18 +77,18 @@ int main() {
0, 0, sizeof(buf)*font_w, 8*font_h
});
draw_text(rend, font, ACCEL_PLATFORM_STR, sizeof(ACCEL_PLATFORM_STR), RC(1,1), 255, 255, 255);
draw_text(rend, ACCEL_PLATFORM_STR, sizeof(ACCEL_PLATFORM_STR), RC(1,1), 255, 255, 255);
size_t len = snprintf(buf, sizeof(buf),
"off.x: %d, off.y: %d, \xEBT: %" SDL_PRIu64, f.offset.x, f.offset.y, delta);
draw_text(rend, font, buf, len, RC(2, 1), 255, 255, 255);
draw_text(rend, buf, len, RC(2, 1), 255, 255, 255);
char *q[] = {"TL", "TR", "BL", "BR"};
for (int i = 0; i < 4; i++) {
Picture *p = f.pics[i];
len = snprintf(buf, sizeof(buf), "%s| x1: %05d, x2: %05d, y1: %05d, y2: %05d, p: %p",
q[i], p->x1, p->x2, p->y1, p->y2, p);
draw_text(rend, font, buf, len, RC(3+i, 1), 255, 255, 255);
draw_text(rend, buf, len, RC(3+i, 1), 255, 255, 255);
}
SDL_RenderPresent(rend);