Jump to content

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

(Перенаправлено с Clutter (набор инструментов) )
Оригинальный автор(ы) Эммануэле Басси, OpenedHand Ltd.
Разработчик(и) Проект GNOME
Первоначальный выпуск 22 июня 2006 г .; 18 лет назад ( 22 июня 2006 г. )
Стабильная версия
1.26.4 / 9 марта 2020 г .; 4 года назад ( 09.03.2020 ) [ 1 ]
Предварительный выпуск
1.25.6 / 18 февраля 2016 г .; 8 лет назад ( 18 февраля 2016 ) [ 2 ]
Репозиторий
Написано в С
Операционная система Linux , BSD , OS X , Microsoft Windows
Тип Графическая библиотека
Лицензия Меньшая стандартная общественная лицензия GNU [ 3 ]
Веб-сайт GNOME/Проекты/беспорядок

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 ) находится в стадии разработки, Clutter . можно использовать SceneGraph

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 ]

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

// Retrieve the default stage, which will contain all the actors on the scene.
ClutterActor *stage = clutter_stage_get_default ();

// Create a new label, using the Sans font 32 pixels high, and with the "Hello, world" text,
// and will place it into the stage.
ClutterActor *label = clutter_text_new_with_text ("Sans 32px", "Hello, world");
clutter_container_add_actor (CLUTTER_CONTAINER (stage), label);

// Position the label at the center of the stage, taking into account the stage and the label size.
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 (label, x, y);

// Show the stage. All actors in Clutter are visible unless explicitly hidden, except for the stage;
// thus showing the stage will
// automatically display all of its visible children.
clutter_actor_show (stage);

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

[ редактировать ]

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

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

{
    "id": "main-stage",
    "type": "ClutterStage",
    "color": "white",
    "width": 800,
    "height": 600,
    "title": "Script demo",
    "children": [{
        "id": "hello-label",
        "type": "ClutterText",
        "x": 400,
        "y": 300,
        "text": "Hello, world!",
        "color": "black",
        "font-name": "Sans 48px"
    }],
    "signals": [{
        "name": "destroy",
        "handler": "clutter_main_quit"
    }]
}

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

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

ClutterScript *script = clutter_script_new ();
GError *error = NULL;
clutter_script_load_from_data (script, description, -1, &error);
if (error)
{
    g_warning ("Unable to load UI description: %s", error->message);
    g_error_free (error);
}
else
{
    GObject *stage;

    clutter_script_connect_signals (script, NULL); /* connect the signal handlers */
    stage = clutter_script_get_object (script, "main-stage"); /* get the "main-stage" object */
    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 *alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR);
ClutterBehaviour *behaviour = clutter_behaviour_scale_new (alpha,
                                                           1.0, 1.0, /* initial scaling factors */
                                                           2.0, 2.0  /* final scaling factors */ );
clutter_behaviour_apply (behaviour, label);
Эти операторы создадут временную шкалу продолжительностью 2 секунды; альфа, привязывающая временную шкалу к режиму линейного замедления; поведение, которое будет масштабировать любого актера, к которому оно применяется, между коэффициентом 1,0 и коэффициентом 2,0 (как по горизонтали, так и по вертикали). Наконец, он применяет поведение к актеру.

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

clutter_actor_animate (label,          /* the actor to animate */
                       CLUTTER_LINEAR, /* the easing mode */
                       2000,           /* the duration of the animation */
                       "scale-x", 2.0, /* final horizontal scaling factor */
                       "scale-y", 2.0, /* final vertical scaling factor */
                       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 назван в честь Самуэля де Шамплена , французского мореплавателя, исследователя и картографа.

См. также

[ редактировать ]
  • Core Animation — API визуализации данных, используемый Mac OS X 10.5 и более поздних версий.
  • Qt Quick — аналогичная платформа приложений, основанная на Qt и QML.
  1. ^ «Хлам 1.26.4 (релиз)» . 09.03.2020 . Проверено 23 января 2021 г.
  2. ^ «АНОНС: Clutter 1.21.8 (снимок)» . 18 февраля 2016 г.
  3. ^ Перейти обратно: а б «Лицензия на беспорядок» .
  4. ^ http://developer.gnome.org/clutter/stable/ClutterCairoTexture.html. Архивировано 14 сентября 2015 г. в справочнике API Wayback Machine Clutter: 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.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6f558d8572a5166c9578f0e9f0513983__1707000240
URL1:https://arc.ask3.ru/arc/aa/6f/83/6f558d8572a5166c9578f0e9f0513983.html
Заголовок, (Title) документа по адресу, URL1:
Clutter (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)