-
Notifications
You must be signed in to change notification settings - Fork 0
/
sdl-textbox.c
64 lines (51 loc) · 1.58 KB
/
sdl-textbox.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "sdl-textbox.h"
#include <SDL_ttf.h>
int
redraw_textbox(struct textbox *textbox, SDL_Surface *screen)
{
SDL_Surface *tmp;
SDL_Rect r;
int w, h;
SDL_Color c;
if (!textbox->font)
textbox->font = TTF_OpenFont("AMD.ttf", 24);
if (!textbox->font)
fprintf(stderr, "Couldn't load font: %s\n", TTF_GetError());
if (!textbox->label_font)
textbox->label_font = TTF_OpenFont("AMD.ttf", 24);
if (!textbox->label_font)
fprintf(stderr, "Couldn't load font: %s\n", TTF_GetError());
TTF_SizeText(textbox->label_font, textbox->label, &w, &h);
c.r = 0;
c.g = 0;
c.b = 255;
tmp = TTF_RenderText_Solid(textbox->label_font, textbox->label, c);
if (!tmp) {
fprintf(stderr, "Unable to render text: %s\n", TTF_GetError());
return 1;
}
r.w = tmp->w;
r.h = tmp->h;
r.x = textbox->x;
r.y = textbox->y;
SDL_BlitSurface(tmp, NULL, screen, &r);
SDL_FreeSurface(tmp);
if (textbox->string && strlen(textbox->string)) {
TTF_SizeText(textbox->font, textbox->string, &w, &h);
c.r = 255;
c.g = 255;
c.b = 255;
tmp = TTF_RenderText_Solid(textbox->font, textbox->string, c);
if (!tmp) {
fprintf(stderr, "Unable to render text: %s\n", TTF_GetError());
return 1;
}
r.x += r.w + TEXTBOX_LABEL_PADDING; /* Reuse r.w from previous render */
r.y = textbox->y;
r.w = tmp->w;
r.h = tmp->h;
SDL_BlitSurface(tmp, NULL, screen, &r);
SDL_FreeSurface(tmp);
}
return 0;
}