Представлена новая стабильная ветка графической библиотеки Clutter - 1.18.0, API и ABI которой обратно совместимы с прошлыми версиями библиотеки. Функции библиотеки Clutter ориентированы на активное использование анимации и визуальных эффектов, что позволяет применять при создании обычных GUI приложений методы, используемые при разработке игр. При этом сама библиотека напоминает игровой движок, в котором максимальное число операций выносится на плечи GPU.
Clutter активно используется для обеспечения работы пользовательского интерфейса в проекте GNOME 3. Одним из основных преимуществ Clutter является то, что для создания сложного интерфейса пользователя требуется написание минимума кода. Библиотека может работать поверх OpenGL, GLib, GObject, GLX, SDL, WGL, Quartz, EGL, Pango и Wayland. Имеются биндинги для языков Perl, Python, C#, C++, Vala и Ruby. Исходные тексты распространяются в рамках лицензии LGPLv 2.1.
Параллельно развивается серия интеграционных модулей, среди которых:
- Clutter-GTK - для интеграции с GObject и предоставления API в стиле GTK+;
- Clutter-Qt для интеграции возможностей Clutter в Qt приложения;
- Clutter-GStreamer - для отображения видеопотоков в виде элементов холста Clutter;
- Clutter-Box2D и Clutter-Bullet - для симулирования физических процессов, таких как гравитация, инерция или реалистичные столкновения;
- Clutter-MozEmbed и Clutter-WebKit - для рендеринга web-страниц через движок Mozilla Gecko или WebKit.
Из новшеств Clutter 1.18.0 можно отметить:
- Добавлен новый API для написания композитных менеджеров для Wayland. Реализованы средства для интеграции с logind и KMS, обеспечивающие частичную перерисовку через клиентов Wayland и напрямую через KMS. Обеспечена поддержка отображения курсора в ClutterStage при использовании бэкенда Wayland;
- Обеспечено автоматическое масштабирование отображаемых ресурсов на экранах с высоким DPI. В ClutterCanvas добавлена поддержка указания коэффициента масштабирования при создании поврехностей Cairo;
- Улучшена реализация класса GestureAction, предназначенного для организации выполнения действий при распознавании управляющих жестов. Обеспечена возможность переопределения области начала касания (генерация сигнала gesture-begin) и порога чувствительности (threshold-trigger-edge) во внешних субклассах и стороннем коде, что позволяет менять поведение обработчиков жестов и создавать собственные реализации GestureAction;
- Улучшена работа бэкенда ввода через evdev. Вместо libevdev и прямого обращения к evdev API теперь используется прослойка libinput, что позволяет обеспечить единое с другими тулкитами поведение при организации ввода;
- Улучшена обработка ввода для X11, устранены проблемы с синхронизацией ввода, сокращена нагрузка при выполнении опроса указателя, добавлено определение направления текста на основе текущего keymap;
- Улучшен бэкенд оконного вывода через EGL;
- Добавлен базовый API для фильтрации событий, позволяющий перехватывать события до их достижения обработчика сцены;
- Класс ClutterTableLayout, оперирующий табличным размещение элементов на холсте, объявлен устаревшим. Вместо него следует использовать класс ClutterGridLayout с реализацией расширенных средств управления холстом на основе размещения actor-композиций с использованием масштабной сетки, позволяющей автоматически расширять элементы в вертикальном и горизонтальном направлении;
- Документация переписана на языке разметки MarkDown.
|