document original : http://para.inria.fr/~peskine/enseignement/iup-2002/graphics-doc.html
La biblioth�ue graphics devrait fonctionner sur tout syst�e Unix (Linux, FreeBSD, OpenBSD, MacOS X...)
Il faut lier le programme avec la biblioth�ue graphics ainsi
que la biblioth�ue X11. Cela donne quelque chose comme :
gcc -O -Wall -W -ansi -pedantic -I /usr/X11R6/include
-I /repertoire/de/la/libgraphics/include -c
programme-graphique.c
gcc -o programme-graphique
programme-graphique.o -L /usr/X11R6/lib -L
/repertoire/de/la/libgraphics -lgraphics -lX11
Remplacer /repertoire/de/la/libgraphics/include par le
r�ertoire contenant le fichier graphics.h, et
/repertoire/de/la/libgraphics/include par le r�ertoire
contenant le fichier graphics.a. Par exemple, avec
l'installation par d�aut :
gcc -O -Wall -W -ansi -pedantic -I /usr/X11R6/include
-I /usr/local/include -c programme-graphique.c
gcc -o programme-graphique programme-graphique.o -L
/usr/X11R6/lib -L /usr/local/lib -lgraphics -lX11
tar -xzf graphics.tar.gz.
Placez-vous dans le r�ertoire Libgraphics et tapez
make. Si cela �houe, vous devrez probablement installer
les biblioth�ues X Window ou changer l'emplacement o le
Makefile les cherche. Si make r�ssit, tapez
make test puis ./test pour v�ifier que la
biblioth�ue graphics fonctionne.
Tapez make install pour installer la biblioth�ue sous
/usr/local. Vous pouvez �alement �iter les lignes
INCLUDE=... et LIB=...
pour choisir un autre lieu d'installation.
void gr_open_graph(char* arg);
Ouvre une fen�re graphique. L'argument indique l'emplacement et la
taille de la fen�re. On peut utiliser la cha�e vide pour
arg. Si on le souhaite, arg permet de
sp�ifier la taille et la position de la fen�re, par exemple pour une
fen�re de largeur 400 et de hauteur 200 : opengraph("
400x200") (noter l'espace initiale !).
void gr_close_graph(void);
Ferme la fen�re graphique. En l'absence d'appel �cette fonction, la
fen�re graphique dispara� quand le programme se termine.
void gr_clear_graph(void);
Efface tout le contenu de la fen�re graphique.
int gr_size_x(void);
int gr_size_y(void);
Renvoient respectivement la largeur et la hauteur de la fen�re.
void gr_plot(int x, int y);
Affiche un point aux coordonn�s (x, y).
void gr_moveto(int x, int y);
D�lace la position courante vers les coordonn�s (x, y). Cette
fonction n'a pas d'effet direct sur l'affichage.
void gr_current_point(int *x, int *y);
Place les coordonn�s de la position courante �l'endroit point�par
x et y.
void gr_lineto(int x, int y);
Trace une ligne de la position courante aux coordonn�s (x, y). La
nouvelle position courante est (x, y).
void gr_draw_poly(int* array, int npoints);
Dessine un polygone de sommets (array[0],
array[1]), (array[2],
array[3]), ..., (array[2*npoints-1],
array[2*npoints]).
void gr_draw_circle(int x, int y, int r);
Dessine un cercle de centre (x, y) et de rayon r.
void gr_draw_ellispe(int x, int y, int rx, int ry);
Dessine une ellipse de centre (x, y), de rayon horizontal rx et de
rayon vertical ry.
void gr_draw_arc(int x, int y, int rx, int ry, int a1, int a2);
Dessine un arc d'ellipse de centre (x, y), de rayon horizontal rx et
de rayon vertical ry, allant de l'angle a1 �l'angle a2 (en degr�).
void gr_fill_rect(int x, int y, int w, int h);
Dessine un rectangle plein de sommet (x, y), de largeur w et de hauteur h.
void gr_fill_poly(int* array, int npoints);
Dessine un Polygone rempli.
void gr_fill_circle(int x, int y, int r);
void gr_fill_ellipse(int x, int y, int rx, int ry);
void gr_fill_arc(int x, int y, int rx, int ry, int a1, int a2);
Ces fonctions dessinent respectivement un cercle plein, une ellipse pleine, un secteur d'ellipse.
void gr_set_line_width(int width);
R�le la largeur du trait pour le dessin de lignes.
typedef unsigned long color; #define RGB(r,g,b) (((r) << 16) + ((g) << 8) + b) #define black 0x000000 #define white 0xFFFFFF #define red 0xFF0000 #define green 0x00FF00 #define blue 0x0000FF #define yellow 0xFFFF00 #define cyan 0x00FFFF #define magenta 0xFF00FF #define background white #define foreground black void gr_set_color(color c); color gr_get_color(int x, int y);Ces deux fonctions permettent respectivement de choisir la couleur pour les dessins futurs, et d'obtenir la couleur d'un point. Exemples :
gr_set_color(white); /* Dessine en blanc */ gr_set_color(yellow); /* Dessine en jaune */ gr_set_color(RGB(128,128,128)); /* Dessine en gris */
void gr_set_font(char *fontname);
Change la police de caract�es qui sera utilis� pour dessiner du texte.
void gr_draw_char(char chr);
Dessine le caract�e chr �la position courante.
void gr_draw_string(char *str);
Dessine la cha�e de caract�es str �partir de la
position courante.
void gr_text_size(char *str, int *w, int *h);
Calcule la largeur en pixels du texte str dans la police
courante.
struct status {
int mouse_x;
int mouse_y;
Bool button;
Bool key_pressed;
char key;
};
#define BUTTON_DOWN 0x00000001
#define BUTTON_UP 0x00000002
#define KEY_PRESSED 0x00000004
#define MOUSE_MOTION 0x00000008
#define POLL 0x00000010
struct status* gr_wait_event(int eventmask);
La fonction gr_wait_event suspend le programme jusqu'�ce
qu'un des ��ements sp�ifi� se produise. Elle renvoie des
informations sur l'�at du clavier et de la souris.
Exemples :
gr_wait_event(BUTTON_DOWN); /* attend un clic de souris */ gr_wait_event(BUTTON_DOWN | BUTTON_UP | MOUSE_MOTION); /* attend un clic, un d�lic ou un d�lacement de souris */ gr_wait_event(KEY_PRESSED); /* attend une frappe de touche */ char * status; status = gr_wait_event(POLL); /* lit l'�at du clavier et de la souris sans attendre */
void gr_mouse_pos(int *x, int *y);
Place aux adresses donn�s la position courante de la souris.
Bool gr_button_down(void);
Teste si au moins un bouton de la souris est enfonc�
Bool gr_key_pressed(void);
Teste si une touche est enfonc�.
char gr_read_key(void);
Attend une frappe de touche et renvoie la touche enfonc�.