Sada grafických scén GTK - GTK Scene Graph Kit
Původní autoři | Manuelle Bassi a kol. |
---|---|
Vývojáři | Projekt GNOME |
První vydání | 24. března 2017 |
Napsáno | C |
Operační systém | Část GTK |
Typ | Softwarová knihovna |
Licence | LGPL |
webová stránka | vývojář |


Sada grafických scén GTK (GSK) je rozhraní API pro vykreslování a graf scény GTK představeno s verzí 3.90. GSK leží mezi grafickými ovládacími prvky (widgety) a vykreslením.
Jako GDK, GSK je součástí GTK a je licencován pod GNU Lesser General Public License (LGPL).
Odůvodnění
GSK je součástí GTK. GSK má být používán samotným GTK a aplikacemi založenými na GTK, které si přejí nahradit Nepořádek pro jejich uživatelské rozhraní. Aplikace, které využily Clutter namísto použití pouze GTK, jsou např. GNOME Shell, Videa GNOME, Boxy GNOME a Sýr.
Jakákoli aplikace, která využívá grafické ovládací prvky (widgety) GTK, na rozdíl od těchto aplikací, které získají okno GTK a poté se na něj kreslí, těží z GSK.
Výkon
Kreslení grafických ovládacích prvků (widgetů) bez scénografu vede k vykreslování věcí, které se na obrazovce nezobrazují, věcí, které není nutné vykreslovat; proto to vede ke zbytečnému výkonu a ztrátám životnosti baterie. Scénograf je zvyklý dělat stanovení skrytého povrchu.
Jednoduchost
Způsob, jakým byly widgety nakresleny v GTK (pokud nepoužíváte Clutter), spočíval v tom, že funkce draw (součást GDK odtud název (GIMP "Drawing" Kit)) nakreslil všechno. Nedalo se zjistit, co se právě nakreslilo. Abychom věděli, kde se ukazatel myši aktuálně vznáší, bylo třeba vypočítat aktuální polohu. S GSK by mělo být poměrně snadné psát složité grafické ovládací prvky (widgety) a stále snadno sledovat místo, kde se nachází ukazatel myši.
CSS
Bylo rozhodnuto, že GTK přejde na a Kaskádový styl (CSS) model založený na stylu grafických ovládacích prvků (widgetů) (tj. tematicky /z kůže ) a vykreslen. V CSS jsou dobře definovány stíny, ohraničení, polstrování a vlastnosti stylu sémantika. Některé z těchto sémantik je obtížné implementovat se starým modelem kreslení GTK.
GSK využívá grafen,[1] externí knihovna, která obsahuje kolekci typů geometrie - body, velikosti, obdélníky, vektory, čtyřkolky, čtveřice, matice. grafen byl přenesen do Systém sestavení Meson.
GSK rendering pipeline
GSK používá dvouvrstvý přístup:[2]
- Dolní vrstva je jednoduchý vykreslovací strom operací; lze jej transformovat do příslušných příkazů vykreslování s minimálními změnami stavu, takže se transformuje do vykreslovacího kanálu. Strom operací vykreslování je reprezentován instancemi GskRenderNode; instance GskRenderer vezme uzly vykreslení a odešle je (po potenciálním přeskupení a transformaci na vhodnější reprezentaci) do podkladového grafického systému.
- vyšší vrstva: komplexní sada logických vrstev; přidává rozhraní API na vysoké úrovni pro vývojáře aplikací.
Vykreslování API
Od verze GTK 3.90, což je číslo vývojové verze, která se stane GTK 4, podporuje GSK vykreslování pomocí těchto back-endů:
Dějiny
![]() | Tato sekce potřebuje expanzi. Můžete pomoci přidávat k tomu. (Březen 2017) |
Nepořádek
Nepořádek byla zveřejněna 22. června 2006. Integrační knihovna „clutter-gtk“ je k dispozici od 29. 11. 2006.[3]
Na 2. stolní summit v srpnu 2011 se v Berlíně hovořilo o „GTK + 4.0 a Clutter 2.0“.[4]
Myšlenka představit graf scény GTK
V roce 2008 vývojáři jako Havoc Pennington uvažovali o přidání plátna scény do GTK, protože lidé mimo GTK využívali věci jako Nepořádek, Pigment, HippoCanvas nebo GooCanvas.[5] Bylo navrženo vytvořit grafické ovládací prvky (widgety) jako jeden druh objektu ve flexibilnějším grafu scény.
GSK
Před GSK kreslil dříve GDK - základní manipulace vykreslování jako kreslení primitiv, rastrová grafika (bitmapy), kurzory, písma, stejně jako události v okně a drag-and-drop funkčnost.[6]
V červnu 2006 Nepořádek, byla vydána knihovna „interaktivního plátna“ založená na OpenGL. Clutter má svůj vlastní graf scény a vývojáři GNOME upřednostňovali použití grafu scény Clutter s GTK, což usnadňuje knihovna s názvem clutter-gtk.[7] Nepořádek lze vložit do každé aplikace GNOME pomocí knihovny clutter-gtk. Knihovna clutter-gtk poskytuje widget GtkClutterEmbed GTK, který lze použít k zobrazení ClutterStage.
Někteří uvažovali o tom, jak sloučit Clutter a GTK lepším způsobem než knihovna clutter-gtk.
V roce 2011, Firefox představil „Azure“ a Joe Drew a Bas Schouten se obtěžovali s některými vysvětleními.[8][9][10]
- Na GUADEC2013 v Brně Emmanuele sdílel svůj nápad na implementaci grafu scény a animačního rámce uvnitř platformy GNOME (poté, co pracoval posledních 6 let na Clutter).[11]
- GTK Scene Graph Kit (GSK) je připravovaný scénický graf pro GTK, který právě píše Emanuele Bassi.[12]
- Dne 30. července 2014 Emanuelle uvedl, že si myslí, že by zde neměl být samostatný nepořádek 2.0.[13]
Na Hackfestu Developer Experience 2014 proběhla prezentace týkající se nového grafu scény pro GTK zaměřeného na sloučení do GTK + 3.16.[14] Poté bylo plánováno, že GSK bude připraven a plně integrován do GTK + verze 3.20, která má být vydána v březnu 2016. To bylo odloženo na 3.22.,[15] a nakonec sloučeny do 3,90.
Mít OpenGL (nebo OpenGL ES ) podpora v GDK usnadňuje o něco lepší kontrolu nad grafický kanál; OpenGL je vhodný pro skládání texturovaných dat, ale naprosto nevhodný pro kreslení.[Citace je zapotřebí ]
Nejnovější informace o stavu GSK jsou z GUADEC 2016.[16]
Další projekty
- Osvícenské nadační knihovny používá scénický graf od roku 2000 implementovaný v Knihovna Evas.[17]
- Qt byl přepracován a počínaje verzí 5 obsahuje Qt Quick 2 s vykreslením založeným na scénografu.[18]
Viz také
Reference
- ^ Bassi, Emmanuele (02.05.2014). "Graphene".
- ^ Bassi, Emmanuele (2016-10-18). „Počáteční implementace vykreslovacího kanálu GSK“.
- ^ Bassi, Emmanuele (2006-11-29). „add clutter-gtk“.
- ^ Bassi, Emmanuele (2011-08-31). „GTK + 4.0 a Clutter 2.0: duhy a jednorožci“.
- ^ Pennington, Havoc (07.03.2008). „Návrh grafu scény Havoc Pennington“.
- ^ Bassi, Emmanuele (2014-07-29). „Sada grafů scény GTK +“.
- ^ „clutter-gtk na git.gnome“.
- ^ „Představujeme projekt Azure“. 26.04.2011. Archivovány od originál dne 8. 9. 2016. Citováno 2017-03-17.
- ^ „Srovnání výkonu: Azure vs Káhira“. 2011-06-06.
- ^ „Uvolnění Azure“. 2011-08-16.
- ^ Bassi, Emmanuele (12.8.2013). "Budoucnost v minulosti GTK scéna-graf".
- ^ Bassi, Emmanuele (2014-07-29). „Sada grafů scény GTK +“.
- ^ Bassi, Emmanuele (2014-07-30). „Problém zastavení - budoucnost v minulosti“.
- ^ „2014 Developer Experience Hackfest: Scénický graf pro GTK + 3,16“.
- ^ „GNOME Wiki: cestovní mapa pro GTK +“.
- ^ Bassi, Emmanuele (2016-08-16). „GTK: jsme ještě v budoucnosti?“.
- ^ "Evas".
- ^ „Qt Quick Scene Graph“.
externí odkazy
- Referenční příručka GNOME pro nestabilitu GSK4
- GSK na wiki.gnome.org
- GSK Demystified (Já),(II),(III) - Emmanuele Bassi, 2016/08
- GSK kód od vydání GTK 3.89.5
- Moderní model kreslení Gtk - Alexander Larsson, 11. 11. 2013
- Přehled GTK a jeho knihoven - Projekt 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