Релиз графической библиотеки Clutter 1.8.0

После девяти месяцев разработки представлен выпуск новой стабильной ветки графической библиотеки Clutter - 1.8.0, API и ABI которой обратно совместимы с прошлыми версиями библиотеки. Библиотека может работать поверх OpenGL, GLib, GObject, GLX, SDL, WGL, Quartz, EGL и Pango. Имеются биндинги для языков Perl, Python, C#, C++, Vala и Ruby. Исходные тексты распространяются в рамках лицензии LGPLv 2.1.

Clutter активно используется для обеспечения работы пользовательского интерфейса в проектах MeeGo и GNOME 3. Функции библиотеки Clutter ориентированы на активное использование анимации и визуальных эффектов, что позволяет применять при создании обычных GUI приложений методы, используемые при разработке игр. При этом сама библиотека напоминает игровой движок, в котором максимальное число операций выносится на плечи GPU. Одним из основных преимуществ Clutter является то, что для создания сложного интерфейса пользователя требуется написание минимума кода.

В настоящий момент доступны такие интеграционные модули, как:

  • Clutter-GTK - для интеграции с GObject и предоставления API в стиле GTK+;
  • Clutter-GStreamer - для отображения видеопотоков в виде элементов холста Clutter;
  • Clutter-Box2D - для симулирования физических процессов, таких как гравитация, инерция или реалистичные столкновения;
  • Clutter-MozEmbed и Clutter-WebKit - для рендеринга web-страниц через движок Mozilla Gecko или WebKit;
  • Clutter-Qt для интеграции возможностей Clutter в Qt приложения;

Ключевые новшества Clutter 1.8.0:

  • Из дерева исходных текстов удалена низкоуровневая библиотека COGL, используемая для абстрагирования доступа к OpenGL. Программный интерфейс для обращения к OpenGL теперь будет развиваться в отдельном репозитории и распространяться в виде независимой библиотеки, нацеленной на низкоуровневое программирование для GPU. Clutter будет использовать данную библиотеку как внешнюю зависимость;
  • Реализованы новые базовые классы ClutterGestureAction и ClutterSwipeAction. ClutterGestureAction предназначен для организации выполнения действий при распознавании управляющих жестов, сам код распознавания жестов должен быть написан отдельно. ClutterSwipeAction является дочерним классом ClutterGestureAction и содержит пример реализации распознавания жеста "перелистывание страниц". В общем виде новый GestureAction API является первым шагом к обеспечению готовности Clutter для поддержки мультитач, которая пока не реализована;
  • Объект ClutterState, определяющий анимированные трансформации между несколькими состояниями, теперь можно связывать с сигналами из ClutterScript. В процессе определения сцены при помощи ClutterScript стало возможным непосредственно связать состояние внутри объекта ClutterState с сигналом внешнего объекта, без создания дополнительного обработчика сигнала;
  • Добавлен класс ClutterDropAction, позволяющий отреагировать при перетаскивании элемента через указанную область или при отпускании элемента в этой области (при использовании механизма drag&drop;);
  • Бэкенд для платформы Mac OS X переведен из разряда экспериментальных в категорию поддерживаемых и стабильных;
  • Переработан объект ClutterCairoTexture с целю упрощения процесса отрисовки с использованием библиотеки Cairo. Отныне не нужно вручную обрабатывать контекст cairo_t;
  • Расширен раздел полезных рецептов в документации, добавлены примерны готового кода для различных классов.

    © OpenNet