Введение

Библиотека программного обеспечения

GDK (GIMP Drawing Kit) — это библиотека, выступающая в качестве обертки для функций низкого уровня, предоставляемых базовыми оконными и графическими системами. GDK располагается между сервером отображения и библиотекой GTK, обеспечивая базовую отрисовку, такую как рисование примитивов, растровую графику (растровые изображения), курсоры, шрифты, а также обработку событий окна и функциональность перетаскивания. Как и GTK Scene Graph Kit (GSK), GDK является частью GTK и распространяется по лицензии GNU Lesser General Public License (LGPL).

Архитектура программного обеспечения

GTK реализован поверх слоя абстракции под названием GDK, освобождая GTK от задач низкого уровня, таких как сбор входных данных, перетаскивание и преобразование форматов пикселей. GDK — это промежуточный слой, отделяющий GTK от особенностей оконной системы. GDK является важной частью переносимости GTK. Поскольку GLib уже предоставляет низкоуровневую кроссплатформенную функциональность, для запуска GTK на других платформах необходимо лишь портировать GDK на графический уровень базовой операционной системы. Таким образом, порты GDK в Windows API и Quartz обеспечивают работу GTK-приложений в Windows и macOS соответственно. Начиная с GTK+ 2.8, GDK поддерживает Cairo, который следует использовать с GTK+ 3 вместо функций рисования GDK. GDK — это промежуточный слой, изолирующий GTK от деталей оконной системы. GDK представляет собой тонкую обертку вокруг Xlib. Система X Window поставляется с библиотекой низкого уровня под названием Xlib. Практически каждая функция в GDK является очень тонкой оберткой вокруг соответствующей функции Xlib, но часть сложности (и функциональности) Xlib скрыта для упрощения программирования и облегчения портирования GDK в другие оконные системы, такие как Wayland или Microsoft Windows. Скрытая функциональность Xlib редко представляет интерес для разработчиков приложений; например, многие функции, используемые исключительно менеджерами окон, не представлены в GDK. GDK позволяет выполнять задачи низкого уровня, например, "скопировать эту растровую карту на экран". GDK предоставляет уровень, который гораздо более портативен, чем, например, протокол X, не теряя при этом доступности низкого уровня, обеспечиваемой такими системами, как X. Настоящая сила этой абстракции заключается в том, что при выборе ее использования вместо, скажем, X, ваше программное обеспечение автоматически будет отображаться на Linux Framebuffer и Windows. Поддержка OpenGL (или OpenGL ES) в GDK облегчает более тонкий контроль над графическим конвейером; OpenGL хорошо подходит для композитинга текстурированных данных, но совершенно непригоден для рисования.

GdkFrameClock (Гарантия времени)

GdkFrameClock был добавлен в GTK 3.8.

Несмотря на то, что приложения GTK по-прежнему работают на основе главного цикла (см. цикл событий Glib), то есть приложение большую часть времени простаивает внутри этого цикла, ожидая наступления какого-либо события и вызывая соответствующую подпрограмму при его возникновении, GdkFrameClock добавляет дополнительный механизм, который посылает приложению "сигнал". Он сообщает приложению, когда следует обновлять и перерисовывать окно. Частота этих сигналов может быть синхронизирована с частотой обновления монитора.

gdk-pixbuf

gdk pixbuf – это набор инструментов для загрузки изображений и манипулирования буфером пикселей. Библиотека предоставляет средства загрузки и сохранения изображений, быстрого масштабирования и компоновки пиксельных буферов, простую загрузку анимации (например, анимированных GIF-файлов) и рендеринг буфера изображений libart в экземпляр GdkDrawable. gdk pixbuf имеет достаточно большой API. Фундаментальной структурой в библиотеке gdk pixbuf является GdkPixbuf – закрытая, непрозрачная структура данных, отражающая многие концепции, поддерживаемые ArtPixBuf. Фактически, большинство полей частных данных GdkPixbuf имеют те же имена и типы данных, что и соответствующие поля в ArtPixBuf. Это сходство восходит к ранним дням, когда gdk pixbuf был оберткой над libart. С тех пор зависимость от libart была устранена, а gdk pixbuf был включен в кодовую базу GTK+ 2.0. Таким образом, существование gdk pixbuf как автономной библиотеки было ограничено выпуском GNOME 1. С выпуском GTK+ 2.22 23 сентября 2010 года gdk pixbuf вновь стал автономной библиотекой, после того как поставлялся в составе GTK+ начиная с gtk+ 2.0. Это было сделано в преддверии перехода на GTK+ 3.

https://git.gnome.org/browse/gdk-pixbuf/

Первым автономным релизом был 2.22 21 сентября 2010 года, а его разработка началась с версии 2.21.3 23 июня 2010 года. Последний релиз gdk pixbuf – gdk pixbuf 2.36.11 от 2 октября 2017 года. Разработка версии 3.36 началась с 3.35.1 26 апреля 2016 года.

История

GDK изначально разрабатывался на X Window System для растрового графического редактора GIMP.