Выпуск графического тулкита GTK 4.0

Материал из Викиновостей, свободного источника новостей

16 декабря 2020 года

После четырёх лет разработки увидел свет релиз многоплатформенного тулкита для создания графического интерфейса пользователя - 4.0 (Архивная копия от 9 марта 2001 на Wayback Machine). Ветка GTK 4 развивается в рамках нового процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK.

Одновременно объявлено о прекращении поддержки ветки GTK 2, через неколько дней для которой планируется опубликовать последний релиз. Поддержка ветки GTK 3 в обозримом будущем будет сохранена.

Из наиболее существенных изменений (Архивная копия от 18 сентября 2020 на Wayback Machine) в GTK 4 можно отметить:

  • Метод раскладки элементов на основе ограничений ( constraint layout), при котором расположение и размер дочерних элементов определяется, отталкиваясь от расстояния до границ и размера других элементов.
  • Модуль отрисовки на базе графического API Vulkan, в котором реализованы шейдеры для многих ресурсоёмких элементов CSS, применяемых в виджетах GTK.
  • Интеграция GSK (GTK Scene Kit) c возможностями отрисовки графических сцен через OpenGL и Vulkan.
  • Пересмотрена организация отрисовки - вместо вывода в буфер теперь применяется модель на основе узлов отрисовки (render nodes), при которой вывод компонуется в форме дерева высокоуровневых операций, эффективно обрабатываемых GPU при помощи OpenGL и Vulkan.
  • Средства для гибкой обработки изменения фокуса ввода.
  • Модернизированная модель доставки событий, которая позволяет обойтись без subwindow при маршрутизации событий ввода. Необходимость реализации новой модели связана с более активным использованием анимационных эффектов, отрисовка которых должна производиться без смены раскладки видимых элементов и, соответственно, без subwindow.
  • Переработан API GDK с оглядкой на использование протокола Wayland и связанных с ним концепций. Завязанные на X11 и Wayland возможности перемещены в отдельные бэкенды (Архивная копия от 9 августа 2020 на Wayback Machine).
  • Проведена большая чистка API, в том числе удалены классы GtkMenu, GtkMenuBar и GtkToolbar, вместо которых предложен GMenu и варианты на основе всплывающих меню (popover).
  • В GtkTextView и другие виджеты ввода встроен стек для отката изменений (undo).
  • Добавлен новый класс GtkNative для виджетов, имеющих собственную поверхность отображения и способных работать отдельно на первом уровне, без привязки к родительским виджетам.
  • Добавлены новые виджеты, включая GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, а также виджет для показа Emoji.
  • Для разработки виджетов представлен новый объект GtkLayoutManager с реализацией системы управления раскладкой элементов в зависимости от размера видимой области. GtkLayoutManager пришёл на смену дочерним свойствам в контейнерах GTK, таким как GtkBox и GtkGrid.
  • Упрощена обработка событий, которые теперь используются только для ввода. Остальные события заменены на отдельные сигналы, например, вместо событий вывода предложен сигнал "GdkSurface::render", вместо событий настройки - "GdkSurface::size-changed".
  • Добавлен новый уровень абстракции GdkPaintable, представляющий объекты, которые можно нарисовать где угодно с любым размером, без необходимости выполнения сортировки layout-слоёв.
  • Добавлены новые средства для воспроизведения анимации и мультимедийного контента, в том числе видео в файлах webm и потокового вещания. Предложены две реализации API GtkMediaFile (Архивная копия от 6 марта 2021 на Wayback Machine), на базе gstreamer и ffmpeg, а также готовый виджет GtkVideo (Архивная копия от 6 марта 2021 на Wayback Machine) с элментами управления для просмотра видео.
  • Переписан бэкенд Broadway, позволяющий отрисовывать вывод библиотеки GTK в окне web-браузера.
  • Переработан API, связанный с выполнением операций Drag-and-Drop, в том числе предложены раздельные объекты GdkDrag и GdkDrop.
  • Удалена старая реализация Аccessibility API для людей с ограниченными возможностями, вместо которой предложен новый вариант на базе спецификации ARIA и виджета GtkAccessible.
  • Добавлена поддержка редактируемых меток (GtkEditableLabel).
  • Предложены новые модели списков для отображения закладок (GtkBookmarkList), строк (GtkStringList) и блоков выбора (GtkBitset).
  • В виджете GtkTreeView реализована возможность редактирования ячеек.
  • В GtkGridView и GtkListView улучшена реализация прокрутки, добавлена поддержка автопрокрутки и автораскрытия.
  • В GtkFilterListModel и GtkSortListModel добавлена поддержка инкрементальной прокрутки и фильтрации. В GDK обеспечено сохранение истории прокрутки, проведена чистка API GdkDevice, прекращено разделение устройств на master и slave.
  • Добавлен новый GDK-бэкенд для macOS.
  • Для Windows предложен новый GDK-бэкенд отрисовки на базе ANGLE (Архивная копия от 13 апреля 2019 на Wayback Machine), прослойки для трансляции вызовов OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan.

Источники[править]


Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Выпуск графического тулкита GTK 4.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.