Доступен графический тулкит 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 для прямого вывода напрямую через композитный сервер. Повышена эффективность взаимодействия с композитным сервером.

    CFD0C5CECEC5D4_1725869907.png

  • В виджет 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