Набор графических изображений GTK - GTK Scene Graph Kit
Оригинальный автор (ы) | Мануэль Басси и др. |
---|---|
Разработчики) | Проект GNOME |
изначальный выпуск | 24 марта 2017 г. |
Написано в | C |
Операционная система | Часть GTK |
Тип | Библиотека программного обеспечения |
Лицензия | LGPL |
Интернет сайт | разработчик |
Набор графических изображений GTK (GSK) - это API рендеринга и графа сцены для GTK введено в версии 3.90. GSK находится между графическими элементами управления (виджетами) и рендерингом.
Нравиться GDK, GSK является частью GTK и имеет лицензию на Стандартная общественная лицензия ограниченного применения GNU (LGPL).
Обоснование
GSK является частью GTK. GSK предназначен для использования как самой GTK, так и основанными на GTK приложениями, которые хотят заменить Беспорядок для их пользовательского интерфейса. Приложения, которые использовали Clutter вместо использования только GTK, например Оболочка GNOME, Видео GNOME, Ящики GNOME и Сыр.
Любое приложение, которое использует графические элементы управления (виджеты) GTK, в отличие от тех приложений, которые получают окно GTK и затем рисуют себя в нем, получают выгоду от GSK.
Спектакль
Рисование графических элементов управления (виджетов) без графа сцены приводит к визуализации вещей, которые не отображаются на экране, вещей, которые не нужно визуализировать; следовательно, это приводит к уменьшению производительности и снижению срока службы батареи. Граф сцены используется для определение скрытой поверхности.
Простота
Способ рисования виджетов в GTK (когда не используется Clutter) заключался в том, что функция рисования (часть GDK отсюда и название (GIMP "Drawing" Kit)) рисовал все. Не было возможности узнать, что только что нарисовано. Чтобы узнать, где в данный момент находится указатель мыши, необходимо вычислить текущую позицию. С GSK должно быть довольно легко писать сложные графические элементы управления (виджеты) и при этом легко отслеживать местонахождение указателя мыши.
CSS
Было решено, что GTK перейдет на Каскадная таблица стилей Модель на основе (CSS) для стилизации графических элементов управления (виджетов) (т.е. тематический /содранный ) и рендеринг. В CSS свойства теней, границ, отступов и стиля четко определены. семантика. Некоторые из этих семантик трудно реализовать с помощью старой модели рисования GTK.
GSK использует графен,[1] внешняя библиотека, в которой хранится набор типов геометрии - точки, размеры, прямоугольники, векторы, квадраты, кватернионы, матрицы. графен был перенесен на Система построения мезонов.
Конвейер рендеринга GSK
GSK использует двухуровневый подход:[2]
- Нижний уровень представляет собой простое дерево операций визуализации; он может быть преобразован в соответствующие команды рендеринга с минимальными изменениями состояния, поэтому он преобразуется в конвейер рендеринга. Дерево операций визуализации представлено экземплярами GskRenderNode; экземпляр GskRenderer берет узлы рендеринга и отправляет их (после возможного переупорядочивания и преобразования их в более подходящее представление) в базовую графическую систему.
- верхний уровень: сложный набор логических уровней; он добавляет удобный API высокого уровня для разработчиков приложений.
API рендеринга
Начиная с GTK 3.90, который является номером разрабатываемой версии того, что станет GTK 4, GSK поддерживает рендеринг с использованием этих внутренних компонентов:
История
Эта секция нуждается в расширении. Вы можете помочь добавляя к этому. (Март 2017 г.) |
Беспорядок
Беспорядок был опубликован 22 июня 2006 г. Библиотека интеграции clutter-gtk доступна с 29 ноября 2006 г.[3]
На 2-й саммит рабочего стола в августе 2011 года в Берлине велись разговоры о «GTK + 4.0 и Clutter 2.0».[4]
Идея ввести граф сцены в GTK
В 2008 году такие разработчики, как Havoc Pennington рассматривали возможность добавления холста сцены в GTK, поскольку люди за пределами GTK использовали такие вещи, как Беспорядок, Пигмент, БегемотХолст или же GooCanvas.[5] Было предложено сделать графические элементы управления (виджеты) одним из видов объектов в более гибком графе сцены.
GSK
До GSK рисование выполнялось GDK - базовая обработка рендеринг например, рисование примитивов, растровая графика (растровые изображения), курсоры, шрифты, а также оконные события и перетаскивание функциональность.[6]
В июне 2006 г. Беспорядок, библиотека интерактивного холста на основе OpenGL. Clutter имеет свой собственный граф сцены, и разработчики GNOME предпочли использовать граф сцены Clutter с GTK, чему способствует библиотека clutter-gtk.[7] Беспорядок можно встроить в любое приложение GNOME с помощью библиотеки clutter-gtk. Библиотека clutter-gtk предоставляет виджет GtkClutterEmbed GTK, который можно использовать для отображения ClutterStage.
Некоторые думали, как лучше объединить Clutter и GTK, чем библиотека clutter-gtk.
В 2011, Fire Fox представил «Лазурь», и Джо Дрю и Бас Схоутен потрудились над некоторыми объяснениями.[8][9][10]
- На GUADEC2013 в Брно Эммануэле поделился своей идеей по реализации графа сцены и фреймворка анимации внутри платформы GNOME (после работы в течение последних 6 лет над Clutter).[11]
- GTK Scene Graph Kit (GSK) - это предстоящий граф сцены для GTK, который в процессе написания Эмануэле Басси.[12]
- 30 июля 2014 года Эмануэль заявил, что, по его мнению, не должно быть отдельного Clutter 2.0.[13]
На фестивале Developer Experience Hackfest в 2014 году была представлена презентация нового графа сцены для GTK, предназначенного для объединения в GTK + 3.16.[14] Затем планировалось, что GSK будет готов и полностью интегрирован в GTK + версии 3.20, который должен быть выпущен в марте 2016 года. Это было отложено до версии 3.22.,[15] а затем окончательно слился с 3.90.
Имея OpenGL (или же OpenGL ES ) поддержка в GDK облегчает немного лучший контроль над графический конвейер; OpenGL хорошо подходит для компоновки текстурированных данных, но совершенно не подходит для рисования.[нужна цитата ]
Самая последняя информация о статусе GSK взята из GUADEC 2016.[16]
Другие проекты
- Библиотеки Фонда Просвещения использует граф сцены с 2000 года, реализованный в Библиотека Evas.[17]
- Qt был переработан, и, начиная с версии 5, он включает Qt Quick 2 с рендерингом на основе графа сцены.[18]
Смотрите также
Рекомендации
- ^ Басси, Эммануэль (02.05.2014). «Графен».
- ^ Басси, Эммануэле (18.10.2016). «Первоначальное внедрение конвейера рендеринга GSK».
- ^ Басси, Эммануэле (29 ноября 2006 г.). "добавить clutter-gtk".
- ^ Басси, Эммануэле (31.08.2011). «GTK + 4.0 и Clutter 2.0: радуга и единороги».
- ^ Пеннингтон, Хаос (2007-03-07). "Предложение графа сцены Хаоса Пеннингтона".
- ^ Басси, Эммануэле (29.07.2014). "Набор графических изображений GTK +".
- ^ "clutter-gtk на git.gnome".
- ^ «Знакомство с проектом Azure». 2011-04-26. Архивировано из оригинал на 2016-09-08. Получено 2017-03-17.
- ^ «Сравнение производительности: Azure против Каира». 2011-06-06.
- ^ «Освобождение Лазурного». 2011-08-16.
- ^ Басси, Эммануэле (12 августа 2013 г.). "Будущее в прошлом GTK сцена-граф".
- ^ Басси, Эммануэле (29.07.2014). "Набор графических изображений GTK +".
- ^ Басси, Эммануэле (30.07.2014). «Проблема остановки - будущее в прошлом».
- ^ "2014 Developer Experience Hackfest: граф сцены для GTK + 3.16".
- ^ "GNOME Wiki: план развития GTK +".
- ^ Басси, Эммануэле (16.08.2016). "GTK: мы еще в будущем?".
- ^ "Евас".
- ^ "Qt Quick Scene Graph".
внешняя ссылка
- Справочное руководство GNOME для нестабильной версии GSK4
- GSK на wiki.gnome.org
- Демистификация GSK (Я),(II),(III) - Эммануэль Басси, 2016/08 г.
- Код GSK из выпуска GTK 3.89.5
- Современная модель рисования Gtk - Александр Ларссон, 2013/11/04
- Обзор GTK и его библиотек - Проект GTK
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg
- https://wiki.gnome.org/Projects/Clutter
- https://wiki.gnome.org/Projects/Clutter/Future
- https://wiki.gnome.org/Projects/Clutter/Apocalypses
- https://wiki.gnome.org/Projects/Clutter/Roadmap