Оригинальный автор(ы) | Авторы GIMP |
---|---|
Разработчик(и) | Проект GNOME |
Репозиторий |
|
Написано в | С |
Операционная система | Linux , macOS , Microsoft Windows |
Платформа | X11 , Wayland , Quartz и GDI |
Тип | Библиотека программного обеспечения |
Лицензия | Стандартная общественная лицензия ограниченного применения GNU (LGPL) |
Веб-сайт | Developer.gnome.org/gdk3/stable/ |
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. [1]
GDK — это промежуточный слой, который изолирует GTK от деталей оконной системы . GDK — это тонкая обертка вокруг Xlib . X Window System поставляется с низкоуровневой библиотекой под названием Xlib . Почти каждая функция в GDK — это очень тонкая обертка вокруг соответствующей функции Xlib; но часть сложности (и функциональности) Xlib скрыта, чтобы упростить программирование и сделать GDK более легким для переноса на другие оконные системы, такие как Wayland или Microsoft Windows. Скрытая функциональность Xlib редко будет представлять интерес для прикладных программистов; например, многие функции, используемые исключительно оконными менеджерами, не представлены в GDK.
GDK позволяет выполнять низкоуровневые действия, например, « скопировать эту пиксельную карту на экран».
GDK предоставляет слой, который гораздо более переносим, чем, скажем, протокол X, не жертвуя при этом какой-либо низкоуровневой доступностью, которую предоставляют такие системы, как X. Истинная сила этой абстракции в том, что если вы решите использовать его вместо, скажем, X, ваше программное обеспечение будет автоматически рендериться на Linux Framebuffer и Windows.
Поддержка OpenGL (или OpenGL ES ) в GDK обеспечивает немного лучший контроль над графическим конвейером ; OpenGL хорошо подходит для компоновки текстурированных данных, но совершенно не подходит для рисования.
GdkFrameClock был добавлен в GTK 3.8 [2]
В то время как приложения GTK остаются управляемыми основным циклом (ср. цикл событий Glib ), то есть приложение большую часть времени простаивает внутри этого основного цикла и просто ждет, пока что-то произойдет, а затем вызывает соответствующую подпрограмму, когда это происходит, GdkFrameClock добавляет дополнительный механизм, который дает «импульс» приложению. Он сообщает приложению, когда обновлять и перерисовывать окно. [3] Частота ударов может быть синхронизирована с частотой обновления монитора.
В своей истории GDK содержал и был связан с несколькими различными Canvas .
Разработчики также рассматривали новые направления для библиотеки, включая удаление устаревших компонентов API и добавление интегрированной системы графа сцены (canvas) , аналогичной графической библиотеке Clutter, эффективно интегрирующей GTK с OpenGL и Vulkan . [4] [5]
GTK+ Scene Graph Kit (GSK) был выпущен как часть GTK+ 3.90 в марте 2017 года. Это API графа сцены и рендеринга для GTK. GSK не был дополнительно интегрирован с GDK (который также является частью GTK), но хранится в своем собственном каталоге.
GDK содержит бэкэнды для нескольких систем управления окнами , а именно для протоколов X11 и Wayland , Quartz и GDI , и даже для движка протокола передачи гипертекста (HTTP) Broadway. [ необходима ссылка ]
С выпуском GNOME 3.16 в марте 2015 года GDK получил экспериментальный бэкэнд для протокола сервера отображения Mir . [8] Протокол сервера отображения Mir — это продукт Canonical для их дистрибутива Ubuntu Linux, с помощью которого они намерены конкурировать с протоколом сервера отображения Wayland; на данный момент он реализован только в Ubuntu.
В настоящее время для KMS не существует бэкэнда . [ необходима цитата ]
Чтобы запустить приложение и заставить этот его экземпляр использовать определенную оконную систему, необходимо указать переменную GDK_BACKEND :GDK_BACKEND=wayland gnome-calculator
GDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese
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 .
С выпуском GTK+ 2.22 2010-09-23 gdk-pixbuf был превращен обратно в отдельную библиотеку, после того как поставлялся как часть GTK+ с gtk+ 2.0. Это было сделано в рамках подготовки к переходу на GTK+ 3.
Первый отдельный релиз версии 2.22 состоялся 21 сентября 2010 г., его разработка началась с версии 2.21.3 23 июня 2010 г.
GDK изначально был разработан в X Window System для редактора растровой графики GIMP . [9]