Bonjour,
J'ai presque finalisé une class Texte qui permet de simplifier les tâches courante d'écriture de texte en SDL.
Voila les grandes lignes de la class pour les curieux:
Variables privées:
Méthodes principales:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 char *texte; // Le texte TTF_Font *font; // La police d'écriture char *font_name; // Le nom de la police SDL_Color couleur; // La couleur int taille; // La taille SDL_Surface *surface; // Surface associée au texte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /* ... constructeurs / destructeur ... */ /* ... tous les modificateurs / accèsseurs nécessaires ... */ // Générer la surface SDL_Surface* generer_solid(); SDL_Surface* generer_shaded(SDL_Color bgcolor); SDL_Surface* generer_blended(); // Blitter la surface générée sur une surface void blitter(SDL_Surface* &ecran, int x, int y);
La class fonctionne correctement mis à part une méthode: set_font()
Comme vous avez pu le deviner, elle charge une nouvelle font:
Lorsque j'appelle cette fonction depuis mon constructeur avec this->set_font(font_name), l'ouverture avec TTF_OpenFont() échoue, tandis que quand je l'appelle en tant que méthode directement l'ouverture fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 // Modifie la font void Texte :: set_font(char *font_name) { if(font_name == NULL) { this->font == NULL; return; } cerr << "[DEBUG] set_font() - font_name = " << font_name << endl; this->font = TTF_OpenFont(font_name, this->taille); if(this->font == NULL) { cerr << "[DEBUG] set_font() - TTF_OpenFont() = NULL" << endl; return; } // Mise a jour du nom de la font if(this->font_name != NULL) delete[] this->font_name; this->font_name = new char[ strlen(font_name)+1 ]; strcpy(this->font_name, font_name); }
Quand je vais voir dans cerr.txt, je me rends compte que le paramètre font est bien égal à "fonts/arial.ttf" dans les deux cas (la font est bien à cet emplacement) mais malgré cela l'ouverture échoue uniquement si je suis dans le constructeur.
Note: dans les deux cas this->font vaut la même valeur.
Et donc je ne comprends pas du tout comment débugger ce problème.
Partager