refactor text stuff
parent
052d1d9c84
commit
65a7b6dcb5
19
font.c
19
font.c
|
@ -2,17 +2,18 @@
|
||||||
|
|
||||||
#include <SDL3/SDL.h>
|
#include <SDL3/SDL.h>
|
||||||
|
|
||||||
SDL_Texture *load_font(SDL_Renderer *renderer) {
|
static SDL_Texture *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));
|
|
||||||
SDL_Texture *font_texture = SDL_CreateTextureFromSurface(renderer, s);
|
|
||||||
SDL_DestroySurface(s);
|
|
||||||
return font_texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
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) {
|
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_SetTextureColorMod(font, r, g, b);
|
||||||
SDL_FRect src = { .w = font_w, .h = font_h },
|
SDL_FRect src = { .w = font_w, .h = font_h },
|
||||||
dst = { .x = x, .y = y, .w = font_w, .h = font_h };
|
dst = { .x = x, .y = y, .w = font_w, .h = font_h };
|
||||||
|
|
3
font.h
3
font.h
|
@ -4,6 +4,5 @@
|
||||||
|
|
||||||
#define RC(r, c) (c)*font_w, (r)*font_h
|
#define RC(r, c) (c)*font_w, (r)*font_h
|
||||||
|
|
||||||
SDL_Texture *load_font(SDL_Renderer *renderer);
|
void draw_text(SDL_Renderer *renderer,
|
||||||
void draw_text(SDL_Renderer *renderer, SDL_Texture *font,
|
|
||||||
char *text, size_t len, int x, int y, uint8_t r, uint8_t g, uint8_t b);
|
char *text, size_t len, int x, int y, uint8_t r, uint8_t g, uint8_t b);
|
||||||
|
|
8
xormod.c
8
xormod.c
|
@ -27,8 +27,6 @@ int main() {
|
||||||
|
|
||||||
SDL_Renderer *rend = SDL_CreateRenderer(window, NULL);
|
SDL_Renderer *rend = SDL_CreateRenderer(window, NULL);
|
||||||
|
|
||||||
SDL_Texture *font = load_font(rend);
|
|
||||||
|
|
||||||
Field f;
|
Field f;
|
||||||
Field_init(&f, rend, w, h);
|
Field_init(&f, rend, w, h);
|
||||||
|
|
||||||
|
@ -79,18 +77,18 @@ int main() {
|
||||||
0, 0, sizeof(buf)*font_w, 8*font_h
|
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),
|
size_t len = snprintf(buf, sizeof(buf),
|
||||||
"off.x: %d, off.y: %d, \xEBT: %" SDL_PRIu64, f.offset.x, f.offset.y, delta);
|
"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"};
|
char *q[] = {"TL", "TR", "BL", "BR"};
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
Picture *p = f.pics[i];
|
Picture *p = f.pics[i];
|
||||||
len = snprintf(buf, sizeof(buf), "%s| x1: %05d, x2: %05d, y1: %05d, y2: %05d, p: %p",
|
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);
|
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);
|
SDL_RenderPresent(rend);
|
||||||
|
|
Loading…
Reference in New Issue