summaryrefslogtreecommitdiff
path: root/src/font.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/font.c')
-rwxr-xr-xsrc/font.c99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/font.c b/src/font.c
new file mode 100755
index 0000000..a9fb817
--- /dev/null
+++ b/src/font.c
@@ -0,0 +1,99 @@
+
+#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;
+ }
+
+ 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;
+}