GDK - GDK
Упрощенная программная архитектура GTK | |
Оригинальный автор (ы) | Авторы GIMP |
---|---|
Разработчики) | Проект GNOME |
Репозиторий | |
Написано в | C |
Операционная система | Linux, macOS, Майкрософт Виндоус |
Платформа | X11, Wayland, другие[который? ] |
Тип | Библиотека программного обеспечения |
Лицензия | Стандартная общественная лицензия ограниченного применения GNU (LGPL) |
Интернет сайт | разработчик |
GDK (GIMP Drawing Kit) - это библиотека что действует как обертка вокруг низкоуровневых функций, предоставляемых базовыми оконными и графическими системами. GDK находится между сервер отображения и GTK библиотека, обработка базовых рендеринг например, рисование примитивов, растровая графика (растровые изображения), курсоры, шрифты, а также оконные события и перетаскивание функциональность.
Нравиться Комплект графа сцены GTK (GSK), GDK является частью GTK и лицензируется на условиях Стандартная общественная лицензия ограниченного применения GNU (LGPL).
Архитектура программного обеспечения
GTK реализован поверх уровня абстракции под названием GDK, освобождая GTK от низкоуровневых проблем, таких как сбор входных данных, Перетащите и отпустите и преобразование формата пикселей. GDK - это промежуточный уровень, который отделяет GTK от деталей оконной системы.
GDK - важная часть переносимости GTK. Поскольку низкоуровневые кроссплатформенные функции уже предоставляются GLib, все, что нужно для работы GTK на других платформах, - это портировать GDK на базовый Операционная система графический слой. Следовательно, GDK портирует на Windows API и Кварцевый позволяют приложениям GTK работать на Windows и macOS, соответственно.
Начиная с GTK + 2.8, GDK поддерживает Каир которые следует использовать с GTK + 3 вместо функций рисования GDK.[1]
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[2]
В то время как приложения GTK остаются управляемыми главным циклом (см. Цикл событий Glib ), что означает, что приложение большую часть времени простаивает в этом основном цикле и просто ждет, чтобы что-то произошло, а затем вызывает соответствующую подпрограмму, когда это происходит, GdkFrameClock добавляет дополнительный механизм, который дает «импульс» приложению. Он сообщает приложению, когда обновлять и перерисовывать окно.[3] Частоту ударов можно синхронизировать с частотой обновления монитора.
Комплект графа сцены GTK
В своей истории GDK содержал и был связан с несколькими разными Холсты.
Разработчики также рассматривали новые направления для библиотеки, включая удаление устаревших API компоненты и добавление интегрированного граф сцены (холст) система, аналогичная Беспорядок графическая библиотека, эффективно интегрирующая GTK с OpenGL и Вулкан.[4][5]
GTK + Scene Graph Kit (GSK) был выпущен как часть GTK + 3.90 в марте 2017 года. Это граф сцены и API рендеринга для GTK. GSK не интегрирован с GDK (который также является частью GTK), но хранится в собственном каталоге.
Оконные системы
GDK содержит бэкэнды для пары оконные системы, а именно X11 и Wayland протоколы, чтобы Кварцевый и GDI, и даже Протокол передачи гипертекста (HTTP) движок Broadway.
С выпуском GNOME 3.16 в марте 2015 года GDK получил экспериментальную серверную часть для Мир отображать протокол сервера.[8] Протокол сервера отображения Мир является продуктом Канонический для них Ubuntu дистрибутив Linux, который они намерены составить конкуренцию протоколу сервера отображения Wayland; пока это реализовано только в Ubuntu.
В настоящее время не существует серверной части для KMS.
Чтобы запустить приложение и заставить этот экземпляр использовать определенную оконную систему, вы указываете переменную GDK_BACKEND:GDK_BACKEND = путевой гном-калькулятор
GDK_BACKEND = Wayland CLUTTER_BACKEND = Wayland сыр
gdk-pixbuf
gdk-pixbuf - это набор инструментов для загрузки изображений и управления пиксельным буфером. Библиотека предоставляет средства загрузки и сохранения изображений, быстрое масштабирование и компоновку 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.x.
С выпуском GTK + 2.22 от 23 сентября 2010 года gdk-pixbuf был снова превращен в отдельную библиотеку после того, как он был доставлен как часть GTK +, начиная с gtk + 2.0. Это было сделано при подготовке к переходу на GTK + 3.
Первый автономный выпуск был 2.22 21 сентября 2010 г. его разработка началась с 2.21.3 на 23.06.2010.
Последний выпуск gdk-pixbuf: gdk-pixbuf 2.36.11 с 2017-окт-02. Разработка 3.36 началась с 3.35.1 on 2016-04-26.
История
GDK изначально разрабатывался на X Window System для GIMP редактор растровой графики.[9]
Смотрите также
Рекомендации
- ^ Переход с GTK + 2.x на GTK + 3 - Используйте cairo для рисования
- ^ "GdkFrameClock".
- ^ Ларссон, Александр (4 ноября 2013 г.). «Современная чертежная модель Gtk».
- ^ Блог Альберто Руиса
- ^ Предложение графа сцены Havoc Pennington
- ^ "Набор графических изображений GTK +". 2014-07-29.
- ^ «Графен». 2014-05-02.
- ^ "добавить экспериментальный бэкэнд для мира".
- ^ GIMP - Краткая (и древняя) история GIMP
внешняя ссылка
- Код GDK из выпуска GTK + 3.19.0
- Современная модель рисования Gtk - Александр Ларссон, 2013/11/04
- Обзор GTK и его библиотек - Проект GTK
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg