Programmation avec la SDL/Afficher du texte

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche
Programmation avec la SDL
Sommaire
L' affichage vidéo
L'essentiel
Approfondissement
La gestion des évènements
Annexes
Modifier ce modèle

Dans ce chapitre, nous allons étudier la dernière fonctionnalité dont nous avons besoin pour compléter cette partie sur l'affichage : l'affichage du texte. Ceci est notamment très utile pour créer des menus, des boîtes de dialogue ou même pour simplement afficher le scénario d'un jeu. Cependant, la SDL seule ne gère pas l'affichage de texte. Nous allons donc avoir besoin d'une autre bibliothèque tierce : SDL_ttf.

Installation de SDL_ttf[modifier | modifier le wikicode]

Linux (code::blocks)[modifier | modifier le wikicode]

L'installation se fait de la même manière que SDL_Image. Commencez par installer à l'aide du gestionnaire les bibliothèques suivantes :

libsdl-ttf2.0-0
libsdl-ttf2.0-dev

Ensuite, copiez SDL_ttf.h dans le dossier

/usr/local/include/SDL2

Pour cela, il vous suffit de taper

sudo cp /usr/include/SDL/SDL_ttf.h /usr/local/include/SDL2/

Enfin, dans Code::Blocks, allez dans

Project-> Build options... ->Linker settings 

puis ajoutez la ligne -lSDL2_ttf dans "Other linker options". L'installation est alors terminée.

Initialisation de SDL_ttf[modifier | modifier le wikicode]

Tout d'abord, il nous faut inclure la bibliothèque :

#include "SDL2/SDL_ttf.h"

On initialise ensuite SDL_ttf avec la fonction TTF_Init qui ne prend aucun paramètre en argument :

if(TTF_Init()==-1) 
{
    printf("TTF_Init: %s\n", TTF_GetError());
    exit(2);
}

Vous noterez au passage qu'avec SDL_ttf, la gestion des erreurs n'est pas la même qu'avec la SDL 2.0 : on utilise TTF_GetError.

Enfin, nous devons fermer SDL_ttf une fois que l'on en a plus besoin :

TTF_Quit()

Importer une police de caractère[modifier | modifier le wikicode]

Trouver une police de caractère[modifier | modifier le wikicode]

Pour importer une police de caractère, il faut que celle-ci se trouve dans votre projet. SDL_ttf ne gère que les polices au format Truetype (.ttf). Ainsi, assurez vous, lorsque vous utilisez une police, qu'elle soit bien au format .ttf. Il est conseillé pour cela de créer un dossier Fonts dans votre projet dans lequel vous mettrez toutes les polices sinon, vous vous ferez vite envahir de fichiers en tout genre. Seulement, pour remplir ce dossier, il nous faut savoir où trouver des polices de caractère.

  • Sur votre ordinateur : vous avez probablement de nombreuses polices de caractère installées sur votre ordinateur. Pour ceux qui sont sous Linux, elles se trouvent dans
/usr/share/fonts/truetype

Vous pouvez également en trouver (mais il se peut que le dossier soit vide) dans

/usr/local/share/fonts/

Pour ceux qui sont sous Windows, vous trouverez les polices de votre ordinateur dans

C:\Windows\Fonts
  • Sur internet : Si vous souhaitez coder un programme qui dépasse votre usage personnel, utilisez des polices libres. Vous pourrez en trouver sur les sites suivants (il y en a beaucoup d'autres) :

Il existe également de nombreux sites proposant des polices de caractères à usage uniquement personnel tels que Dafont.

Importer la police avec SDL_ttf[modifier | modifier le wikicode]

Pour charger une police avec SDL_ttf, on utilise la fonction TTF_OpenFont qui prend en paramètre le chemin vers la police de caractère que l'on souhaite importer ainsi que la taille que l'on veut utiliser. Ainsi, en supposant que vous avez téléchargé la police de caractère Vera et que vous avez placé le dossier Vera dans votre dossier Fonts, vous chargerez vera.ttf ainsi :

TTF_Font* vera = TTF_OpenFont("Fonts/Vera/Vera.ttf",16);

Enfin, pour libérer le pointeur vera lorsqu'on n'en a plus besoin, on écrit

TTF_CloseFont(vera);