Accueil > > > TEXT SDL
TEXT SDL
Information sur la source
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
- 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);
- }
- }
-
- ...
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");
Historique
- 13 mars 2006 17:38:52 :
- complement d'information
Sources du même auteur
SERVEUR METEO, IHM EVOLUEE (VC6, CONSOLE WINDOWS, SOCK, THRE...SERVEUR METEO, IHM EVOLUEE (VC6, CONSOLE WINDOWS, SOCK, THREAD)Ceci est notre dernier projet de formation, on doit crée 4 applications, en 8*8h (64h pour faire ça).
Le serveur est a moitier fait, il manque la p...
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
prob avec SDL [ par kuroro ]
alors voila , j'ai mis tous les fichiers .h dans le repertoire include ( de dev-c++ 4 ) et les fichier .a dans le repertoire lib , mais quand je veux
SDL et GLUT [ par Samaths ]
Bonjour à tous!J'ai un petit problème: Je voudrais utiliser OpenGL et la SDL en même temps. Je sais que c'est possible, j'ai trouvé plein de tutoriaux
keybd_event [ par beb_aij_hi ]
salut.j'essaye de simuler une frappe clavier avec keybd_event et il y a un truck qui m'echappe.voici un bout de code:#include <windows.h>#includ
mettre en pause SDL_GetTicks [ par djipey ]
Bonjour, voila je code un pong en SDL. Il contient plusieurs boucles, dont une trés grosse qui se répéte si l'utilisatuer perd et qu'il demande à rejo
Message d'erreur avec SL [ par Maximi ]
Bonjour je débute avec C++ et SDL, je travaille avec VC++ 6.J'ai fait un tout petit programme et mon problème, est le suivant :je compile le code et c
Probleme avec la SDL [ par neo1012 ]
Bonjour, Je suis entrain de faire un jeu en SDL, dedans il y a un personage(poulet) qui est censé avancé quand on appuie sur les fleches directionnel
tetris en SDL [ par fahdovski ]
Bonjour, je code tetris en C avec la SDL voici mon problemevoid creerlachute(tab t){int i,j;for (i=0;i<li;i++) for(j=0;j<co;j++){ if (t[
Installation de la SDL avec MVS standard 2005 [ par Hatchepsut ]
Bonjour. Comme l'indique le titre, je n'arrive pas à installer la SDL. J'ai lu, relu, et re-relu tous les tutoriaux de multiples forums, rien n'y fai
Probleme, creation d'une class traitant sur SDL [ par kickbar ]
Bonjour a tous, voila j'ai un petit souci, dans l'un de mes methodes, je charge la fenetre principale, je colle une image, et la mystere, a l'executio
{SDL} Copier et redimensionner une SDL_Surface [ par ndubien ]
Bonjour,Mon problème:SDL_Surface *img1 = SDL_LoadBMP( "image.bmp" );SDL_Surface *img2;Je souhaiterais que i
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|