Графические интерфейсы
Большинству приложений необходимо иметь графический интерфейс для взаимодействия с пользователями. Графические интерфейсы могут создать интуитивное и легко воспринимаемое окружение для взаимодействия пользователя с программным обеспечением, и пользователи ожидают от приложения удобного и привлекательного интерфейса.
Платформа GNOME использует разветвлённую графическую технологию пользовательского интерфейса: начиная от стандартных элементах управления до API для рисования высококачественной графики. Использование графических технологий в GNOME позволяет создавать целостные, интуитивно понятные и эстетически приятные приложения.

3.1.1 GTK+
GTK+ — это основная библиотека, используемая для построения интерфейсов пользователя. Она предоставляет все графические элементы управления пользователя или виджеты, используемые в графических приложениях. Современные объектно-ориентированные программные интерфейсы позволяют конструировать привлекательные и естественные интерфейсы для пользователя без необходимости иметь дело с низкоуровневым программированием и взаимодействия устройств.
В дополнение к стандартным элементам управления: кнопок, флажков, текстовых полей, GTK+ также содержит мощный API «Модель-Внешний вид-Контроллер» (MVC) для древовидных полей, многострочных редакторов, действий меню и панелей.
Элементы управления в GTK+ располагаются в окне в соответствии с моделью упаковки в коробку. Программист указывает только то, как упаковать виджеты относительно друг друга в рамках контейнера, а не абсолютные координаты. GTK+ гарантирует, что размер окна будет соответствовать его содержимому и при необходимости будет автоматически изменён.
Так как GTK+ предлагает гибкий API, то разработать новые виджеты достаточно легко. Большое количество библиотек третьих сторон обеспечивает дополнительные элементы управления, и многие разработчики создают свои виджеты для конкретных целей.
GTK+ обрабатывает множество сложных деталей пользовательского интерфейса и взаимодействия с пользователем и предоставляет простой и мощный API, позволяющий сосредоточится на основных задачах приложения. Приложения, использующие GTK+ автоматически наследуют установленные пользователем тему и шрифты, а также будет корректно работать с технологиями специальных возможностей, их поведение будет привычным для пользователей.
Для получения более полной информации о GTK+ обратитесь к GTK+ Reference Manual или посетите веб-сайт GTK+.
3.1.2 Libglade
Заметим, что Libglade устарел и в новом коде нужно использовать GtkBuilder.
Libglade — это библиотека для динамического построения интерфейса пользователя из описаний на языке XML. Для конструирования интерфейса пользователя можно использовать дизайнер интерфейсов, например Glade, и затем импортировать описание интерфейса в приложение. Что позволяет легко конструировать сложное взаимное расположение элементов и подгонять детали расположения.
Libglade позволяет программисту сконцентрироваться на логике приложения, оставляя полноценное построение интерфейса. Дизайнеры графического интерфейса также могут легко создавать интерфейсы без знаний того, как работает программа.
За дополнительной информацией о Libglade обратитесь к Libglade Reference Manual.
3.1.3 Pango
Pango — ключевая библиотека обработки текста и шрифтов в платформе GNOME. Она отвечает за расположение и прорисовку текста и используется в GTK+. 1
Pango широко поддерживает различные системы письменности, используемые во всем мире. Многие системы письменности имеют сложные правила расположения символов и составления знаков. С помощью Pango можно писать и корректно отображать почти все языки, что позволяет пользователю в любом месте просматривать текст на родном языке. Поддержка различных систем письменности осуществляется автоматически и разработчику не нужно писать специальный код для поддержки разных языков.

Pango поддерживает стилизацию текста, обычно используемую в документах и интерфейсах, включая курсив, высоту шрифта и подчёркивание. Pango использует простой XML-подобный словарь, называемый PangoMarkup, который позволяет устанавливать размер шрифта, цвет, стиль и другие атрибуты текста. С помощью PangoMarkup можно описать внутренние стили без ручного редактирования блоков текста. PangoMarkup можно использовать напрямую из GTK+, благодаря чему легко стилизовать текст в графических интерфейсах.
При необходимости расположить текст непосредственно на экране или другом устройстве вывода следует использовать библиотеку Pango напрямую, при этом текст будет выводиться согласованно с библиотекой GTK+ и остальной частью платформы GNOME. Что поможет создать переносимый код и, что ещё более важно, гарантирует, что приложение сможет корректно отобразить текст на сотнях различных языков.
За дополнительной информации о Pango обратитесь к Справочному руководству Pango.
3.1.4 GDK
GDK — это низкоуровневая библиотека, используемая GTK+ для работы с графикой и устройствами ввода. Хотя непосредственное использование библиотеки GDK в коде довольно редко, она содержит весь функционал необходимый для прорисовки объектов и текста на экране, а также взаимодействия с пользователем с помощью различных устройств ввода.2
GDK предоставляет графический контекст и графические примитивы, удобные для прорисовки простых объектов и вывода изображений на экран. Так как Cairo предоставляет систему отрисовки с большими возможностями, GDK содержит перехватчики для использования контекста Cairo внутри GDK.
GDK позволяет использовать события клавиатуры, мыши и других устройств ввода, вместо использования высокоуровневых сигналов GTK+. Также GDK предоставляет доступ к низкоуровневым процедурам перетаскивания и работы с данными системного буфера обмена. При реализации собственных элементов управления, возможно, понадобится этот функционал для реализации корректного взаимодействия с элементами интерфейса.
GDK содержит и другой функционал, необходимый для реализации полноценного графического пакета, например GTK+. Так как GDK выступает в роли уровня абстракции платформы, позволяя GTK+ работать в различных средах, он обеспечивает API для всего системного функционала, необходимого GTK+, например получение информации о множественных дисплеях, разрешении экрана и глубине цвета, цветовых картах и курсорах.
Необходимость в использовании GDK возникает, если есть потребность в низкоуровневом доступе к слою, находящемуся под оконной системой, включая низкоуровневый доступ к событиям, окнам и буферу обмена. Использование GDK для таких задач гарантирует переносимость кода и интеграцию с остальной частью кода, использующего GTK+. В основном, не следует использовать примитивные процедуры отрисовки из GDK, вместо этого следует использовать расширенный функционал Cairo.
Для получения более полной информации посетите веб-сайт gtkmm.
3.1.5 Cairo
Cairo — это библиотека двумерной графики с разветвлённым API для отрисовки векторной графики, составления изображений и отображения сглаженного текста. Cairo поддерживает множество систем вывода, включая X Window System, Microsoft Windows и буферы изображений, позволяя составлять переносимый код для отрисовки графики на различных устройствах вывода.
Модель прорисовки Cairo похожа на модели PostScript и PDF. API Cairo работает с такими графическими операциями, как создание и заполнение кубических кривых Безье, создание изображений и афинные преобразования. Эти векторные операция позволяют выводить качественную сглаженную графику без работы с графикой на уровне пикселов в коде приложения.
Богатая модель отрисовки Cairo позволяет выводить качественную графику на разные устройства вывода. Можно использовать одинаковый API как для вывода прекрасной графики и текста на экран, так и для создания изображений или создания вывода, пригодного для печати.
Cairo необходимо использовать в приложении при отрисовке графики помимо виджетов, предоставляемых GTK+. Большая часть механизмов отрисовки внутри GTK+ реализована с помощью Cairo. Использование Cairo для пользовательской графики позволит приложениям выводить высококачественную, сглаженную и независимую от разрешения графику.
За дополнительной информацией о Cairo обратитесь к руководству Cairo: A Vector Graphics Library.
Pango используется для решения различных задач работы со шрифтами и прорисовки. На большинстве систем GNOME Pango использует библиотеки FreeType, fontconfig и Cairo для доступа к шрифтам и прорисовки текста. На других системах Pango использует специфичные шрифтовые механизмы: Uniscribe на Microsoft Windows и ATSUI на MacOS.
GDK работает на разных платформах, включая the X Window System, Microsoft Windows, DirectFB и Quartz. Независимо от того на какой платформе работает GDK, он имеет стабильный программный интерфейс, позволяя GTK+ и приложениям, написанным с использованием GTK+, без модификации работать на разных платформах.