stringtranslate.com

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

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

Clutter был создан компанией OpenedHand Ltd , которая сейчас является частью Intel . Clutter — это бесплатное программное обеспечение с открытым исходным кодом , на которое распространяются требования GNU Lesser General Public License (LGPL) версии 2.1. [3]

В феврале 2022 года команда разработчиков объявила о прекращении проекта. Больше версий выпускаться не будет, и разработчикам, использующим Clutter, рекомендуется портировать свои приложения на GTK 4 и libadwaita . [5]

Принятие

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

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

Наборы инструментов виджетов Netbook Toolkit (nbtk) и Mx основаны на Clutter. [6] Часто 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 — это холст на основе графа сцены , работающий в сохраненном режиме . Каждый объект на сцене обычно представляет собой 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 — это базовый элемент графа сцены Clutter, он инкапсулирует положение, размер и преобразования узла в графе. [8]

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

Clutter разработан для X Window System с использованием GLX , а также Wayland [9] [10] [11] с использованием EGL . Clutter также может использовать фреймбуфер . Начиная с версии 0.6 была добавлена ​​встроенная поддержка Mac OS X. [12] Собственная серверная часть Microsoft Windows поддерживается с версии 0.8 [13] и доступны предварительно скомпилированные библиотеки DLL для Windows, [14] [15] [16] однако можно собрать последнюю версию DLL для Windows с помощью MinGW и Оболочка Bash для Windows.

Начиная с версии 1.19.4 от июня 2014 года, серверная часть ввода evdev Clutter зависит от libinput 0.4.0. [17]

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

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

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

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

Пример

В этом примере на сцену будет добавлена ​​метка (написанная на C ).

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

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

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

Пример

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

{ "id" : "main-stage" , "type" : "ClutterStage" , "color" : "white" , "width" : 800 , "height" : 600 , "title" : "демонстрационный сценарий" , "дети" " : [{ "id" : "hello-label" , "type" : "ClutterText" , "x" : 400 , "y" : 300 , "text" : "Привет, мир!" , "color" : "black" , "font-name" : "Sans 48px" }], "signals" : [{ "name" : "destroy" , "handler" : "clutter_main_quit" }] }                                    

Определение JSON для рендеринга пользовательского интерфейса с помощью библиотеки Clutter.

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

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

Анимация

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

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

Пример

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

ClutterTimeline * timeline = clutter_timeline_new ( 2000 ); ClutterAlpha * альфа = clutter_alpha_new_full ( временная шкала , CLUTTER_LINEAR ); ClutterBehaviour * поведение = 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 [20] , который будет анимировать предоставленные свойства GObject между их текущим значением и указанным конечным значением.

КОГЛ

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

библиотека

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

Смотрите также

Рекомендации

  1. ^ «Беспорядок 1.26.4 (выпуск)» . 09.03.2020 . Проверено 23 января 2021 г.
  2. ^ «АНОНС: Беспорядок 1.21.8 (снимок)» . 18 февраля 2016 г.
  3. ^ ab «Лицензия на беспорядок».
  4. ^ http://developer.gnome.org/clutter/stable/ClutterCairoTexture.html. Архивировано 14 сентября 2015 г. в Wayback Machine Clutter API. Ссылка: ClutterCairoTexture.
  5. ^ «Устранение беспорядка - Проект беспорядка» . Блог проекта Clutter . 16 февраля 2022 г. Проверено 14 июня 2023 г.
  6. ^ "Проекты/Vala/MxSample - GNOME Wiki!". Wiki.gnome.org . Проверено 18 апреля 2018 г.
  7. ^ "беспорядок-проект / глиняная земля" . Гитхаб . Проверено 18 апреля 2018 г.
  8. ^ «Документация разработчика GNOME» .
  9. Басси, Эммануэле (31 января 2011 г.). «АНОНС: Clutter 1.6.0 (стабильная)» . Проверено 9 марта 2016 г.
  10. Брэдфорд, Роб (16 декабря 2011 г.). «Обновление Clutter & Cogl Wayland» . Проверено 9 марта 2016 г.[ постоянная мертвая ссылка ]
  11. Басси, Эммануэле (24 сентября 2013 г.). «АНОНС: Clutter 1.16.0 (стабильная)».
  12. ^ http://blogs.gnome.org/tko/2008/05/26/three-steps-forward-one-giant-step-back/ Жизнь с беспорядком на OSX
  13. ^ «Специальная поддержка Win32» . Архивировано из оригинала 5 августа 2009 г. Проверено 29 июля 2009 г.
  14. ^ "vala-win32 Бинарные файлы Vala для Windows" . Проверено 27 января 2013 г.
  15. ^ «Val(a)IDE в Launchpad» . Проверено 27 января 2013 г.
  16. ^ "x6-развитие-доля" . Проверено 27 января 2013 г.
  17. ^ "[ОБЪЯВЛЕНИЕ] libinput 0.4.0" . сайт freedesktop.org . 24 июня 2014 г.
  18. ^ http://mail.gnome.org/archives/gnome-announce-list/2009-September/msg00099.html Списки рассылки GNOME: выпущен GTK+ 2.18.0
  19. ^ http://www.clutter-project.org/docs/clutter/stable/ClutterScript.html#ClutterScript.description. Архивировано 4 августа 2009 г. в справочнике API Wayback Machine Clutter: ClutterScript.
  20. ^ «Неявная анимация». Архивировано из оригинала 5 августа 2009 г. Проверено 29 июля 2009 г.
  21. ^ "когл 1.18.2" . 04.07.2014.

Внешние ссылки