Zestaw wykresów scen GTK

GSK
Oryginalni autorzy Manuelle Bassi i in.
Deweloperzy Projekt GNOME
Pierwsze wydanie 24 marca 2017 ; 5 lat temu ( 2017-03-24 )
Napisane w C
System operacyjny Część GTK
Typ Biblioteka oprogramowania
Licencja LGPL
Strona internetowa programista .gnome .org /gsk4 /niestabilny /
Uproszczona architektura oprogramowania GTK .

GTK Scene Graph Kit ( GSK ) to interfejs API renderowania i wykresów scen dla GTK wprowadzony w wersji 3.90. GSK znajduje się pomiędzy graficznymi elementami sterującymi (widżetami) a renderowaniem.

Podobnie jak GDK , GSK jest częścią GTK i podlega licencji GNU Lesser General Public License (LGPL).

Racjonalne uzasadnienie

GSK jest częścią GTK. GSK ma być używany przez samo GTK i przez aplikacje oparte na GTK, które chcą zastąpić bałagan w swoim interfejsie użytkownika. Aplikacje, które wykorzystywały Clutter zamiast tylko GTK, to np. GNOME Shell , GNOME Videos , GNOME Boxes i Cheese .

Każda aplikacja, która korzysta z graficznych elementów sterujących GTK (widżetów), w przeciwieństwie do tych aplikacji, które otrzymują okno GTK, a następnie rysują się na nim, czerpią korzyści z GSK.

Wydajność

Rysowanie graficznych elementów sterujących (widżetów) bez scenografu prowadzi do renderowania rzeczy, które nie pojawiają się na ekranie, rzeczy, które nie muszą być renderowane; w związku z tym prowadzi to do możliwych do uniknięcia strat wydajności i żywotności baterii. Scenegraph służy do określania powierzchni ukrytej .

Prostota

Sposób, w jaki widżety były rysowane w GTK (kiedy nie używano Clutter), polegał na tym, że funkcja rysowania (część GDK , stąd nazwa (GIMP „Drawing” Kit)) rysowała wszystko. Nie było sposobu, aby wiedzieć, co właśnie zostało narysowane. Aby wiedzieć, gdzie aktualnie znajduje się wskaźnik myszy, należało obliczyć bieżącą pozycję. Dzięki GSK pisanie złożonych graficznych elementów sterujących (widżetów) powinno być dość łatwe i nadal łatwo śledzić położenie wskaźnika myszy.

CSS

Zdecydowano, że GTK przejdzie do modelu opartego na kaskadowych arkuszach stylów (CSS), w jaki sposób stylizowane są graficzne elementy kontrolne (widżety) (tj. motywy / skórki ) i renderowane. W CSS cienie, obramowania, dopełnienie i właściwości stylu mają dobrze zdefiniowaną semantykę . Niektóre z tych semantyk są trudne do zaimplementowania w starym modelu rysowania GTK.

GSK korzysta z grafenu, zewnętrznej biblioteki zawierającej zbiór typów geometrii — punktów, rozmiarów, prostokątów, wektorów, kwadratów, kwaternionów, macierzy. graphene został przeniesiony do systemu kompilacji Meson .

Potok renderowania GSK

GSK stosuje podejście dwuwarstwowe:

  1. Dolna warstwa to proste renderujące drzewo operacji; można go przekształcić w odpowiednie polecenia renderowania przy minimalnych zmianach stanu, więc zostaje przekształcony w potok renderowania. Drzewo operacji renderowania jest reprezentowane przez instancje GskRenderNode; instancja GskRenderer pobiera węzły renderowania i przesyła je (po potencjalnej zmianie kolejności i przekształceniu ich do bardziej odpowiedniej reprezentacji) do bazowego systemu graficznego.
  2. warstwa wyższa: złożony zestaw warstw logicznych; dodaje wygodny interfejs API wysokiego poziomu dla twórców aplikacji.

Interfejsy API renderowania

Począwszy od wersji GTK 3.90, która jest wersją rozwojową tego, co stanie się GTK 4, GSK obsługuje renderowanie przy użyciu następujących zaplecza:

Historia

Nieład

Clutter został udostępniony publicznie 22 czerwca 2006. Biblioteka integracyjna „clutter-gtk” jest dostępna od 2006-11-29.

Na 2nd Desktop Summit w sierpniu 2011 w Berlinie sporo mówiono o „GTK+ 4.0 i Clutter 2.0”.

Pomysł na wprowadzenie wykresu sceny do GTK

W 2008 roku programiści, tacy jak Havoc Pennington , rozważali dodanie płótna sceny do GTK, ponieważ ludzie spoza GTK korzystali z rzeczy takich jak Clutter , Pigment , HippoCanvas lub GooCanvas . Zaproponowano uczynienie graficznych elementów sterujących (widżetów) jednym rodzajem obiektu w bardziej elastycznym grafie sceny.

GSK

Przed GSK rysowanie było wykonywane przez GDK - obsługujące podstawowe renderowanie , takie jak prymitywy rysunkowe, grafika rastrowa (mapy bitowe), kursory , czcionki , a także zdarzenia okien i funkcjonalność przeciągnij i upuść .

W czerwcu 2006 wydano Clutter , bibliotekę „interaktywnego płótna” opartą na OpenGL. Clutter ma swój własny wykres sceny, a programiści GNOME woleli używać wykresu sceny Clutter z GTK, wspieranego przez bibliotekę o nazwie clutter-gtk. Bałagan można osadzić w każdej aplikacji GNOME za pomocą biblioteki clutter-gtk. Biblioteka clutter-gtk udostępnia widżet GtkClutterEmbed GTK, którego można użyć do wyświetlenia ClutterStage.

Niektórzy zastanawiali się, jak połączyć Clutter i GTK w lepszy sposób niż biblioteka clutter-gtk.

W 2011 roku Firefox wprowadził „Azure”, a Joe Drew i Bas Schouten zadali sobie kilka wyjaśnień.

  • Na GUADEC2013 w Brnie Emmanuele podzielił się swoim pomysłem na implementację wykresu sceny i frameworka animacji wewnątrz platformy GNOME (po 6 latach pracy nad Clutter).
  • GTK Scene Graph Kit (GSK) to nadchodzący wykres sceny dla GTK, który jest w trakcie pisania przez Emanuele Bassi.
  • W dniu 30 lipca 2014 r. Emanuelle stwierdził, że jego zdaniem nie powinno być samodzielnego Clutter 2.0.

Podczas Developer Experience Hackfest 2014 odbyła się prezentacja dotycząca nowego wykresu scen dla GTK, który ma zostać włączony do GTK+ 3.16. Następnie planowano, że GSK będzie gotowy iw pełni zintegrowany z GTK+ w wersji 3.20, która ma zostać wydana w marcu 2016. Zostało to przełożone na 3.22, a następnie ostatecznie połączone w 3.90.

Posiadanie obsługi OpenGL (lub OpenGL ES ) w GDK ułatwia nieco lepszą kontrolę potoku graficznego ; OpenGL dobrze nadaje się do komponowania teksturowanych danych, ale zupełnie nie nadaje się do rysowania. [ potrzebne źródło ]

Najnowsze informacje o statusie GSK pochodzą z GUADEC 2016.

Inne projekty

Zobacz też

Linki zewnętrzne