#include <GL/gl.h>
#include <GL/glut.h>
#include <stdio.h>

void persoInit(void);
void persoRedimensionne(int largeur,int hauteur);
void persoRedessine(void);
void persoTraiteFrappe(unsigned char key,int x,int y);
void persoTraiteClickSouris(int bouton,int etat,int x,int y);
void persoTraiteMouvementSouris(int x,int y);
void persoTacheDeFond(void);

int main(int argc, char** argv)
{
  glutInit(&argc,argv);
  glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
  glutInitWindowSize(300,300);
  glutInitWindowPosition(100,100);
  glutCreateWindow("Glut Window");

  /* Initialisations */

  persoInit();

  /* Définitions des comportements, en réaction
     aux événements graphiques */

  glutReshapeFunc(persoRedimensionne);
  glutDisplayFunc(persoRedessine);
  glutKeyboardFunc(persoTraiteFrappe);
  glutMouseFunc(persoTraiteClickSouris);
  glutMotionFunc(persoTraiteMouvementSouris);
  glutIdleFunc(NULL); /* Pas de fonction appelée en tâche de fond */

  /* Boucle de gestion des événements graphiques */
  
  glutMainLoop(); 
  
  return 0;
}

void persoInit(void)
{
  printf("persoInit\n");
}

void persoRedimensionne(int largeur,int hauteur)
{
  printf("persoRedimensionne %dx%d\n",largeur,hauteur);
}

void persoRedessine(void)
{
  printf("persoRedessine\n");
}

void persoTraiteFrappe(unsigned char key,int x,int y)
{
  printf("persoTraiteFrappe %d en (%d,%d)\n",(int)key,x,y);
}

void persoTraiteClickSouris(int bouton,int etat,int x,int y)
{
  printf("persoTraiteClickSouris %d en (%d,%d), etat=%d\n",bouton,x,y,etat);
}

void persoTraiteMouvementSouris(int x,int y)
{
  printf("persoTraiteMouvementSouris en (%d,%d)\n",x,y);
}

void persoTacheDeFond(void)
{
  printf("persoTacheDeFond\n");
}