Commit 82175b90d322151fec75c03cdb68e0d3b0f97071

Authored by mahmoudrabia
1 parent f1721432

.

Showing 1 changed file with 0 additions and 239 deletions   Show diff stats
libgraph.c deleted
@@ -1,239 +0,0 @@ @@ -1,239 +0,0 @@
1 -/**** Bibliotheque graphique ****/  
2 -  
3 -/** Fichiers d'inclusion **/  
4 -  
5 -#include <SDL/SDL.h>  
6 -#include <SDL/SDL_ttf.h>  
7 -#include "libgraph.h"  
8 -  
9 -/** Types **/  
10 -  
11 -typedef struct  
12 -{  
13 - int r, v, b;  
14 -} couleur;  
15 -  
16 -/** Constantes **/  
17 -  
18 -#define BITS_PAR_PIXEL 32  
19 -#define TAILLE_POLICE 20  
20 -  
21 -static const couleur couleurs[] = { { 255, 255, 255 }, { 0, 0, 0 }, { 255, 0, 0 },  
22 - { 0, 255, 0 }, { 0, 0, 255 }, { 255, 105, 180 },  
23 - { 150, 150, 150 }, { -1, -1, -1 } };  
24 -  
25 -static const char policeDefaut[]="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";  
26 -  
27 -/** Variables globales **/  
28 -  
29 -static SDL_Surface *surface;  
30 -TTF_Font* police;  
31 -  
32 -/** Fonctions **/  
33 -  
34 -void choisirPolice(const char *chemin, int taille){  
35 - police=TTF_OpenFont(chemin, taille);  
36 -}  
37 -  
38 -void initialiserTexte() {  
39 - TTF_Init();  
40 - choisirPolice(policeDefaut, TAILLE_POLICE);  
41 -}  
42 -  
43 -/* Initialisation de la surface dessinable */  
44 -unsigned char creerSurface (int largeur, int hauteur, char *titre)  
45 -{  
46 - SDL_Init (SDL_INIT_VIDEO);  
47 - SDL_WM_SetCaption (titre, titre);  
48 - surface = SDL_SetVideoMode (largeur, hauteur, BITS_PAR_PIXEL, SDL_DOUBLEBUF);  
49 - initialiserTexte();  
50 -  
51 - return (surface != NULL && police != NULL);  
52 -}  
53 -  
54 -/* Fermeture de la surface dessinable */  
55 -  
56 -void fermerSurface (void)  
57 -{  
58 - if (surface != NULL) SDL_FreeSurface (surface);  
59 - if (police != NULL) TTF_CloseFont(police);  
60 - TTF_Quit();  
61 - SDL_Quit ();  
62 -}  
63 -  
64 -/* Creation d'une couleur */  
65 -  
66 -static int creerCouleur (int ncouleur)  
67 -{  
68 - couleur c = couleurs[ncouleur];  
69 - return SDL_MapRGB (surface->format, c.r, c.v, c.b);  
70 -}  
71 -  
72 -/* Dessin d'un rectangle plein */  
73 -  
74 -void rectanglePlein (int x, int y, int l, int h, int c)  
75 -{  
76 - SDL_Rect rectangle = { x, y, l, h };  
77 - SDL_FillRect (surface, &rectangle, creerCouleur (c));  
78 - // SDL_Flip(surface);  
79 -}  
80 -  
81 -/* Manipulation de lutins */  
82 -  
83 -static SDL_Surface *lutins[MAX_LUTINS];  
84 -static int lutins_nb = 0;  
85 -  
86 -int lutinTexte(char* texte, int couleurTexte) {  
87 - couleur c=couleurs[couleurTexte];  
88 - SDL_Color couleur={c.r, c.v, c.b};  
89 - SDL_Surface* lutin=TTF_RenderText_Solid(police, texte, couleur);  
90 - if (lutin != NULL)  
91 - {  
92 - lutins[lutins_nb++] = lutin;  
93 - return lutins_nb - 1;  
94 - }  
95 - return -1;  
96 -}  
97 -  
98 -static void configurerLutin (SDL_Surface *lutin, int ncouleur)  
99 -{  
100 - couleur c = couleurs[ncouleur];  
101 - int fond = SDL_MapRGB (lutin->format, c.r, c.v, c.b);  
102 - SDL_SetColorKey (lutin, SDL_SRCCOLORKEY | SDL_RLEACCEL, fond);  
103 -}  
104 -  
105 -int chargerLutin (char *fichier, int couleur)  
106 -{  
107 - if (lutins_nb >= MAX_LUTINS) return -2;  
108 - SDL_Surface *lutin = SDL_LoadBMP (fichier);  
109 - if (lutin != NULL)  
110 - {  
111 - lutins[lutins_nb++] = lutin;  
112 - if (couleur >= 0) configurerLutin (lutin, couleur);  
113 - return lutins_nb - 1;  
114 - }  
115 - return -1;  
116 -}  
117 -  
118 -void afficherLutin (int lutin, int x, int y)  
119 -{  
120 - SDL_Rect position;  
121 - position.x = x;  
122 - position.y = y;  
123 - SDL_BlitSurface (lutins[lutin], NULL, surface, &position);  
124 -}  
125 -  
126 -int creerLutin (int x, int y, int largeur, int hauteur, int couleur)  
127 -{  
128 - if (lutins_nb >= MAX_LUTINS) return -2;  
129 - int rmask, gmask, bmask, amask;  
130 -#if SDL_BYTEORDER == SDL_BIG_ENDIAN  
131 - rmask = 0xff000000;  
132 - gmask = 0x00ff0000;  
133 - bmask = 0x0000ff00;  
134 - amask = 0x000000ff;  
135 -#else  
136 - rmask = 0x000000ff;  
137 - gmask = 0x0000ff00;  
138 - bmask = 0x00ff0000;  
139 - amask = 0xff000000;  
140 -#endif  
141 - if (couleur < 0) amask = 0x00000000;  
142 - SDL_Surface *lutin =  
143 - SDL_CreateRGBSurface (0, largeur, hauteur, BITS_PAR_PIXEL, rmask, gmask, bmask, amask);  
144 - SDL_Rect fenetre;  
145 - fenetre.x = x;  
146 - fenetre.y = y;  
147 - fenetre.h = hauteur;  
148 - fenetre.w = largeur;  
149 - SDL_BlitSurface (surface, &fenetre, lutin, NULL);  
150 - lutins[lutins_nb++] = lutin;  
151 - if (couleur >= 0) configurerLutin (lutin, couleur);  
152 - return lutins_nb - 1;  
153 -}  
154 -  
155 -void tailleLutin (int lutin, int *largeur, int *hauteur)  
156 -{  
157 - *largeur = lutins[lutin]->w;  
158 - *hauteur = lutins[lutin]->h;  
159 -}  
160 -  
161 -int sauverLutin (int lutin, char *nom) { return SDL_SaveBMP (lutins[lutin], nom); }  
162 -  
163 -/* Manipulation de copie de surface en BMP */  
164 -  
165 -int sauverSurface (char *fichier) { return SDL_SaveBMP (surface, fichier); }  
166 -  
167 -unsigned char chargerSurface (char *fichier)  
168 -{  
169 - SDL_Surface *image = SDL_LoadBMP (fichier);  
170 - if (image != NULL)  
171 - {  
172 - SDL_BlitSurface (image, NULL, surface, NULL);  
173 - SDL_Flip (surface);  
174 - }  
175 - return (image != NULL);  
176 -}  
177 -  
178 -void majSurface (void) { SDL_Flip (surface); }  
179 -  
180 -/* Trouver la couleur d'un pixel */  
181 -  
182 -int couleurPixel (int x, int y)  
183 -{  
184 - int bpp = surface->format->BytesPerPixel;  
185 - Uint32 *p = (Uint32 *)(surface->pixels + y * surface->pitch + x * bpp);  
186 - Uint8 r, v, b;  
187 - SDL_GetRGB (*p, surface->format, &r, &v, &b);  
188 - int i = 0;  
189 - while (1)  
190 - {  
191 - if (couleurs[i].r < 0) break;  
192 - if (r == couleurs[i].r && v == couleurs[i].v && b == couleurs[i].b) break;  
193 - i++;  
194 - }  
195 - if (couleurs[i].r < 0)  
196 - return -1;  
197 - else  
198 - return i;  
199 -}  
200 -  
201 -/* Fonction de traitement des événements */  
202 -  
203 -void lireEvenement (evenement *evt, char *touche, void **detail)  
204 -{  
205 - static SDL_keysym _detail;  
206 - SDL_Event event;  
207 - while (SDL_PollEvent (&event))  
208 - {  
209 - if (event.type == SDL_QUIT) *evt = quitter;  
210 - if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP)  
211 - {  
212 - *evt = (event.type == SDL_KEYDOWN) ? toucheBas : toucheHaut;  
213 - char *nom = SDL_GetKeyName (event.key.keysym.sym);  
214 - if (strlen (nom) == 1 && nom[0] >= 32 && nom[0] < 128)  
215 - *touche = nom[0];  
216 - else  
217 - *touche = 0;  
218 - if (detail != NULL)  
219 - {  
220 - _detail = event.key.keysym;  
221 - *detail = &_detail;  
222 - }  
223 - break;  
224 - }  
225 - }  
226 -}  
227 -  
228 -void attendreEvenement (void)  
229 -{  
230 - SDL_Event event;  
231 - while (SDL_WaitEvent (&event)) switch (event.type)  
232 - {  
233 - case SDL_QUIT:  
234 - exit (0);  
235 - case SDL_KEYDOWN:  
236 - case SDL_MOUSEBUTTONDOWN:  
237 - return;  
238 - }  
239 -}