Pour transformer un programme qui utilise des entres/sorties en mode texte,
(Attention: les entres/sorties qui utilisent les flux stdin et stdout son interdits)
en un programme qui utilise des entres/sorties simultanment en mode texte
et en mode graphique sous GEM (i.e : on AJOUTE du graphisme en plus) :

   1er cas: pas de fichier projet (un seul fichier .cpp)

	1) Ajouter #include <gemgraph.hpp> (dernier #include)
	2) Renommer void main(void) en void principal(void)

   2me cas: un fichier projet (plusieurs fichiers .c)

	1) Ajouter #include <gemgraph.h> dans le(s) module(s)
	     qui utilise(nt) les fonctions d'entres/sorties 
	2) Ajouter le module gemgraph.c  votre projet
           (tous les fichiers de votre projet doivent avoir
             l'extension .c au lieu de l'extension .cpp)
	   (ce fichier est dans le repertoire include du compilateur)
	3) Renommer void main(void) en void principal(void)
	 
Exemple simple d'un programme qui utilise du graphisme sous GEM
Compilez toujours en modle LARGE pour viter les problmes... 

Auteur : Guillaume LAMONOCA
Adresse : 7 alle lucien mazan
          13500 MARTIGUES
          FRANCE
E-mail : GL@gen4.pressimage.fr
(Donations expected !)

#include <stdio.h>
#include <gemgraph.hpp>		/* Doit tre en dernire position des #include */

void principal(void) /* main() doit devenir principal() */
{
	int nb_reconnus,valeur;
	int x,y,boutons;

	 /* conservation du mode texte */

	clrscr();	 
	gotoxy(2,2);
	printf("Un exemple simple utilisant GEMGRAPH.H\n\n");
	printf("Entrez un nombre :");
	nb_reconnus=scanf("%d",&valeur);
	printf("valeur:%d (valeur de retour de scanf:%d)\n",valeur,nb_reconnus);
	printf("Cliquez avec le bouton gauche ou pressez 'Return' pour quitter");

	/* mode graphique possible simultanement */

	couleur(BLANC);		rectangle_plein(10,200,30,30);
	couleur(BLEU);		rectangle_plein(40,200,30,30);
	couleur(VERT);		rectangle_plein(70,200,30,30);
	couleur(CYAN);		rectangle_plein(100,200,30,30);
	couleur(ROUGE);		rectangle_plein(130,200,30,30);
	couleur(VIOLET);	rectangle_plein(160,200,30,30);
	couleur(KAKI);		rectangle_plein(190,200,30,30);
	couleur(GRIS_CLAIR);	rectangle_plein(220,200,30,30);
	couleur(GRIS);		rectangle_plein(250,200,30,30);
	couleur(MAGENTA);	rectangle_plein(280,200,30,30);
	couleur(VERT_CLAIR);	rectangle_plein(310,200,30,30);
	couleur(CYAN_CLAIR);	rectangle_plein(340,200,30,30);
	couleur(MARRON);	rectangle_plein(370,200,30,30);
	couleur(VIOLET_CLAIR); 	rectangle_plein(400,200,30,30);
	couleur(JAUNE);		rectangle_plein(430,200,30,30);
	couleur(NOIR);		rectangle_plein(460,200,30,30);

	cercle(50,50,20);			/* x,y,diametre    	*/
	cercle_plein(100,100,40);      		/* x,y,diametre   	*/
	ellipse(150,50,20,30);			/* x,y,larg,haut    	*/
	ellipse_pleine(300,120,40,20);		/* x,y,larg,haut    	*/
	rectangle(200,100,50,70);		/* x,y,larg,haut	*/
	rectangle_plein(250,100,50,70);		/* x,y,larg,haut 	*/
	droite(0,0,LARGEUR-1,HAUTEUR-1);	/* x1,y1,x2,y2   	*/
	pixel(60,60);				/* x,y           	*/

	couleur_fond(VERT);			
	outtextxy(20,250,"Hello");		/* x,y,chaine	*/
	couleur_fond(COULEUR_PRECEDENTE); /* on reprend la couleur de fond blanche */

	couleur(ROUGE);
	rectangle(0,0,largeur_caractere()*40,hauteur_caractere()*3);

	/* gestion de la souris et du clavier */

	couleur(COULEUR_PRECEDENTE);  /* on reprend la couleur de trac noire */
	while (souris(&x,&y,&boutons)!=BOUTON_GAUCHE_ENFONCE)
	{	
		if (kbhit()) /* non nul si on a press une touche */
			if (getch()=='\r')
				break; 
		pixel(x,y);
		rafraichir();
		/* mise  jour force du contenu de la fenetre */
	}

	/* Quand le programme s'arrte sa fentre disparait	 */
	/* Prvoir une attente quelconque (ex: getch())          */
}

Remarque :

De nombreuses constantes sont prdfinies :
- Les constantes pour les couleurs (voir exemple)
- LARGEUR et HAUTEUR donnent la taille de la fentre graphique
- BOUTON_GAUCHE_ENFONCE, BOUTON_GAUCHE_RELACHE,
  BOUTON_DROIT_ENFONCE et BOUTON_DROIT_RELACHE sont
  utiles pour dtecter les vnements souris avec la fonction souris(...).

Les fonctions largeur_caractere() et hauteur_caractere() sont utiles pour
connatre la largeur d'une colonne de texte en pixel ou la hauteur d'une
ligne de texte en pixel, ceci afin de faire correspondre vos graphismes avec
le texte. Notez que la fonction couleur(...) ne dtermine pas seulement la couleur
du graphisme , elle dtermine aussi la couleur du texte affich avec printf(...).

De manire automatique, si une succession de printf(...) entrane une sortie
de l'cran (vers le bas de l'cran), le programme sera gel et attendra la pression
de la touche Return pour effacer l'cran et redmarrer l'affichage en haut de l'cran.
(En pur mode texte, il y aurait eu un dfilement de l'cran vers le haut)

Lorsque le programme attend une touche le refraichissement de l'image est
automatique. Parfois (attente d'un click souris) il vous faudra provoquer
vous mme ce rafraichissement  avec la fonction  rafraichir(). Pouvoir dcider
de l'instant de rafraichissement de la fentre permet de faire apparatre d'un 
seul coup des graphismes, qui autrement, auraient t visibles tout au long
de leur laboration (ce qui peut provoquer des clignotements indsirables).
