Text sdl

Soyez le premier à donner votre avis sur cette source.

Vue 5 960 fois - Téléchargée 388 fois

Description

Ceci vous permet d'afficher du text dans une fenètre SDL.
La font est hardcoder en partie (carractère les plus courant), vous pouvez en rajoutez (et me les passer :p).

On peut choisir la taille, la couleur du text et du font (font qui peut être transpartant).

ça me rend bien des services, et c'est même pas lent.

Source / Exemple :


void	SDLText(SDL_Surface *pScreen, char *pText, rect rZone, float fSize, color cTop, color cBack)
{
	int		c, l, h, lm, hm, lp, hp;
	rect	Zone;

	SDLTextInit();

	lp = (int)(TEXT_WIDTH * fSize);
	hp = (int)(TEXT_HEIGHT * fSize);
	lm = (int)(rZone.l / lp);
	hm = (int)(rZone.h / hp);
	l = -1;
	h = 0;
	Zone.x = rZone.x;
	Zone.y = rZone.y;
	Zone.l = rZone.l;
	Zone.h = rZone.h;

	for(c = 0; pText[c]; c++)
	{
		if(((l + 1) <= lm) && (pText[c] != '\n'))
		{
			l++;
		}
		else
		{
			if(pText[c] == '\n')
				c++;

			if((h + 1) <= hm)
			{
				l = 0;
				h++;
			}
			else
				return;
		}

		Zone.x = rZone.x + l * lp;
		Zone.y = rZone.y + h * hp;
		SDLTextCarac(pScreen, pText[c], Zone.x, Zone.y, fSize, cTop, cBack);
	}
}

void	SDLTextCarac(SDL_Surface *pSpcreen, char cCar, int x, int y, float fSize, color cTop, color cBack)
{
	int  	px, py;

	for(py = 0; py < (TEXT_HEIGHT * fSize); py++)
	{
		for(px = 0; px < (TEXT_WIDTH * fSize); px++)
		{
			if(TableCar[cCar][(int)(py / fSize)][(int)(px / fSize)] == 49)
   			{
				SDLTextPoint(pSpcreen, x + px, y + py, cTop);
			}
			else
			{
				if((cBack.r != -1) && (cBack.g != -1) && (cBack.b != -1))
					SDLTextPoint(pSpcreen, x + px, y + py, cBack);
			}
		}
	}
}

void	SDLTextPoint(SDL_Surface *pScreen, int x, int y, color cColor)
{
	Uint16	*pPxl;

	if((x > 0) && (x < pScreen->w) && (y > 0) && (y < pScreen->h))
	{
		pPxl = (Uint16*)pScreen->pixels + ((pScreen->pitch / 2 * y) + x);

  • pPxl = SDL_MapRGB(pScreen->format, (Uint8)cColor.r, (Uint8)cColor.g, (Uint8)cColor.b);
} } ...

Conclusion :


Il y a des exemples, c'est tres facile a utilisé et modifié une font (des 0 et 1)
Les carractères sont en binaire, dans des grille 6*9 (du 5*7 étendu).

/* 'A' */
strcpy(TableCar[65][0], "001000");
strcpy(TableCar[65][1], "010100");
strcpy(TableCar[65][2], "100010");
strcpy(TableCar[65][3], "100010");
strcpy(TableCar[65][4], "111110");
strcpy(TableCar[65][5], "100010");
strcpy(TableCar[65][6], "100010");
strcpy(TableCar[65][7], "000000");
strcpy(TableCar[65][8], "000000");

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_psycho
Messages postés
232
Date d'inscription
samedi 11 mai 2002
Statut
Membre
Dernière intervention
27 octobre 2007
-
je prefere SDL_ttf :), mais bon, c interessant de voir ca comme ca, ca rapelle les modes dos...
cs_aerith
Messages postés
54
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
12 mars 2006
-
Hum, mon truc est plus bourin, les carractères sont en binaire, dans des grille 6*9 (du 5*7 étendu).
le_duche
Messages postés
159
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
26 février 2009
-
Interessant ca !
Je vais regarder ca tranquillement plus tard...

Tu peux aller jetter un oeil sur ce tuto:
http://perso.numericable.fr/~fvirtman/info/tuto/index.html
Chapitre 2.2 il y a de quoi récupérer toutes les polices de Windows

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.