Беспорядок (программное обеспечение)

редактировать
Беспорядок
Автор (ы) Эммануэль Басси, OpenedHand Ltd
Разработчик ( s) Проект GNOME
Первоначальный выпуск22 июня 2006 г.; 14 лет назад (22.06.2006)
Стабильный выпуск 1.26.2 / 12 мая 2017 г.; 3 года назад (12.05.2017)
Предварительный выпуск 1.25.6 / 18 февраля 2016 г.; 4 года назад (18.02.2016)
Репозиторий Измените это в Wikidata
Написано наC
Операционной системе Linux, BSD, OS X, Microsoft Windows
Тип Графическая библиотека
Лицензия Стандартная общественная лицензия ограниченного применения GNU
Веб-сайтGNOME / Projects / clutter.

Clutter - это графическая библиотека на основе GObject для создания пользовательских интерфейсов с аппаратным ускорением. Clutter - это интерактивная библиотека на основе OpenGL, которая не содержит каких-либо графических элементов управления . Для рендеринга он использует OpenGL (1.4+) или OpenGL ES (1.1 или 2.0). Он также поддерживает воспроизведение мультимедиа с использованием GStreamer и рендеринг 2D-графики с использованием Cairo.

Clutter был разработан OpenedHand Ltd, теперь частью Intel. Clutter - это бесплатное программное обеспечение с открытым исходным кодом в соответствии с требованиями Стандартной общественной лицензии ограниченного применения GNU (LGPL), версия 2.1.

Содержание
  • 1 Принятие
  • 2 Архитектура программного обеспечения
    • 2.1 ClutterActor
    • 2.2 Поддерживаемые платформы
    • 2.3 Привязки языков программирования
    • 2.4 Библиотеки интеграции
    • 2.5 Пример
    • 2.6 Построитель интерфейса
      • 2.6.1 Пример
    • 2.7 Анимация
      • 2.7.1 Пример
  • 3 COGL
  • 4 libchamplain
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки
Принятие

Популярные программы, использующие Clutter это видео GNOME (он же Totem), GNOME Shell, Pitivi, Cinnamon Desktop и.

Mx - это набор инструментов для виджетов, основанный на Clutter, изначально разработанный для графической оболочки Moblin / нетбука MeeGo, но впоследствии превратился в независимый проект..

Наборы инструментов виджетов Netbook Toolkit (nbtk) и Mx основаны на Clutter. Часто беспорядок отображается аналогично GTK +, но это неточно. Только Clutter вместе с Mx или Nbtk может соответствовать экстенту GTK +. Это также причина, по которой Clutter используется вместе с GTK +.

Clutter поддерживает мультитач-жесты.

GTK + Scene Graph Kit (GSK) был изначально выпущен как часть GTK + 3.90 в марте 2017 года и предназначен для приложений на основе GTK, которые хотят заменить Clutter в своем пользовательском интерфейсе.

Архитектура программного обеспечения
GDK содержит серверные части для X11, Wayland, Broadway (HTTP ), Quartz и GDI и полагается на Cairo для рендеринга. Его новый SceneGraph (GSK ) находится в стадии разработки, можно использовать SceneGraph Clutter . Пример использования Clutter в системах на базе Linux

Clutter is холст на основе графа сцены, работающий в сохраненном режиме. Каждый объект на сцене обычно представляет собой 2D-поверхность внутри 3D-пространства.

Clutter абстрагирует родную оконную среду за серверной частью, которая также отвечает за создание основного контейнера для графа сцены; этот контейнер верхнего уровня называется сценой. Предметы на сцене называются актерами.

Вместо того, чтобы работать с матрицами, как это делает OpenGL, разработчик Clutter изменяет свойства каждого действующего лица. Затем Clutter заметит изменения и соответствующим образом отрендерит сцену.

Clutter в настоящее время разрабатывается OpenedHand для обеспечения визуально насыщенного графического интерфейса пользователя на настольных компьютерах и встроенном оборудовании. Основная цель - приложения, подобные медиацентрам, пользовательские интерфейсы для небольших устройств и базовый API рисования для наборов пользовательских интерфейсов на основе GL и GL / ES. Clutter использует Pango для визуализации текста (со специальным средством визуализации GL / GLES) и GdkPixbuf для загрузки изображений в текстуры GL. Взаимодействие с другими библиотеками платформы GNOME осуществляется через несколько интеграционных библиотек, например: clutter-gst (GStreamer), clutter-gtk (для встраивания сцены в приложение GTK +), clutter-cairo (для использования cairo для рисования текстуры). Его API и ABI остаются стабильными в микро-выпусках, но могут ломать API во время второстепенных выпусков - пока он не достигнет 1.0, тогда он будет стабильным API и ABI до следующего основного выпуска.

ClutterActor

ClutterActor - это базовый элемент графа сцены Clutter, он инкапсулирует положение, размер и преобразования узла в графе.

  • ClutterActor может принимать и обрабатывать устройство ввода события, например, события указателя и ключевые события.
  • Анимация - это основная концепция современных пользовательских интерфейсов; Clutter обеспечивает полную и мощную среду анимации, которая автоматически поддерживает состояние актера, не требуя прямых покадровых манипуляций из кода вашего приложения.

Поддерживаемые платформы

Clutter разработан для X Window System с использованием GLX, а также Wayland с использованием EGL. Беспорядок также может использовать буфер кадра. Начиная с версии 0.6, была добавлена ​​встроенная поддержка для Mac OS X. Встроенный бэкэнд Microsoft Windows поддерживается начиная с версии 0.8, и доступны предварительно скомпилированные DLL Windows, однако можно создать последнюю версию DLL для Windows с MinGW и оболочка Bash для Windows.

Начиная с версии 1.19.4 с июня 2014 года, бэкэнд ввода evdev Clutter зависит от libinput 0.4.0.

привязки языков программирования

Беспорядок реализован с использованием языка программирования C с дизайном, основанным на объектной системе GObject . Привязки доступны для следующих языков:

Интеграционные библиотеки

Clutter можно интегрировать с другими библиотеками и инструментами, например:

  • GTK + приложения могут встраивать этапы Clutter с помощью специального виджета.
  • Приложения Clutter можно встраивать Виджеты GTK +, использующие функцию «клиентских окон» начиная с GTK + 2.18.
  • Приложения Clutter могут использовать GStreamer для воспроизведения видео непосредственно в акторе текстуры Clutter.
  • Приложения Clutter можно использовать Cairo для рисования на текстуре.
  • Video Acceleration API

Пример

Этот пример добавит метку на сцену (написанную на C ).

// Получить сцену по умолчанию, которая будет содержать всех актеров на сцене. ClutterActor * stage = clutter_stage_get_default (); // Создайте новую метку, используя шрифт Sans высотой 32 пикселя и с текстом «Hello, world», // и поместите ее в рабочую область. ClutterActor * label = clutter_text_new_with_text («Без 32 пикселей», «Привет, мир»); clutter_container_add_actor (CLUTTER_CONTAINER (этап), метка); // Поместите метку в центр сцены, учитывая сцену и размер метки. float x = (clutter_actor_get_width (stage) - clutter_actor_get_width (label)) / 2; float y = (clutter_actor_get_height (stage) - clutter_actor_get_height (label)) / 2; clutter_actor_set_position (метка, x, y); // Показать сцену. Все актеры в Clutter видны, если явно не скрыты, за исключением сцены; // таким образом показ сцена будет // автоматически отображать все его видимые дочерние элементы. clutter_actor_show (этап);

Конструктор интерфейсов

Clutter может создавать пользовательские интерфейсы, используя специальный диалект JSON. Весь граф сцены определяется с использованием типов JSON и создается во время выполнения с помощью класса ClutterScript.

Пример

Это определение создаст главное окно и поместит метку с текстом Hello, world! внутри него.

{"id": "main-stage", "type": "ClutterStage", "color": "white", "width": 800, "height": 600, "title": "Демонстрация сценария", "children": [{"id": "hello-label", "type": "ClutterText", "x": 400, "y": 300, "text": "Hello, world!", "color ":" черный "," font-name ":" Sans 48px "}]," сигналы ": [{" name ":" destroy "," handler ":" clutter_main_quit "}]}

Определение может быть сохраняется в файл или в виде строки и загружается с использованием:

ClutterScript * script = clutter_script_new (); GError * error = NULL; clutter_script_load_from_data (сценарий, описание, -1, ошибка); if (error) {g_warning ("Невозможно загрузить описание пользовательского интерфейса:% s", ошибка->сообщение); g_error_free (ошибка); } else {GObject * stage; clutter_script_connect_signals (скрипт, NULL); / * подключаем обработчики сигналов * / stage = clutter_script_get_object (script, "main-stage"); / * получаем объект "основной сцены" * / clutter_actor_show (CLUTTER_ACTOR (stage)); }

Анимация

Беспорядок позволяет неявную анимацию каждого элемента на холсте с использованием специальных объектов, называемых поведениями: каждое поведение может применяться к нескольким субъектам, и несколько вариантов поведения могут быть составлены для одного и того же субъекта. Поведение обрабатывает анимацию неявно: разработчик указывает начальное и конечное состояния, время (или количество кадров), необходимое для завершения анимации, функцию времени, которая будет использоваться (линейная, синусоидальная, экспоненциальная и т. Д.), И поведение. позаботится о твининге. Clutter предоставляет разработчикам общий базовый класс для реализации настраиваемого поведения и различные простые классы, обрабатывающие простые свойства, такие как непрозрачность, положение по оси Z (глубина), положение по пути, поворот и т. Д.

Начиная с Clutter 1.0, также можно создавать простые одноразовые анимации, используя класс ClutterAnimation и вспомогательную функцию clutter_actor_animate (). Функция clutter_actor_animate () анимирует свойства актора между их текущим состоянием и указанным конечным состоянием.

Пример

В этом примере размер метки будет увеличен с коэффициентом 2 за 2 секунды с использованием линейной функции времени и поведения:

ClutterTimeline * timeline = clutter_timeline_new (2000); ClutterAlpha * alpha = clutter_alpha_new_full (временная шкала, CLUTTER_LINEAR); ClutterBehaviour * behavior = clutter_behaviour_scale_new (alpha, 1.0, 1.0, / * начальные коэффициенты масштабирования * / 2,0, 2,0 / * окончательные коэффициенты масштабирования * /); clutter_behaviour_apply (поведение, метка);
Эти операторы создают временную шкалу продолжительностью 2 секунды; альфа, привязывающая временную шкалу к линейному режиму замедления; поведение, которое будет масштабировать любого актера, к которому оно применяется, от коэффициента 1.0 до коэффициента 2.0 (как по горизонтали, так и по вертикали). Наконец, он применяет поведение к актору.

Эквивалентный код, использующий API неявной анимации:

clutter_actor_animate (label, / * актер для анимации * / CLUTTER_LINEAR, / * режим замедления * / 2000, / * продолжительность анимации * / "scale-x", 2.0, / * окончательный коэффициент масштабирования по горизонтали * / "scale-y", 2,0, / * окончательный коэффициент масштабирования по вертикали * / NULL);
Этот оператор создаст неявный объект ClutterAnimation, который будет анимировать предоставленные свойства GObject между их текущим значением и указанным окончательным значением.
COGL

Cogl - небольшая программная библиотека с открытым исходным кодом для использования 3D графическое оборудование для рисования красивых картинок. API отходит от стиля OpenGL с плоскими конечными автоматами и разработан, чтобы упростить написание ортогональных компонентов, которые могут отображаться, не наступая друг другу на пятки. В настоящее время Cogl поддерживает OpenGL ES 1.1 / 2.0 и OpenGL>1.3 (или 1.2, если у вас есть расширение GL_ARB_multitexture), а наличие Gallium3D или серверной части D3D - это варианты на будущее.

libchamplain

libchamplain - это библиотека C, предоставляющая ClutterActor для отображения карт. Он также предоставляет виджет Gtk + для отображения карт в приложениях Gtk +. Библиотека libchamplain названа в честь Самуэля де Шамплена, французского мореплавателя, исследователя и картографа.

См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
  • Core Animation - API визуализации данных, используемый Mac OS X 10.5 и более поздними версиями
  • Qt Quick - аналогичное приложение структура на основе Qt и QML
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-15 12:32:38
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте