Interfaces gráficas
Muchas aplicaciones necesitarán proporcionar una interfaz gráfica para interactuar con usuarios. Las interfaces gráficas pueden crear un medio intuitivo y descubrible para que las personas interactúen con el software, y usuarios esperan que las aplicaciones proporcionen interfaces de usuario fáciles de usar y atractivas.
La Plataforma GNOME proporciona tecnología sofisticada de gráficos e interfaces de usuario, desde controles de interfaz de usuario estándar en una API de dibujo a pantalla de gráficos de alta calidad. El uso de las tecnologías de gráficos en GNOME le permite crear aplicaciones que son consistentes, intuitivas, y estéticamente placenteras.

3.1.1. GTK+
GTK+ es la principal biblioteca usada para construir interfaces de usuario en GNOME. Proporciona todos los controles de interfaz de usuario, o widgets, usados en una aplicación gráfica común. Es una API moderna, orientada a objetos que permite construir interfaces de usuario atractivas y sofisticadas sin tratar con los detalles de bajo nivel como el pintado o la interacción con el dispositivo.
Además de los widgets básicos, como botones, casillas, y entradas de texto, GTK+ también proporciona potentes APIS según el modelo Vista-Controlador (MVC) para vistas de árbol, campos de texto multilínea, y acciones de menú y barra de herramientas.
Los widgets en GTK+ se emplazan en las ventanas usando un modelo de paquetes de cajas. Los programadores sólo especifican cómo empaquetar los widgets juntos en cajas contenedoras, en lugar de su posición en coordenadas absolutas. GTK+ se asegura de que las ventanas se dimensionan correctamente para ajustarse a su contenido y maneja automáticamente las redimensiones de ventanas.
Debido a que GTK+ ofrece una API flexible, desarrollar widgets adicionales para su uso en aplicaciones GTK+ es sencillo. Existen cierto número de bibliotecas de terceras partes que proporcionan widgets adicionales y muchos desarrolladores han creado widgets personalizados para propósitos especiales en sus aplicaciones.
GTK+ maneja los detalles difíciles de los interfaces de usuario e interacción del usuario y proporciona una API simple y potente que le permite centrarse en los detalles de su aplicación. Las aplicaciones desarrolladas con GTK+ se adaptarán inmediatamente al los ajustes del tema y tipografía del usuario, interactuarán debidamente con las tecnologías de asistencia y se comportarán como el usuario espera que se comporten.
Para obtener más información acerca de GTK+, consulte El manual de referencia de GTK+ o visite la página web de GTK+.
3.1.2. Libglade
Nótese que Libglade está obsoleto y en su lugar se usar GtkBuilder. En su lugar, el nuevo código escrito debe usar GtkBuilder.
Libglade es una biblioteca para construir dinámicamente interfaces de usuario desde descripciones XML. Puede usar un constructor de interfaces gráficos como Glade para construir su interfaz de usuario y después importar la descripción del interfaz en su aplicación. Esto facilita la construcción de diseños complejos y ajusta los detalles del diseño.
Libglade permite a los programadores centrar su código en la lógica de sus aplicaciones, manteniendo el orden con la construcción actual del interfaz. Los constructores de interfaces gráficos también facilitan a las personas dedicadas a diseñar el interfaz, la construcción de interfaces sin tener que saber programar.
Para obtener más información acerca de libglade, consulte El manual de referencia de Libglade.
3.1.3. Pango
Pango es la biblioteca principal de gestión de texto y tipografías en la plataforma GNOME. Es responsable de mostrar y renderizar texto y se usa a través de GTK+. 1
Pango tiene un soporte extensivo para los variados sistemas de escritura usados en todo el mundo. Muchos de los sistemas de escritura usados en los idiomas tienen complejas reglas de dibujado de glifos y composición de caracteres. Con Pango, casi todos los idomas pueden escribirse y mostrarse correctamente, permitiendo a los usuarios en cualquier parte ver texto en sus idiomas maternos. El soporte de Pango para múltiples sistemas de escritura es automático; los desarrolladores de aplicaciones no tienen que escribir ningún código especial para soportar otros idiomas.

Pango soporta el estilo de texto usado en los típicos documentos e interfaces, incluyendo cursivas, tamaños de tipografía y subrayado. Pango usa un vocabulario simple parecido a XML llamado PangoMarkup que le permite establecer el tamaño de la tipografía, el color, los estilos y otros atributos del texto. Al usar PangoMarkup podrá especificar estilos en línea sin tener que iterar manualmente con los bloques de texto. Se puede usar PangoMarkup desde GTK+ directamente, permitiéndole dar estilo a textos en sus interfaces gráficas fácilmente.
Debería usar directamente Pango cuando necesite mostrar texto en la pantalla o en un medio diferente. Usar Pango permitirá a la disposición de su texto trabajar de forma parecida con GTK+ y el resto de la plataforma GNOME. le ayudará a crear código portable y, lo más importable, le asegurará que su aplicación pueda renderizar texto correctamente en cientos de idiomas diferentes.
Para obtener más información acerca de Pango, consulte El manual de referencia de Pango.
3.1.4. GDK
GDK es la biblioteca de bajo nivel que usa GTK+ para interactuar con el sistema para los dispositivos gráficos y de entrada. Aunque rara vez usará GDK directamente en el código de la aplicación, contiene toda la funcionalidad necesaria para dibujar objetos y texto en la pantalla e interactuar con el usuario con varios dispositivos de entrada. 2
GDK posee características de contexto gráfico y primitivas de dibujado que son adecuadas para dibujar objetos simples y renderizar imágenes en la pantalla. Ya que se proporciona un sistema de dibujado más extenso con Cairo, GDK proporciona ganchos para usar contextos Cairo dentro de GDK.
GDK le permite acceder a eventos del teclado, ratones y otros dispositivos de entrada, en lugar de conectarse con las señales de alto nivel que se usan en GTK+. GDK también proporciona rutinas de bajo nivel para acceder a los datos de arrastrar y soltar y del portapapeles del sistema. Cuando implemente controles personalizados, quizá deba acceder a estas características para implementar un comportamiento adecuado de la interacción con el usuario.
GDK proporciona otra funcionalidad necesaria para implementar un toolkit gráfico completo como GTK+. Ya que GDK actúa como una plataforma de abstracción, permitiendo que GTK+ se ejecute en múltiples entornos, proporciona una API para todas las funcionalidades del sistema que necesita GTK+. Esto incluye información acerca configuraciones multimonitor, resolución y profundidad de color, mapas de colores y cursores.
Debería usar GDK siempre que necesite acceso de bajo nivel al sistema de ventanas, incluyendo acceso a bajo nivel para eventos, ventanas y al portapapeles. Usar GDK para estas tareas asegura que su código es portable y se integra con el resto de su código GTK+. Generalmente no deberían usarse las rutinas de dibujado simple en GDK. En su lugar, debería usar la extensa funcionalidad que proporciona Cairo.
Para obtener más información acerca de GDK, consulte El manual de referencia de GDK.
3.1.5. Cairo
Cairo es una biblioteca gráfica 2D que cuenta con una API sofisticada para dibujar vectores gráficos, imágenes compuestas y renderizar texto con antialias. Cairo proporciona soporte para muchos dispositivos de salida, incluyendo el sistema X Window, Microsoft Windows y búferes de imagen, permitiéndole escribir código para dibujar gráficos en diferentes medios independiente de la plataforma.
El modelo de dibujado de Cairo es similar al que proporcionan PostScript y PDF. La API de Cairo proporciona operaciones de dibujado tales como pincelar y rellenar splines cúbicos de Bézier, componer imágenes y realizar transformaciones afines. Estas operaciones con vectores permiten a ricos gráficos con antialias sin tener que usar el caro dibujo basado en píxel en el código de su aplicación.
El rico modelo de Cairo permite renderizado de alta calidad en múltiples dispositivos. La misma API se puede usar para crear impresionantes gráficos y textos en la pantalla, para renderizar imágenes o crear salidas modificadas adecuadas para una impresión.
Debería usar Cairo siempre que necesite dibujar gráficos en su aplicación más allá de los widgets proporcionados por GTK+. Gran parte del dibujado realizado por GTK+ se lleva a cabo usando Cairo. Usar Cairo para su dibujado personalizado permitirá a su aplicación tener gráficos de alta calidad, con antialias e independientes de la resolución.
Para obtener más información acerca de Cairo, consulte Cairo: Una biblioteca de gráficos vectoriales.
El motor de dibujo Pango se puede usar con diferentes backends de tipografías y dibujado. En la mayoría de sistemas GNOME, Pango usará FreeType, fontconfig y Cairo para acceder a las tipografías y renderizar texto. En otros sistemas, Pango usará la tipografía nativa de los sistemas, tales como Uniscribe en Microsoft Windows y ATSUI en MacOs.
GDK se puede ejecutar sobre varias plataformas, incluyendo el sistema X Window, Microsoft Windows, DirectFB y Quartz. Sobre cualquier plataforma, GDK proporciona el mismo API consistente, permitiendo a las aplicaciones GTK+ ejecutarse sin modificaciones.