retour présentation SVGALIB

source de tstvga1.c

/* test svgalib n°1 - tracés de base - Pat TRAU mai 02

  on peut ici passer en mode graphique, tracer points et droites, et quitter

pour compiler  - 2 solutions :
a) solution finale
  gcc src.c -O3 -o exec -lvga
  rendre root proriétaire de exec
  chmod u+s exec  (sous root)
  tout le monde peut l'exécuter (mais ne laisser w qu'à root !)
b) en cours de développement
  sous un user normal, travailler et compiler (comme avant)
  ouvrir une seconde fenêtre dans le même répertoire, su, et lancer
  le prog dans cette console ( ./exec )
*/

 #include <stdio.h>
 #include <stdlib.h>
 #include <vga.h>

int choix_mode(void)
{
 int m;
 m=vga_getdefaultmode();   //retourne la valeur de la variable d'environnement
                           // SVGALIB_DEFAULT_MODE, -1 si inconnue
 if(mode<0)  //ou alors mettez ici return 4;
 {
  printf("choisissez une définition qui ne plante pas votre carte graphique:\n");
  printf(" G320x200x16  1");
  printf(" G640x200x16  2");
  printf(" G640x350x16  3");
  printf(" G640x480x16  4");    //4 marche presque partout
  printf(" G320x200x256 5");
  printf(" G320x240x256 6");
  printf(" G320x400x256 7");
  printf(" G360x480x256 8");
  printf(" G640x480x2   9");
  printf(" G640x480x256 10");
  printf(" G800x600x256 11");
  printf(" G1024x768x256 12 ? ");
  scanf("%d",&m);
 }
 return m;
}

void tracecadre(void)
{
 int x,y,coul,i;
 x=vga_getxdim();  //récup résolution actuelle
 y=vga_getydim();
 // coul=vga_getcolors(); //récup nb de couleurs dans le mode actu
 coul=vga_white();     //récup n° de couleur du blanc dans le mode actu
 vga_drawline(0,0,x-1,0);
 vga_drawline(x-1,0,x-1,y-1);
 vga_drawline(x-1,y-1,0,y-1);
 vga_drawline(0,y-1,0,0);
}

 int main(void)
 {
    int i,mode;
    mode=choix_mode();
    vga_init();
//    vga_setmode(G320x200x256); //à l'IPST, 207 et pat, ok jusqu'à 12
    vga_setmode(mode);
    tracecadre();

    vga_setcolor(14);
/***********************
ces couleurs sont celles définies en VGA standard,
 0      - black.
 1      - blue.
 2      - green.
 3      - cyan.
 4      - red.
 5      - magenta.
 6      - brown.
 7      - grey.
 8      - dark grey (light black).
 9      - light blue.
 10     - light green.
 11     - light cyan.
 12     - light red.
 13     - light magenta.
 14     - yellow (light brown).
 15     - white (light grey).

 ******************************/


    for(i=0;i<vga_getydim();i++) vga_drawpixel(i,i); //0,0=coin sup gauche

    fprintf(stderr,"appuyez une touche pour quitter"); //on ne peut pas écrire dans le graphique mais dans la console ayant lancé le prog
    vga_getch();  //attend un touche, retroune la touche appuyée (si nécessaire)
                  //vga_getkey() lit mais n'attend pas (retourne 0 si rien d'appuyé)
    // sleep(20); //attendre, quand vga_getch ne marchait pas

    vga_setmode(TEXT); //retourner au mode texte (important)
    printf("fini\n");  //les printf se font sur la console où on a lancé la commande (ou dans CTRL ALT 8 suivant les cas)
    return EXIT_SUCCESS;
 }



retour présentation SVGALIB

Patrick Trau, IPST, Université Louis Pasteur Strasbourg, mai 2002