tete du loic

 Loïc YON [KIUX]

  • Enseignant-chercheur
  • Référent Formation Continue
  • Responsable des contrats pros ingénieur
  • Référent entrepreneuriat
  • Responsable de la filière F2 ingénieur
  • Secouriste Sauveteur du Travail
mail
loic.yon@isima.fr
phone
(+33 / 0) 4 73 40 50 42
location_on
ISIMA
  • twitter
  • linkedin
  • viadeo

[C] Flood It en Xlib

Date de première publication : 2014/10/3

Vous aller ajouter une couche graphique au jeu dont vous avez développé le moteur texte. Veillez à bien sauvegarder le(s) fichier(s) du moteur.

exemple de resultat pour le TP

Vous trouverez sur http://fc.isima.fr/~loic/unixc/xlib.c un exemple de fichier xlib. Ce programme que l’on vous propose se découpe en phases classiques d’un programme xlib.

Ce programme n’est pas exempt de défauts au niveau de l’implémentation : toutes les variables sont globales par commodité et la libération des ressources n’est pas exhaustive.

Dès que l'on utilise la xlib, les programmes ont tendance à "fuiter" mais ce n'est pas une raison pour ne pas libérer correctement ce qui est libérable.

Pour compiler un programme utilisant la Xlib, il faut dire au compilateur d'utiliser une bibliothèque supplémentaire à l'édition des liens :

gcc -lX11 xlib.c -o exemple

Suivant l'installation, il faut parfois avoir à spécifier le chemin des fichiers include de la Xlib avec l'option -I chemin et le chemin des bibliothèques avec -L chemin. Vous avez de la chance, ce n'est pas le cas pour etud !

Regardez bien ce que fait ce programme : il vous montre comment afficher des formes simples, comment récupérer les événements claviers, changer de police de caractères et manipuler la couleur.

exemple Xlib

Gestion de la couleur

Gérer les couleurs en Xlib est un peu pénible à cause de l’âge de la bibliothèque et de la foule de matériels différents à prendre en compte. Les capacités du display sont connues grâce à la notion de visuels (Visual) : un visuel est proposé par défaut (c’est celui de la fenêtre racine) mais il est possible d’en changer. Pour avoir la liste de visuels disponibles et celui qui est proposé par défaut, soit vous tapez la commande shell xdpyinfo, soit vous appelez la fonction Xlib idoine.

Les visuels les plus intéressants pour nous sont le DirectColor et le TrueColor avec des couleurs stockées sur 24 bits (8 bits pour chaque composante rouge, vert et bleue. Attention, cela peut être moins). La palette de couleurs est en lecture-écriture pour le premier visuel et en lecture seule pour le second, le fait qu’elle soit en lecture seule est un avantage (cela permet entre autres de partager la palette entre les différentes applications graphiques tournant sur le serveur X). Nous supposons que le visuel renvoyé est de type TrueColor (En toute rigueur, il faudrait vérifier cette supposition et utiliser le bon visuel dans le cas échéant).

Nous allons demander une couleur à la palette grâce à son nom (en Anglais, bien sur). La liste des couleurs se trouve dans un fichier rgb.txt dans un sous-répertoire des inclusions. La structure retournée est de type XColor et on donne le champ pixel à la fonction XSetForeground() pour changer de couleur.

Ce qu'il faut faire ...

Après ces brèves explications, passons aux choses sérieuses.

Voilà deux sites intéressants sur la Xlib :

Pour aller plus loin :