Chapitre III : SDL_TTF
Date de publication : 01/05/2006 , Date de mise à jour : 01/05/2006
Par
Loka (autres articles)
III. SDL_TTF
III. SDL_TTF
SDL_TTF est une extension de SDL qui permet l'emploie des polices true type (*.ttf) et leur affichage.
Tout d'abord il vous faudra installer cette extension, il vous suffit pour cela de le télécharger
ici.
Si des demandes se font pour l'installation de cette extension (voir des autres extensions telles que sdl_image, sdl_net, etc...), je ferais un petit tutoriel afin de vous expliquez comment on fait sur les differents IDE.
Bien passons aux choses sérieuses.
SDL_TTF est assez simple d'utilisation, dans ce tutoriel, nous allons voir les bases d'utilisation de cette extension.
Voici le résultat de ce que nous allons chercher à obtenir :
Comme dans tout programme, il faut d'abord déclarer voire initialiser nos variables.
| Déclaration et initialisation |
SDL_Surface *background = NULL;
SDL_Surface *message = NULL;
SDL_Surface *screen = NULL;
SDL_Event event;
TTF_Font *font;
SDL_Color textColor = { 255, 255, 255 }; |
Nous avons donc comme avant nos surfaces background et screen ainsi que notre structure d'événement event.
Apparaît en plus une surface message qui sera la surface qui contiendra notre texte.
Il y a aussi de nouvelles données de type TTF_Font qui sera le font (police de caractère) qu'on va utiliser et SDL_Color qui sera la couleur du texte.
Dans ce cas là, le texte sera blanc.
Nous allons maintenant reprendre notre fonction init() afin d'initialiser SDL_TTF
| Initialisation |
bool init() {
if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) {
return false;
}
screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );
if( screen == NULL ) {
return false;
}
if( TTF_Init() == -1 ) {
return false;
}
SDL_WM_SetCaption( "TTF Test", NULL );
return true;
} |
SDL_TTF est initialisé en faisant appel à TTF_init().
TTF_init() retourne -1 quand il y a une erreur.
TTF_init() doit être appelé avant d'utiliser n'importe quelle fonction de SDL_TTF.
Nous allons maintenant voir ce que nous avons à changer dans notre fonction de chargement load_files() afin de charger la police de caractère que nous allons utiliser.
| load_files |
bool load_files() {
background = load_image( "background.png" );
font = TTF_OpenFont( "CaslonBold.ttf", 28 );
if( background == NULL ) {
return false;
}
if( font == NULL ) {
return false;
}
return true;
} |
Le premier argument de TTF_OpenFont est le nom du fichier *.ttf que nous avons besoin d'ouvrir, le second argument est la taille à laquelle vous souhaitez initialiser le Font quand vous l'ouvrez.
Quand il y a une erreur dans le chargement du Font, TTF_OpenFont() retourne NULL.
Après avoir initialisé SDL_TTF et ouvert le font dont on a besoin, il nous reste alors à le "poser" sur l'écran.
Pour cela, nous allons utiliser la façon la plus rapide de rendre le texte en utilisant TTF_RenderText_Solid().
| TTF_RenderText_Solid |
message = TTF_RenderText_Solid( font, "Test pour sdl_ttf", textColor );
if( message == NULL ) {
return 1;
}
apply_surface( 0, 0, background, screen );
apply_surface( 0, 200, message, screen );
if( SDL_Flip( screen ) == -1 ) {
return 1;
} |
TTF_RenderText_Solid() prend le font dans le premier argument, et crée une surface avec le texte du second argument avec la couleur du troisième argument.
TTF_RenderText_Solid() retourne NULL quand il y a une erreur qui s'est produite.
Il y a bien évidemment bien d'autres façons de mettre en place le texte, vous pouvez allez chercher ça dans la
documentation de SDL_TTF
Voilà, notre programme est maintenant censé afficher ce que nous souhaitons, il nous reste plus qu'à le quitter proprement.
| Netoyage |
void clean_up() {
SDL_FreeSurface( background );
SDL_FreeSurface( message );
TTF_CloseFont( font );
TTF_Quit();
SDL_Quit();
} |
Voici notre fonction clean_up() retravaillé afin de permettre le nettoyage de sdl_ttf.
Premièrement nous libérons les surfaces utilisées, donc la surface message générée aussi.
Nous fermons aussi le Font en utilisant TTF_CloseFont() et quittons SDL_TTF grâce à TTF_Quit().
Il nous reste plus qu'à quitter SDL comme d'habitude.


Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.