summaryrefslogtreecommitdiff
path: root/src/font.c
blob: 0f1c2007844e2be7fda6e48aeba451cd0f622894 (plain)
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
100
101

#include "main.h" 
#include "interface.h" 
#include "string_length.h"
#include "font.h"
#include "path.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;
}