ГДК
![]() Упрощенная программная архитектура GTK | |
Оригинальный автор(ы) | авторы GIMP |
---|---|
Разработчик(и) | Проект GNOME |
Репозиторий | |
Написано в | С |
Операционная система | Linux , macOS , Microsoft Windows |
Платформа | X11 , Вейланд , Кварц и GDI |
Тип | Библиотека программного обеспечения |
Лицензия | Меньшая стандартная общественная лицензия GNU (LGPL) |
Веб-сайт | разработчик |
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 поставляется с библиотекой низкого уровня под названием Xlib . Почти каждая функция в GDK представляет собой очень тонкую оболочку соответствующей функции Xlib; но некоторая сложность (и функциональность) Xlib скрыта, чтобы упростить программирование и облегчить портирование GDK на другие оконные системы, такие как Wayland или Microsoft Windows. Скрытая функциональность Xlib редко будет интересна программистам приложений; например, многие функции, используемые исключительно оконными менеджерами, не представлены в GDK.
GDK позволяет вам выполнять низкоуровневые действия, например, « перенести это растровое изображение на экран».
GDK обеспечивает уровень, который гораздо более портативен, чем, скажем, протокол X, не жертвуя при этом ни одной из низкоуровневых возможностей доступа, которые обеспечивают такие системы, как X. Истинная сила этой абстракции заключается в том, что если вы решите использовать ее, а не, скажем, X, ваше программное обеспечение будет автоматически отображаться в Linux Framebuffer и Windows.
Наличие поддержки OpenGL (или OpenGL ES ) в GDK облегчает немного лучший контроль над графическим конвейером ; OpenGL хорошо подходит для компоновки текстурированных данных, но совершенно непригоден для рисования.
GdkРамкаЧасы
[ редактировать ]GdkFrameClock был добавлен в GTK 3.8. [ 2 ]
Хотя приложения GTK остаются управляемыми основным циклом (см. цикл событий Glib ), то есть большую часть времени приложение бездействует внутри этого основного цикла и просто ждет, пока что-то произойдет, а затем вызывает соответствующую подпрограмму, когда это произойдет, GdkFrameClock добавляет дополнительный механизм, это дает «импульс» приложению. Он сообщает приложению, когда следует обновить и перерисовать окно. [ 3 ] Частоту ударов можно синхронизировать с частотой обновления монитора.
Набор графов сцены GTK
[ редактировать ]За свою историю GDK содержал и связывал с парой разных Canvases .
Разработчики также рассматривали новые направления для библиотеки, включая удаление устаревших компонентов API и добавление интегрированной системы графа сцены (холста) , аналогичной графической библиотеке Clutter , эффективно интегрирующей GTK с OpenGL и Vulkan . [ 4 ] [ 5 ]
- Набор графов сцены GTK (GSK) [ 6 ] [ 7 ]
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 для дистрибутива Linux Ubuntu , который они намерены конкурировать с протоколом сервера отображения Wayland; пока что он реализован только в Ubuntu.
не существует серверной части В настоящее время для KMS . [ нужна ссылка ]
Чтобы запустить приложение и заставить этот его экземпляр использовать определенную оконную систему, вы указываете переменную GDK_BACKEND :
GDK_BACKEND=wayland gnome-calculator
GDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese
gdk-pixbuf
[ редактировать ]gdk-pixbuf — это набор инструментов для загрузки изображений и манипуляций с пиксельным буфером. Библиотека предоставляет средства загрузки и сохранения изображений, быстрое масштабирование и компоновку pixbufs, простую загрузку анимации (т. е. анимированных 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.
Первым самостоятельным выпуском была версия 2.22, выпущенная 21 сентября 2010 г., ее разработка началась с версии 2.21.3 от 23 июня 2010 г.
История
[ редактировать ]GDK изначально был разработан на базе X Window System GIMP для редактора растровой графики . [ 9 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Переход с GTK+ 2.x на GTK+ 3 — используйте cairo для рисования.
- ^ «GdkFrameClock» .
- ^ Ларссон, Александр (04 ноября 2013 г.). «Современная модель рисования Gtk» .
- ^ Блог Альберто Руиса
- ^ Предложение Хэвока Пеннингтона по графу сцены
- ^ «Набор графов сцен GTK+» . 29 июля 2014 г.
- ^ «Графен» . 2 мая 2014 г.
- ^ «добавить экспериментальный бэкэнд для mir» .
- ^ GIMP - Краткая (и древняя) история GIMP
Внешние ссылки
[ редактировать ]- Код GDK из версии GTK+ 3.19.0
- Современная модель рисования Gtk – Александр Ларссон, 4 ноября 2013 г.
- Обзор GTK и его библиотек. Архивировано 12 марта 2019 г. на Wayback Machine - Проект GTK.
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg