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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#include "main.h"
#include "interface.h"
#include "font.h"
static TTF_Font *g_font;
static int fontSize;
static bool_t isFontInit = FALSE;
bool_t isFontInicialized()
{
return isFontInit;
}
/*
* Inicialuzuje font.
* nacita font zo suboru *file o velkosti size
* Automaticky sa styk nastavy ako TTF_STYLE_BOLD
*/
void initFont(char *file,int size)
{
char str[STR_PATH_SIZE];
assert( file != NULL );
assert( size > 0 );
assert( isInterfaceInicialized() == TRUE );
sprintf(str, PATH_FONT "%s", file);
if( TTF_Init() == -1 )
{
fprintf(stderr, "%s\n", SDL_GetError());
return;
}
accessExistFile(str);
g_font = TTF_OpenFont(str, size);
TTF_SetFontStyle(g_font, TTF_STYLE_NORMAL);
fontSize = size;
printf("init font.. (%s)\n", file);
isFontInit = TRUE;
}
/*
* Zobrazi text *s na suradnicu x y s farbou RGB
*/
void drawFont(char *s, int x, int y, int r, int g, int b)
{
SDL_Rect dst_rect;
SDL_Surface *text;
SDL_Surface *p;
SDL_Color farba_pisma = {r, g, b, 0};
assert( s != NULL );
p = getSDL_Screen();
text = TTF_RenderUTF8_Blended(g_font, s, farba_pisma);
dst_rect.x = x;
dst_rect.y = y;
SDL_BlitSurface(text, NULL, p, &dst_rect);
SDL_FreeSurface(text);
}
/*
* Vrati velkost daneho fontu.
*/
int getFontSize()
{
return fontSize;
}
void getTextSize(char *s, int *w, int *h)
{
assert( s != NULL );
assert( w != NULL );
assert( h != NULL );
TTF_SizeUTF8(g_font, s, w, h);
}
/*
* Uvolni font z pamete.
*/
void quitFont()
{
TTF_CloseFont(g_font);
TTF_Quit();
printf("quit font\n");
isFontInit = FALSE;
}
|