ГДК

Библиотека программного обеспечения
ГДК
Оригинальный автор(ы)Авторы GIMP
Разработчик(и)Проект GNOME
Репозиторий
  • gitlab.gnome.org/GNOME/gtk/tree/master/gdk
Написано вС
Операционная система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).

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

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. [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

GdkFrameClock был добавлен в GTK 3.8 [2]

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

Комплект графа сцены GTK

В своей истории GDK содержал и был связан с несколькими различными Canvas .

  • https://wiki.gnome.org/Attic/ProjectRidley/CanvasOverview
    • https://wiki.gnome.org/Attic/ProjectRidley/CanvasOverview/Canvases
  • https://wiki.gnome.org/Projects/GooCanvas

Разработчики также рассматривали новые направления для библиотеки, включая удаление устаревших компонентов 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

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.

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

Первый отдельный релиз версии 2.22 состоялся 21 сентября 2010 г., его разработка началась с версии 2.21.3 23 июня 2010 г.

История

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

Смотрите также

  • Беспорядок

Ссылки

  1. ^ Миграция с GTK+ 2.x на GTK+ 3 — использование cairo для рисования
  2. ^ "GdkFrameClock".
  3. ^ Ларссон, Александр (2013-11-04). «Современная модель рисования Gtk».
  4. ^ Блог Альберто Руиса
  5. ^ Предложение графа сцены Хавока Пеннингтона
  6. ^ "Комплект графа сцены GTK+". 2014-07-29.
  7. ^ "Графен". 2014-05-02.
  8. ^ "добавить экспериментальный бэкэнд для mir".
  9. ^ GIMP — Краткая (и древняя) история GIMP
  • Код GDK из релиза GTK+ 3.19.0
  • Современная модель рисования Gtk – Александр Ларссон, 2013/11/04
  • Обзор GTK и его библиотек Архивировано 12.03.2019 на Wayback Machine - Проект GTK
  • https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg
Взято с "https://en.wikipedia.org/w/index.php?title=GDK&oldid=1247695433"