From 8db540e110c9fcbbc956acc83818f14d8bdd49ff Mon Sep 17 00:00:00 2001 From: Kris Lamoureux Date: Sun, 28 Oct 2012 15:01:33 -0700 Subject: [PATCH] Added SDL_ttf and welcome text --- README.md | 2 +- commonSDL.h | 10 +++++++++- images/ttf/CaviarDreams.ttf | Bin 0 -> 58864 bytes main.cpp | 34 ++++++++++++++++++++++++++++++++-- 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 images/ttf/CaviarDreams.ttf diff --git a/README.md b/README.md index 0f8d1e0..58fdfcc 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ I'm building this while learning from [Lazy Foo' Productions' SDL Tutorials](http://lazyfoo.net/SDL_tutorials/). ## About -Trololo is written in C++ with SDL 1.2.12 (32 bit) with the SDL extension library: SDL_image (1.2.12). +Trololo is written in C++ with SDL 1.2.15 (32 bit) with the SDL extension libraries: SDL_image (1.2.12) and SDL_tff (2.0.11). ## License This software is released under the GNU General Public License Version 3. Please read the LICENSE file to know your rights before continuing. diff --git a/commonSDL.h b/commonSDL.h index 0321ab3..d5807dc 100644 --- a/commonSDL.h +++ b/commonSDL.h @@ -1,6 +1,7 @@ // SDL + Extensions #include "SDL/SDL.h" #include "SDL/SDL_image.h" +#include "SDL/SDL_ttf.h" // Standard #include @@ -37,7 +38,14 @@ SDL_Surface *StartUp(const char *title, int x, int y) return NULL; } - SDL_WM_SetCaption(title, NULL ); + SDL_WM_SetCaption(title, NULL); + + //Initialize SDL_ttf + if(TTF_Init() == -1) + { + fprintf(stderr, "True Type Font initialization failed: %s", SDL_GetError()); + return NULL; + } // Success: return video surface return screen; diff --git a/images/ttf/CaviarDreams.ttf b/images/ttf/CaviarDreams.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4ba42792e21cb0527a68af7c3067abae405af0ae GIT binary patch literal 58864 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 literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index b651d26..b32dcd3 100644 --- a/main.cpp +++ b/main.cpp @@ -1,6 +1,7 @@ // SDL + Extensions #include "SDL/SDL.h" #include "SDL/SDL_image.h" +#include "SDL/SDL_ttf.h" // Common SDL functions for general processing. #include "commonSDL.h" @@ -13,6 +14,8 @@ SDL_Surface *screen = NULL; SDL_Surface *background = NULL; SDL_Surface *characters = NULL; +SDL_Surface *message = NULL; + // Image filenames const char *background_image = "stage1.bmp"; const char *characters_image = "characters.bmp"; @@ -55,10 +58,37 @@ int main(int argc, char* args[]) apply_image(0, 0, background, screen); // Blit troll image - apply_image(0, 0, characters, screen, &clip[0]); + apply_image(700, 40, characters, screen, &clip[0]); // Blit codfish image - apply_image(300, 300, characters, screen, &clip[1]); + apply_image(150, 300, characters, screen, &clip[1]); + + // Setup welcome text + SDL_Color whitecolor = { 255, 255, 255 }; + TTF_Font *font = TTF_OpenFont("CaviarDreams.ttf", 80); + const char* text = "Welcome to Trololo"; + + + if(!font) + { + fprintf(stderr, "TTF_OpenFont: %s\n", TTF_GetError()); + } + + /* + Checks if font or text is NULL due to the documentation: + NULL font into this function will cause a segfault. + NULL text into this function will result in undefined behavior. + */ + if(font != NULL && text != NULL) + message = TTF_RenderText_Solid(font, text, whitecolor); + else + fprintf(stderr, "TFF Render Text Solid Error: init error\n"); + + // Apply message + if(message != NULL) + apply_image(100, 200, message, screen); + else + fprintf(stderr, "TFF Render Text Solid Error: apply error\n"); if(screen != NULL) SDL_Flip(screen);