/* bibliothèque graphique de base P. TRAU juin 2002 */
/* contient les fonctions minimales, dépendantes du matériel et du compilateur */

/* void g_init(int *xmin,int *xmax,int *ymin,int *ymax) : initialise le mode
 *    graphique (plein écran), donne les limites de l'écran (0,639,0,480 par ex)
 * void g_fin(void) : quitte le mode graphique (à ne pas oublier)!
 * void g_couleur(int c) : definit la couleur des dessins à venir  (0 noir)
 * void g_point(int x,int y) : allume le pixel x,y de l'écran
 * int g_test_point(int x,int y) : donne la couleur du pixel x,y (si la
 *    couleur du fond est 0, dit s'il est allumé (!=0) ou éteind (0)
 * void g_ligne(int xd,int yd,int xf,int yf) : trace une ligne
 * void g_rectangle(int xd,int yd,int xf,int yf,int couleur) on donne coininf gauche,
 *     coin sup droit, et couleur intérieure. Le bord est dans la couleur g_couleur
 * void g_ecrit(int x, int y, char * texte)  écrit le texte
 */

#include <graphics.h>

void g_init(int *xmin,int *xmax,int *ymin,int *ymax)
 {
  int gdriver = DETECT, gmode, errorcode;
  initgraph(&gdriver, &gmode, "");
  errorcode = graphresult();
  if (errorcode != grOk)printf("g_erreur: %s\n", grapherrormsg(errorcode));
  setcolor(getmaxcolor());
  *xmin=0;
  *ymin=0;
  *xmax=getmaxx();
  *ymax=getmaxy();
 }

void g_fin(void)
 {closegraph();}

void g_point(int x,int y)
 {putpixel(x,y,getcolor());}

int g_test_point(int x,int y)
 {return(getpixel(x,y));}

void g_couleur(int c)
 {setcolor(c);}

void g_ligne(int xd,int yd,int xf,int yf)
 {line(xd,yd,xf,yf);}

void g_rectangle(int xd,int yd,int xf,int yf,int couleur)
{
 setfillstyle(1,couleur);
 bar(xd,yd,xf,yf);
 rectangle(xd,yd,xf,yf);
}

void g_ecrit(int x, int y, char * texte)
 {outtextxy(x,y,texte);}

/**********************************************************
 * ci-dessous une fonction de test.
 * Pour l'apeller, créez un fichier .c contenant :
        #include<stdio.h>
        #include<conio.h>
        #include "graph.c"
        static int xmin,xmax,ymin,ymax;
        int X(float p) //si p entre 0 et 100, rend X entre xmin et xmax
         {return((int)((p/100)*(xmax-xmin)+xmin));}
        int Y(float p)
         {return((int)((p/100)*(-ymax+ymin)+ymax));}

        void main (void)
         {
           char*texte;
           int i;
           g_init(&xmin,&xmax,&ymin,&ymax);
           g_couleur(14);
           g_ligne(X(5),Y(10),X(95),Y(10));
           g_ligne(X(10),Y(5),X(10),Y(95));

           for(i=15;i<90;i=i+5)
           {
            g_rectangle(X(i),Y(10),X(i+5),Y(70+(i%3)*5),i+1);
            sprintf(texte,"%d",i);
            g_ecrit(X(i+2),Y(5),texte);
           }
           getch();
           g_fin();
         }
 * sauvez le dans votre répertoire, copiez dans ce même répertoire
 * le fichier egavga.bgi qui doit trainer quelquepart dans votre
 * disque dur, compilez en Turbo C  avec l'option "librairies
 * graphiques" et ça doit marcher.
 ************************************************************/




