В GTK 4 будет переработан бэкенд, отображающий интерфейс через web-браузер

Александр Ларсон (Alexander Larsson), разработчик Flatpak и активный участник проекта GNOME, рассказал о грядущих изменениях в развиваемом им GDK-бэкенде Broadway для отрисовки вывода библиотеки GTK в окне web-браузера (например, данный бэкенд применяется в LibreOffice Online для совместной удалённой работы с офисным пакетом через Web).

В GTK 4 существенно изменились методы отрисовки и вместо вывода в буфер теперь применяется модель на основе узлов отрисовки (render nodes), при которой вывод компонуется в форме дерева высокоуровневых операций, эффективно обрабатываемых GPU при помощи OpenGL и Vulkan. Broadway не вписывается в подобную модель так как манипулирует готовыми битмапами в формате PNG — содержимое передаётся клиенту в виде копий слоев и блоков, описывающих изменения между изображениями.

Как вариант можно было задействовать бэкенд программной отрисовки для вывода в буфер и затем использовать содержимое этого буфера в качестве исходных данных для Broadway. Но данным способ выглядит не оптимально и вместо передачи готовой картинки лучше попытаться заставить браузер обрабатывать узлы отрисовки. Так как многие элементы интерфейса в GTK определены при помощи CSS, а модель вывода на основе узлов отрисовки очень близка к модели отрисовки в CSS, напрашивается идея использовать CSS в качестве операторов вывода на стороне браузера.

В качестве эксперимента подготовлен прототип, преобразующий узлы отрисовки в DOM-узлы со стилями CSS для вывода интерфейса в браузере. Каждое новое состояние экрана обрабатывается как изменение DOM-дерева относительно прошлого состояния, что позволяет сократить размер передаваемых удалённому клиенту данных. 3D-преобразования и графические эффекты можно реализовать через CSS-свойство transform.

0_1553891017.png

©  OpenNet