Interfaces graphiques
La plupart des applications ont besoin de présenter une interface graphique pour intergair avec les utilisateurs. Les interfaces graphiques peuvent créer un environnement intuitif et abordable pour que les gens puissent interagir avec le logiciel, et ceux-ci s'attendent effectivement à découvrir des applications à l'interface attractive et ergonomique.
La plate-forme GNOME contient des technologies perfectionnées pour les graphismes et l'interface utilisateur, qui vont des composants standards d'interface utilisateur à une interface de programmation pour le dessin de graphismes de haute qualité à l'écran. En exploitant les technologies de graphisme de GNOME, vous pouvez créer des applications cohérentes, intuitives et esthétiquement agréables.

III.I.I. GTK+
GTK+ est la principale bibliothèque utilisée pour construire des interfaces utilisateur dans GNOME. Elle contient tous les composants (widgets) d'interface utilisés habituellement dans une application graphique. Son interface de programmation moderne orientée objet permet de construire des interfaces utilisateur attrayantes et avancées sans avoir à se préoccuper des détails de bas niveau de dessin et d'interaction entre périphériques.
En plus des composants de base, comme les boutons, les cases à cocher et les zones de saisie de texte, GTK+ offre également des interfaces de programmation puissantes sur le principe MVC (modèle-vue-contrôleur) pour les arborescences, les champs de texte à plusieurs lignes et les actions des menus et des barres d'outils.
Les composants dans GTK+ sont placés dans les fenêtres selon un modèle de remplissage de boîtes. Les programmeurs ne doivent spécifier que la manière de placer les composants dans les boîtes conteneurs, sans avoir à les positionner directement à l'aide de coordonnées absolues. GTK+ s'assure que les fenêtres sont correctement dimensionnées pour présenter leur contenu, et il gère de façon automatique le redimensionnement des fenêtres.
Grâce à la souplesse de l'interface de programmation de GTK+, le développement de composants supplémentaires à destination des applications GTK+ est simple. De nombreuses bibliothèques tierces fournissent des composants supplémentaires, et beaucoup de développeurs ont créé des composants personnalisés et spécialisés pour leurs applications.
GTK+ est chargé des détails complexes des interfaces utilisateur et des interactions avec l'utilisateur. Il offre une interface de programmation simple mais puissante permettant aux développeurs de se concentrer sur les détails de leur application. Les applications développées avec GTK+ respectent automatiquement les réglages de thème et de police de l'utilisateur, interagissent correctement avec les technologies d'accessibilité et leur comportement correspond aux attentes des utilisateurs.
Pour plus d'informations sur GTK+, consultez le manuel de référence de GTK+ (en anglais) ou visitez le site Web de GTK+ (en anglais).
III.I.II. Libglade
Sachez que Libglade a été rendue obsolète par GtkBuilder. Tout nouveau code devrait utiliser GtkBuilder.
Libglade est une bibliothèque pour construire dynamiquement des interfaces à partir de descriptions XML. Vous pouvez utiliser un constructuer d'interface graphique comme Glade pour construire vos interfaces utilisateur, puis importer les descriptions d'interface dans votre application. Cela facilite la construction et l'ajustement de mises en page complexes.
Libglade permet aux programmeurs de se concentrer sur leur code et sur la logique de leur application, sans l'encombrer des définitions d'interfaces. Les constructeurs d'interface graphique permettent aussi à des spécialistes des interfaces de construire celles-ci sans devoir connaître la programmation.
Pour plus d'informations sur Libglade, consultez le manuel de référence de Libglade (en anglais).
III.I.III. Pango
Pango est la bibliothèque de base pour la gestion du texte et des polices dans la plate-forme GNOME. Elle est responsable de la mise en page et de la production de texte, et elle est massivement exploitée dans GTK+.1
Pango dispose d'une prise en charge étendue des différents systèmes d'écriture du monde entier. Dans de nombreuses langues, les systèmes d'écriture ont des règles complexes de disposition des glyphes et de composition des caractères. Avec Pango, presque toutes les langues peuvent être écrites et affichées correctement, permettant à tous d'afficher du texte dans leur propre langue. La prise en charge par Pango de plusieurs systèmes d'écriture est automatique ; les développeurs d'applications n'ont pas besoin d'écrire du code spécial pour prendre en charge d'autres langues.

Pango gère les styles de texte utilisés habituellement dans les documents et les interfaces, y compris l'italique, la graisse et le soulignement. Pango utilise un vocabulaire de type XML simple appelé PangoMarkup qui permet de définir la taille de police, la couleur, les styles et d'autres attributs de texte. À l'aide de PangoMarkup, vous pouvez définir des styles en ligne sans devoir passer les blocs de texte en boucle. PangoMarkup peut être directement utilisé à partir de GTK+, ce qui permet de mettre en forme le texte facilement dans les interfaces graphiques.
Il est indiqué d'utiliser directement Pango lorsqu'il s'agit de mettre en page du texte à l'écran ou sur un support différent. L'utilisation de Pango garantit que la mise en forme de texte fonctionne de manière identique avec GTK+ et le reste de la plate-forme GNOME. C'est une aide pour créer du code portable et, plus important encore, cela permet de s'assurer que l'application peut produire correctement du texte dans des centaines de langues.
Pour plus d'informations sur Pango, consultez le manuel de référence de Pango (an anglais).
III.I.IV. GDK
GDK est la bibliothèque de bas niveau utilisée par GTK+ pour interagir avec le système en ce qui concerne le graphisme et les périphériques d'entrée. Même s'il est rare de devoir utiliser GDK directement dans le code d'une application, elle contient toutes les fonctionnalités nécessaires pour dessiner des objets et du texte à l'écran et pour interagir avec les utilisateurs avec différents périphériques d'entrée.2
GDK contient des primitives de contexte graphique et de dessin qui permettent de dessiner des objets simples et de produire des images à l'écran. Dans la mesure où Cairo offre un système de dessin plus évolué, GDK met à disposition des crochets (hooks) pour utiliser les contextes Cairo au sein de GDK.
GDK permet d'accéder aux événements du clavier, de la souris et d'autres périphériques d'entrée, sans devoir se connecter aux signaux de haut niveau utilisés dans GTK+. GDK offre aussi des routines de bas niveau pour accéder aux données de glisser-déposer et du presse-papiers du système. Lorsque vous programmez des composants personnalisés, il se peut que vous ayez besoin d'accéder à ces fonctionnalités pour implémenter un comportement correct concernant les interactions avec l'utilisateur.
GDK fournit d'autres fonctionnalités indispensables pour l'implémentation d'une boîte à outils graphique complète telle que GTK+. Comme GDK joue le rôle d'une abstraction de plate-forme, permettant à GTK+ de fonctionner sous plusieurs environnements, il fournit une interface de programmation pour toutes les fonctionnalités du système dont GTK+ a besoin. Cela comprend les informations sur les affichages à plusieurs sorties, la résolution et la profondeur de couleur, les cartes de couleur et les curseurs.
GDK doit être utilisé chaque fois qu'un accès bas niveau au système de fenêtrage sous-jacent s'impose, y compris les accès bas niveau aux événements, aux fenêtres et au presse-papiers. L'utilisation de GDK pour ces tâches garantit que le code est portable et s'intègre avec le reste du code GTK+. Les routines de dessin de base de GDK ne devraient généralement pas être utilisées. Cairo est plus indiqué, grâce à ses fonctionnalités étendues.
Pour plus d'informations sur GDK, consultez le manuel de référence GDK (en anglais).
III.I.V. Cairo
Cairo est une bibliothèque graphique 2D offrant une interface de programmation avancée pour le dessin de graphismes vectoriels, la composition d'images et le rendu de texte anti-crénelé. Cairo offre une prise en charge de plusieurs périphériques de sortie, dont le système X Window, Microsoft Windows et les tampons d'images, permettant d'écrire du code indépendant de la plate-forme pour le dessin de graphismes sur différents supports.
Le modèle de dessin de Cairo est semblable à ceux utilisés par PostScript et PDF. L'interface de programmation de Cairo contient des opérations de dessin telles que le traçage et le remplissage de courbes de Bézier, la composition d'images et les transformations affines. Ces opérations vectorielles permettent d'intégrer dans les applications des graphismes riches et anti-crénelés sans faire appel à de coûteuses fonctions basées sur des pixels.
Le riche modèle de dessin de Cairo permet des rendus de haute qualité sur différents supports. La même interface de programmation peut être utilisée pour créer de superbes textes et graphismes à l'écran, pour effectuer du rendu d'images ou pour créer des sorties bien nettes adaptées à l'impression.
À chaque fois qu'une application à besoin de produire des graphismes qui vont au-delà des composants offerts par GTK+, elle devrait faire appel à Cairo. La plupart des graphismes produits par GTK+ sont réalisés avec Cairo. L'utilisation de Cairo pour le dessin personnalisé permet à l'application de produire des graphismes de haute qualité, anti-crénelés et indépendants de la résolution.
Pour plus d'informations sur Cairo, consultez Cairo: A Vector Graphics Library.
Le moteur de mise en page Pango peut être utilisé avec différents moteurs de polices et de dessin. Sur la plupart des systèmes GNOME, Pango utilise FreeType, fontconfig et Cairo pour accéder aux polices et produire du texte. Sur d'autres systèmes, Pango utilise les systèmes de polices natifs, tels que Uniscribe sur Microsoft Windows et ATSUI sur MacOS.
GDK fonctionne sur différentes plates-formes, y compris le système X Window, Microsoft Windows, DirectFB et Quartz. Sur toutes les plates-formes, GDK offre la même interface de programmation cohérente, permettant à GTK+ et aux applications GTK+ de fonctionner sans modifications.