ГДК — GDK
Эта статья о библиотеке графической системы. Комплекты для разработки видеоигр см. В разделе Комплект для разработки игр . Чтобы узнать о языке, см. Язык Гаданг .
GDK ( GIMP Drawing Kit) — это библиотека, которая действует как оболочка для низкоуровневых функций, предоставляемых базовыми оконными и графическими системами. GDK находится между сервером отображения и библиотекой GTK , обрабатывая базовую визуализацию, такую как примитивы рисования, растровую графику (растровые изображения), курсоры , шрифты , а также события окна и функции перетаскивания .
Как и GTK Scene Graph Kit (GSK), GDK является частью GTK и находится под лицензией GNU Lesser General Public License (LGPL).
Архитектура программного обеспечения
GDK содержит серверные части для X11 , Wayland , Broadway ( HTTP ), Quartz и GDI и полагается на Cairo для рендеринга. Его новый граф сцены (холст) находится в стадии разработки, его появление должно предвещать появление GTK 4.0.
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 добавляет дополнительный механизм, это дает «импульс» приложению. Он сообщает приложению, когда обновлять и перекрашивать окно. Частоту ударов можно синхронизировать с частотой обновления монитора.
Комплект графа сцены GTK
В своей истории GDK содержал и связывался с парой разных холстов .
Разработчики также рассматривали новые направления для библиотеки, включая удаление устаревших компонентов API и добавление интегрированной системы графов сцены (холста) , аналогичной графической библиотеке Clutter , эффективно интегрирующей GTK с OpenGL и Vulkan .
GTK + Scene Graph Kit (GSK) был выпущен как часть GTK + 3.90 в марте 2017 года. Это граф сцены и API рендеринга для GTK. GSK не интегрируется с GDK (который также является частью GTK), но хранится в собственном каталоге.
Оконные системы
GDK содержит серверные части для пары оконных систем , а именно для протоколов X11 и Wayland , для Quartz и GDI и даже для механизма Broadway протокола передачи гипертекста (HTTP).
С выпуском GNOME 3.16 в марте 2015 года GDK получил экспериментальный бэкэнд для протокола сервера отображения Mir . Протокол сервера дисплея Mir — это продукт компании Canonical для своего дистрибутива Linux Ubuntu , который они намереваются составить конкуренцию протоколу сервера дисплея Wayland; пока это реализовано только в Ubuntu.
В настоящее время для KMS не существует серверной части .
Чтобы запустить приложение и заставить этот его экземпляр использовать определенную оконную систему, вы указываете переменную GDK_BACKEND :
GDK_BACKEND=wayland gnome-calculator
GDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese
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 июня 2010 года .
Последним выпуском gdk-pixbuf является gdk-pixbuf 2.36.11 от 2 октября 2017 г. Разработка 3.36 началась с версии 3.35.1 26 апреля 2016 года .
История
GDK был первоначально разработан в системе X Window для редактора растровой графики GIMP .
GDK — GDK
Эта статья о библиотеке графической системы. О наборах для разработки видеоигр см. Комплект для разработки игр. Для языка см. Язык гаданг.
GDK (GIMP Drawing Kit) — это библиотека что действует как обертка вокруг низкоуровневых функций, предоставляемых базовыми оконными и графическими системами. GDK находится между сервер отображения и GTK библиотека, обработка базовых рендеринг например, рисование примитивов, растровая графика (растровые изображения), курсоры, шрифты, а также оконные события и перетаскивание функциональность.
Архитектура программного обеспечения
GDK содержит серверные части для X11, Wayland, Бродвей (HTTP ), Кварцевый и GDI и полагается на Каир для рендеринга. Это новое граф сцены (холст) находится в стадии разработки, его появление должно предвещать появление GTK 4.0.
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.