Доступен графический тулкит GTK 4.16
После шести месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя — GTK 4.16.0. GTK 4 развивается в рамках процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK.
Среди наиболее заметных улучшений в GTK 4.16:
Добавлена настройка gtk-font-rendering, предоставляющая гибкие высокоуровневые возможности для управления отрисовкой шрифтов. Для использования низкоуровневых настроек шрифтов следует выставить параметр gtk-font-rendering в значение 'manual'.
В библиотеке GSK (GTK Scene Kit), предоставляющей возможности отрисовки графических сцен через OpenGL и Vulkan, по умолчанию для отрисовки в окружениях на базе протокола Wayland задействован движок отрисовки «vulkan», напрямую использующий графический API Vulkan. В остальных случаях продолжает использоваться движок отрисовки «ngl», предлагающий реализацию OpenGL, работающую поверх API Vulkan. Для изменения движка можно использовать переменную окружения «GSK_RENDERER». Так как движки «vulkan» и «ngl» по иному взаимодействуют с графическими драйверами, для стабильной работы с ними рекомендуется использовать последний релиз Mesa 24.2.
- Среди других изменений в библиотеке GSK:
- Реализована техника оптимизации «occlusion culling», исключающая отрисовку объектов, скрытых за другими непрозрачными объектами или находящимися вне поля зрения.
- В процессе композитинга обеспечен учёт информации о цветовом пространстве.
- Улучшено кэширование глифов и текстур.
- Реализована поддержка плиточного наложения (tiling) больших текстур для создания бесшовной поверхности путём повторения текстуры.
- Улучшена отрисовка теней.
Добавлена возможность привлечения средств аппаратного ускорения для обработки преобразованных текстур, например, для вывода повёрнутого содержимого на экран.
- Улучшено использование механизмов аппаратного ускорения на системах с композитным менеджером kwin.
- Добавлена отладочная опция «GDK_DEBUG=linear» для включения режима линейного композитинга. Улучшено ведение лога при использовании опций «GDK_DEBUG=offload» и «GSK_DEBUG=renderer».
При работе в окружениях на базе протокола Wayland и композитного менеджера kwin реализована возможность использования расширения протокола (color-management) для управление цветом. При выводе закреплённых диалогов использовано Wayland-расширение xdg-dialog. При композитинге задействована шестая версия объекта wl_compositor. Разрешено использование dmabuf в процессе аппаратного ускорения обработки текстур для OpenGL.
- Улучшения в библиотеке GDK, предоставляющей прослойку между GTK и графической подсистемой:
Существенно расширены возможности для работы с цветовыми пространствами. Обеспечена поддержка цветовых пространств srgb, srgb-linear, rec2100-pq и rec2100-linear, и проведена подготовка к реализации поддержки цветовых пространств для HDR. Предложен объект GdkColorState, предоставляющий информацию об интерпретации цветов, которую можно использовать для преобразования одного цветового пространства в другое. Для создания объектов с информацией о цветовых пространствах добавлен объект Gdk.CicpParams. В объект GdkTexture, а также в объекты создания, загрузки и преобразования текстур добавлена возможность использования цветовых пространств.
Реализован новый API для работы с курсором, основанный на callback-вызовах.
- Реализована возможность выполнения операций MIP-текстурирования (MipMap, создание уменьшенных версий текстур, используемых при удалении объекта от камеры) силами CPU.
Для преобразования цветов и MIP-текстурирования задействован пул потоков (thread pool) .
Добавлена поддержка переменной окружения XDG_ACTIVATION_TOKEN с токеном активации для протокола xdg-activation-v1, при помощи которого одно приложение может переключить фокус на другое.
Добавлен класс GdkMemoryTextureBuilder, позволяющий формировать объекты с текстурами (GdkTexture) из данных, хранимых в оперативной памяти.
Расширены возможности по созданию тем оформления на базе CSS. Добавлена поддержка переменных и пользовательских свойств. Реализованы CSS-функции color (), oklab (), color-mix (), а также математические функции. Предоставлена возможность использования относительного определения цветов (изменения абсолютных цветов функциями), а также задания уровня прозрачности в процентах. При работе с цветами, рамками, тенями и текстом обеспечен учёт информации о цветовых пространствах.
В утилиту rendernode-tool добавлены команды «extract» для загрузки данных по URL и image для манипуляции текстурами. Реализована возможность генерации файлов в формате PDF.
В интерфейс gtk4-node-editor добавлена операция 'Paste as node'.
- В виджет выбора файлов GtkFileChooserWidget добавлена поддержка комбинации Ctrl-Shift-N для создания каталогов.
В виджете создания всплывающих окон GtkPopover улучшена обработка изменения размера и позиции.
В виджет GtkGraphicsOffload, используемый для прямой отправки контента, такого как видео, через композитный менеджер минуя рендер GSK, добавлено свойство «black-background» для вывода чёрного фона.
В виджет GtkGLArea, предназначенном для вывода с использованием OpenGL, добавлена возможность формирования текстур в dmabuf, что позволяет использовать виджет GtkGraphicsOffload для прямого вывода напрямую через композитный сервер. Повышена эффективность взаимодействия с композитным сервером.
В виджет GtkTextView добавлена поддержка вывода текста с тенью и реализована возможность использования уведомлений GtkTextBufferCommitNotify.
В виджет GtkCheckButton добавлена поддержка группировки стиля кнопок.
Расширены возможности отладки. В интерфейс инспектирования добавлена информация о цветовых пространствах, а также сведения о разрешении монитора. Переменная окружения GDK_DEBUG разделена на GDK_DEBUG и GDK_DISABLE. Добавлены режимы GDK_DISABLE=color-mgmt и GDK_DISABLE=offload. Добавлен режим GTK_DEBUG=css для вывода предупреждений при использовании устаревших возможностей CSS. Добавлены клавиатурные комбинации Super-r для записи лога событий и Super-c для создания скриншота.
Подняты требования к зависимостям и сборочному окружению. Для сборки теперь необходим компилятор с поддержкой C11 и как минимум версии gstreamer 1.24, pango 1.52 и cairo 1.18. Прекращена поддержка устаревших сборочных режимов gtk_doc (следует использовать documentation), update_screenshots (→ screenshots), demo-profile (→ profile) и demos (→ build-demos).
- Для macOS 10.15+ реализован интерфейс определения цвета пикселей на экране (color picker).
Для Windows включён режим инкрементального рендеринга с использованием API WGL.
Источник: http://www.opennet.ru/opennews/art.shtml? num=61831
© OpenNet