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");
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.