Главная | IT | Доступен графический тулкит GTK 4.16

Доступен графический тулкит 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.

Источник