More is less

01/09/2015

Grafx

J'ai souvent besoin de programmer une fenêtre Xwindow sans bouton, ni trompette, pour y dessiner quelque chose et éventuellement y écrire un texte simple. Les librairies usines à gaz (Gtk, Qt, Fltk, ...) nécessitent un investissement très long, et une mise en place pénible.

GrafX (prononce graf ix, comme X11) est une classe qui manipule X11 directement. Son utilisation est immédiate : open pour ouvrir une fenêtre, line pour tracer un trait, etc.

Exemple simple

copie d'écran de la fenêtre GrafX

Résultat souhaité.

  1. On ouvre une fenêtre GrafX (X11 en fait)
  2. On y trace des lignes, un rectangle et on y affiche un petit texte.
  3. Le programme attend qu'on appuie sur 'q' puis s'arrête.

Ci-contre une copie d'écran.

Le source c++ est disponible ici :

testGrafX.cpp

Les fichiers source de la librairie sont ici :

grafX.h

grafX.cpp

On compile testGrafX.cpp avec :

$ g++ testGrafX.cpp grafX.cpp -o testGrafX -lX11 -std=c++11 -Wfatal-errors

Le source du programme

Les méthodes membres sont visibles et commentées dans grafX.h.

Dans notre cas :

Une fois créée un instance de GrafX : GrafX gx

Créer une fenêtre
Tracer un rectangle
Tracer un segment de droite
Tracer un segment dont le premier sommet est le sommet précédent
Écrire un texte
Remarque

Les fonctions de libX11 sont écrites en C. Les textes sont donc des char *. Mais C++ considère une constante chaîne comme une string de la STL et renacle à la convertir en const char *. Il nous gratifie d'un warning. C'est l'explication de mon petit manège de la ligne 27. On peut dissimuler les warnings avec l'option -w sur la ligne de g++.

TODO

Si tu veux en rajouter d'autres, va à la Documentation de X11.

Pas trop pour rester conforme à

More is less

.

Aller au début


Réalisé avec Qlam - LGPL