La bibliothèque graphics devrait fonctionner sur tout système Unix (Linux, FreeBSD, OpenBSD, MacOS X...)
Il faut lier le programme avec la bibliothèque graphics ainsi
que la bibliothèque 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épertoire contenant le fichier graphics.h
, et
/repertoire/de/la/libgraphics/include
par le répertoire
contenant le fichier graphics.a
. Par exemple, avec
l'installation par défaut :
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épertoire Libgraphics
et tapez
make
. Si cela échoue, vous devrez probablement installer
les bibliothèques X Window ou changer l'emplacement où le
Makefile
les cherche. Si make
réussit, tapez
make test
puis ./test
pour vérifier que la
bibliothèque graphics fonctionne.
Tapez make install
pour installer la bibliothèque sous
/usr/local
. Vous pouvez également éditer les lignes
INCLUDE=
... et LIB=
...
pour choisir un autre lieu d'installation.
void gr_open_graph(char* arg);
Ouvre une fenêtre graphique. L'argument indique l'emplacement et la
taille de la fenêtre. On peut utiliser la chaîne vide pour
arg
. Si on le souhaite, arg
permet de
spécifier la taille et la position de la fenêtre, par exemple pour une
fenêtre de largeur 400 et de hauteur 200 : opengraph("
400x200")
(noter l'espace initiale !).
void gr_close_graph(void);
Ferme la fenêtre graphique. En l'absence d'appel à cette fonction, la
fenêtre graphique disparaît quand le programme se termine.
void gr_clear_graph(void);
Efface tout le contenu de la fenêtre graphique.
int gr_size_x(void);
int gr_size_y(void);
Renvoient respectivement la largeur et la hauteur de la fenêtre.
void gr_plot(int x, int y);
Affiche un point aux coordonnées (x, y).
void gr_moveto(int x, int y);
Déplace la position courante vers les coordonnées (x, y). Cette
fonction n'a pas d'effet direct sur l'affichage.
void gr_current_point(int *x, int *y);
Place les coordonnées 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ées (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és).
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ègle 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ères qui sera utilisée pour dessiner du texte.
void gr_draw_char(char chr);
Dessine le caractère chr
à la position courante.
void gr_draw_string(char *str);
Dessine la chaîne de caractères 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 événements spécifiés se produise. Elle renvoie des
informations sur l'état 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éclic ou un déplacement de souris */ gr_wait_event(KEY_PRESSED); /* attend une frappe de touche */ char * status; status = gr_wait_event(POLL); /* lit l'état du clavier et de la souris sans attendre */
void gr_mouse_pos(int *x, int *y);
Place aux adresses données 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ée.
char gr_read_key(void);
Attend une frappe de touche et renvoie la touche enfoncée.