Xlib: Les fonctions de dessin
Les fonctions graphiques :
La Xlib fournit une panoplie assez complète de fonctions de dessin 2D.
Ces fonctions sont en général simples à utiliser :
- Tracés de points, lignes, rectangles, arcs, polygones et textes, creux ou pleins.
- Requêtes simples ou multiples (tracer 1 ligne ou plusieurs lignes ?).
- Ces fonctions travaillent sur des Drawables : Pixmaps ou Windows.
- Le résultat dépend du GC.
Les fonctions de dessin :
- XDrawPoint(display, drawable, gc, x, y)
- Probablement la plus simple des fonctions graphiques. Elle dessine un point à la position (x, y).
- XDrawPoints(display, drawable, gc, XPoint *pts, n, mode)
- Fonction similaire à la précédente si ce n'est qu'un tableau de n éléments de type XPoint est dessiné.
Le paramètre mode (un int) vaut soit CoordModeOrigin soit CoordModePrevious selon que les coordonnées des points sont relatives à l'origine ou aux coordonnées du dernier point.
- XDrawLine(display, drawable, gc, x1, y1, x2, y2)
- Dessine une ligne entre (x1, y1) et (x2, y2).
- XDrawLines(display, drawable, gc, XPoints *pts, n, mode)
- Dessine un ensemble de lignes connectées, en prenant des paires de points dans la liste. Voir la fonction XDrawPoints() pour le paramètre mode.
- XDrawRectangle(display, drawable, gc, x, y, width, height)
- Dessine un rectangle dont le coin en haut à gauche est en (x, y) et de taille (width, height).
- XFillRectangle(display, drawable, gc, x, y, width, height)
- Dessine un rectangle plein. L'attribut fill_style du GC spécifie la manière dont on effectue le remplissage (couleur pleine, pattern, etc...)
- XFillPolygon(display, drawable, gc, XPoint *pts, n, shape, mode
- Semblable a XDrawLines sauf que le polygone dessiné est rempli. Le paramètre shape sert d'aide au serveur pour optimiser le remplissage du polygone.
Les valeurs possibles sont :
- Complex : Les côtés du polygone peuvent s'intersecter.
- Nonconvex : Les côtés du polygone ne s'intersectent pas mais il n'est pas convexe.
- Convex : le polygone est convexe, le dessin sera nettement plus rapide.
- XDrawArc(display, drawable, gc, x, y, width, height, angle1, angle2)
- Les paramètres x, y, width et height définissent une boîte (Bounding Box) contenant l'arc de cercle. Le centre de l'arc est le centre de la boîte. Les paramètres angle1 et angle2 spécifient la zone du cercle qui sera dessinée. Ces angles sont en 1/64 degrés, mesurés dans le sens trigonométrique. L'angle de valeur zéro est à la position 3 heures. Le paramètre angle2 est mesuré relativement à angle1.
Ainsi, pour dessiner un cercle entier, il faudra positionner width et height égaux au diamètre, et choisir angle1 = 0 et angle2 = 360*64 = 23040.
- XFillArc(display, drawable, gc, x, y, width, height, angle1, angle2)
- Idem à la fonction précédente sauf que l'arc de cercle est plein.
Les fonctions de tracé de texte seront étudiées ultérieurement.
Les fonctions de tracé de bitmaps également.
Effacement d'une fenêtre :
- XClearWindow(display, drawable)
- Efface le contenu d'une fenêtre ou d'un Pixmap.
michel.buffa@essi.fr