libgraph.h 4.05 KB
/**** Bibliotheque graphique (definitions) ****/

/** Constantes **/

#define COULEUR_BLANC 0
#define COULEUR_NOIR 1
#define COULEUR_ROUGE 2
#define COULEUR_VERT 3
#define COULEUR_BLEU 4
#define COULEUR_ROSE 5
#define COULEUR_GRIS 6

#define MAX_LUTINS 16

typedef enum {toucheBas, toucheHaut, quitter} evenement;

/** Prototypes **/

/**
 * @brief cree une fenetre 2D
 *
 * @param largeur en pixels de la fenetre
 * @param hauteur en pixels de la fenetre
 * @param titre   de la fenetre (chaine de caractere)
 */
unsigned char creerSurface (int largeur, int hauteur, char *titre);

/**
 * @brief permet de charger un fichier image au format bmp (bitmap)
 *
 * @param fichier nom du fichier
 */
unsigned char chargerSurface (char *fichier);


/**
 * @brief permet de sauvegarder une surface en image (format bmp)
 *
 * @param fichier   nom du fichier
 * @return          0 si OK, valeur negative sinon
 */
int sauverSurface (char *fichier);

/**
 * @brief met a jour la surface d'affichage
 */
void majSurface (void);


/**
 * @brief libere la surface d'affichage
 *        a faire lors de la fermeture
 *        du programme
 */
void fermerSurface (void);

/**
 * @brief choisit la police de caractères à utiliser pour afficher du texte
 * @param chemin nom du fichier de police (format .ttf, voir /usr/share/fonts/truetype)
 * @param taille taille de la police
 */
void choisirPolice(const char *chemin, int taille);

/**
 * @brief   dessine un rectange de taille (l,h) aux coordonnêes
 *          (x,y) et de couleur c
 *
 * @param x 0 <= x <= l_surface
 * @param y 0 <= y <= h_surface
 * @param l largeur en pixels
 * @param h longueur en pixels
 * @param c indice de couleur voir variable couleurs dans le fichier .c
 */
void rectanglePlein (int x, int y, int l, int h, int c);


/**
 * @brief permet de determiner l'indice du tableau de couleur du
 *        pixel aux coordonnees (x,y)
 *
 * @param x 0 <= x <= l_surface
 * @param y 0 <= y <= h_surface
 * @return indice de couleur voire variable couleurs dans le fichier .c
 */
int couleurPixel (int x, int y);

/**
 * @brief crée un lutin à partir d'un texte
 *
 * @param texte le texte
 * @param couleur indice de couleur du texte
 * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS)
 */
int lutinTexte(char *texte, int couleur);

/**
 * @brief charge un lutin à partir du fichier
 *
 * @param fichier image bitmap du lutin à charger
 * @param couleur indice de couleurs à charger
 * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS)
 */
int chargerLutin (char *fichier, int couleur);

/**
 * @brief afficher un lutin aux coordonnées (x,y)
 *
 * @param lutin numero du lutin à afficher (< MAX_LUTINS)
 * @param x     abscisse de départ
 * @param y     ordonnée de départ
 */
void afficherLutin (int lutin, int x, int y);

/**
 * @brief creer un lutin de taille (l,h) aux coordonnées (x,y)
 *
 * @param x         abscisse de départ
 * @param y         ordonnée de départ
 * @param largeur   largeur du lutin
 * @param hauteur   hauteur du lutin
 * @param couleur   indice de couleur à partir du tableau _couleurs_
 * @return          indice du lutin dans le tableau global (< MAX_LUTINS)
 */
int creerLutin (int x, int y, int largeur, int hauteur, int couleur);

/**
 * @brief       sauvegarde un lutin dans un fichier
 *
 * @param lutin numero de lutin à sauvegarder (< MAX_LUTINS)
 * @param nom   fichier pour la sauvegarde
 * @return      0 si OK valeur négative sinon
 */
int sauverLutin (int lutin, char *nom);

/**
 * @brief calcule la taille (largeur,hauteur) d'un lutin
 *
 * @param lutin     index du lutin (< MAX_LUTINS)
 * @param largeur   pointeur sur la largeur
 * @param hauteur   pointeur sur la hauteur
 */
void tailleLutin (int lutin, int *largeur, int *hauteur);

/**
 * @brief lire une touche au clavier
 *
 * @param evt    pointeur sur evenement
 * @param touche pointeur sur la touche pressée
 * @param detail NULL ou keysim
 */
void lireEvenement (evenement *evt, char *touche, void **detail);

/**
 * @brief attente d'un evenement bouton, souris, fin de programme
 */
void attendreEvenement (void);