# Impossible d'afficher du texte avec SDL_TTF



## tistou19 (26 Avril 2010)

Bien le bonjour,

A croire que nous empêche de développer sous mac , je rencontre un enième problème et cette fois avec la SDL_TTF. En effet, il m'est impossible d'afficher du texte. Pourtant XCode ne me signale aucune erreur à la compilation et j'ai bien pris le soin de mettre la police utilisé par le programme dans le dossier Debug et Release en fonction du lieu de compilation... 
 Dans le cas où quelqu'un est une idée  merci de me le faire savoir... Merci


----------



## Nyx0uf (26 Avril 2010)

Plus d'infos pour t'aider ça serait pas mal...

La dernière fois que j'ai utilisé SDL_ttf tout marchait très bien.


----------



## tistou19 (26 Avril 2010)

C'est la première fois que je développe avec SDL_TTF. Je suis actuellement un tuto, et j'ai recopié le code mot pour mot. De quel information as-tu besoin?


----------



## Nyx0uf (26 Avril 2010)

Bha un extrait du code qu'on puisse voir ce qui cloche.


----------



## tistou19 (26 Avril 2010)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#include "SDL.h"
#include "SDL_image.h"
#include "SDL_ttf.h"

int main(int argc, char *argv[])
{
	int continuer=1;
	SDL_Surface *ecran=NULL,*zozor=NULL;
	SDL_Surface *texte=NULL;
	SDL_Rect zozorPos;
	SDL_Color couleurBlanc={0,0,0};
	zozorPos.x=200;
	zozorPos.y=350;
	SDL_Event event;
	TTF_Font *police = NULL;
	SDL_Init(SDL_INIT_VIDEO);
	TTF_Init();

	ecran=SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
	zozor=SDL_LoadBMP("zozor.bmp");
	SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
	SDL_SetAlpha(zozor, SDL_SRCALPHA, 170);
	SDL_BlitSurface(zozor,NULL,ecran,&zozorPos);
	police=TTF_OpenFont("/Library/Fonts/Arial.ttf", 12);
	texte=TTF_RenderText_Solid(police, "Salut du con", couleurBlanc);
	SDL_Flip(ecran);
	while (continuer) {
		SDL_WaitEvent(&event);
		switch (event.type) {
			case SDL_KEYUP:
				continuer=0;
				break;
		}
	}

	SDL_FreeSurface(zozor);
	TTF_CloseFont(police);
	TTF_Quit();
	SDL_Quit();
	return EXIT_SUCCESS;
}
 Ceci est le code, c'est cour parce que c'est pour voir comment est censé fonctionner DSL_TTF.

---------- Nouveau message ajouté à 21h58 ---------- Le message précédent a été envoyé à 21h56 ----------

D'ailleurs, j'ai aussi et surtout utilisé cette ligne plutôt que celle posté précédemment :

police=TTF_OpenFont("Arial.ttf", 12);


----------



## Nyx0uf (26 Avril 2010)

Ca fonctionne très bien chez moi..

C'est quoi ton problème, le prog crash ? Si oui vérifie que

```
police != NULL
```

Il est possible que SDL_ttf tape pas dans le bon dossier et trouve pas la police, du coup ça crash en beauté.


----------



## tistou19 (26 Avril 2010)

Non, le programme ne crash pas... il se lance après une compilation sans erreur mais il ne m'affiche pas de texte...


----------



## Fingah (27 Avril 2010)

tu devrais jeter un coup d'oeil dans le gdb avec Xcode pour voir si il n'y a pas un pb d'init/alloc

par exemple comme Nyx0uf en testant
if (!police) après OpenFont
et meme
if (SDL_Init(SDL_INIT_VIDEO)==-1) pour voir si il n'y a pas d'erreur d'init

de plus loin d'être un expert il me semble que tu dois après le rendering updater la surface; càd SDL_BlitSurface(texte, ....)

parce que là je vois pas comment cela pourrait afficher le texte

vois tu au moins qq chose à affichage ?


----------



## Nyx0uf (27 Avril 2010)

Voilà mon projet http://repo.whine.fr/xcode_sdl_ttf.zip

Les 3 frameworks sont placés dans /Library/Frameworks


----------



## tistou19 (27 Avril 2010)

NyxOuf

Je viens de tester ton projet mais je comprends plus rien, je sais pas si il marche chez toi mais en tout cas chez moi, XCode, me dit "EXC_BAD_ACESS"...^^

Fingah

Explique qu'est-ce que le gdb en une ligne et qu'est-ce que je dois faire...

Merci


----------



## Nyx0uf (27 Avril 2010)

Bha t'affiches le debugger, menu Run -> Debugger (pomme + maj + Y)

Et tu regardes où ça plante.

T'as ajouté ça :


```
if (!police)
{
printf("police == NULL\n");
// On nettoie le tout
return -1;
}
```


----------



## Fingah (27 Avril 2010)

comme dit Nyx0uf tu dois mettre des "garde-fous" dans ton code donc tester chaque etape (avec des if pour police, texte, SDL_Init...) et afficher un texte explicite pour savoir ou ca plante ... enfin du debug classique quoi

si tu n'es pas au point sur le sujet commence par t'informer la dessus ... parce que la on est leger niveau details sur ton probleme


----------



## Nyx0uf (27 Avril 2010)

D'ailleurs je trouve assez aberrant qu'ils ne fassent pas ces tests sur le site du zéro, ça donne de mauvaises habitudes.


----------



## Fingah (27 Avril 2010)

je ne connais pas particulierement le site du zero (juste de nom en fait) mais oui je suis d'accord cela devrait faire partir des fondamentaux quand on commence la prog (surtout en C)


----------



## tistou19 (27 Avril 2010)

Je récapitule. Mon code ne beug pas. Je n'ai aucune erreur de compilation dans mon code, et au lancement il n'y aucun problème. Sauf que mon texte ne s'affiche pas...

Pour l'erreur, c'est une erreur dans le code du projet que NyxOuf m'a donné...

Je sais que tout cela vous parait sûrement très bizarre, mais je suis en IUT informatique, et je ne comprends vraiment pas d'où cela vient. J'ai d'ailleurs trouvé un forum en anglais qui relatait le même problème, mais sans réponse...

Et pour le DBG...debugger, je l'ai fait mais puisque ce n'est pas un problème de mon code... Je pense que mon erreur vient de ma machine...


----------



## Nyx0uf (27 Avril 2010)

tistou19 a dit:


> Je récapitule. Mon code ne beug pas. Je n'ai aucune erreur de compilation dans mon code, et au lancement il n'y aucun problème. Sauf que mon texte ne s'affiche pas...
> 
> Pour l'erreur, c'est une erreur dans le code du projet que NyxOuf m'a donné...
> 
> ...



Sur le projet que je t'ai passé j'essaie d'ouvrir la police Calibri, que j'ai joint avec, place la dans le même répertoire que l'executable (build/Debug).

Le debugger va te montrer à quel endroit dans le code l'erreur à eu lieu.


----------



## tistou19 (28 Avril 2010)

Ton projet a parfaitement fonctionner !!!!!! :mouais: après avoir mis calibri dans le dossier debug... normal...

Sa fait 4 jours que je me prends la tête sur SDL_TTF qui "ne marche pas", parce que j'ai oublié de Blitter la surface texte ^^........ Je crois que j'ai déjà fait des erreurs qui m'ont pris la tête mais celle là bat tous les records.... Un grand merci à vous, il m'aura fallu comparer mon code avec le projet transmit pour m'en rendre compte... ^^... Un grand merci à vous, mes sauveurs !!! 

Et désolé pour votre temps perdus sur un cas vraiment désespéré....:rateau: 

Merci


----------



## Fingah (28 Avril 2010)

mmm ca arrive

il me semble que j'avais souleve le pb dans un de mes posts

bon courage pour la suite


----------

