GDK
Originalförfattare | GIMP-författare |
---|---|
Utvecklare | GNOME-projektet |
Förvar | |
Skrivet i | C |
Operativ system | Linux , macOS , Microsoft Windows |
Plattform | X11 , Wayland , Quartz och GDI |
Typ | Programvarubibliotek |
Licens | GNU Lesser General Public License (LGPL) |
Hemsida |
GDK ( GIMP Drawing Kit) är ett bibliotek som fungerar som ett omslag kring lågnivåfunktionerna som tillhandahålls av de underliggande fönster- och grafiksystemen. GDK ligger mellan visningsservern och GTK- biblioteket och hanterar grundläggande rendering som ritning av primitiver, rastergrafik (bitmappar), markörer , teckensnitt samt fönsterhändelser och dra-och-släpp- funktioner.
Liksom GTK Scene Graph Kit (GSK), är GDK en del av GTK och licensieras under GNU Lesser General Public License (LGPL).
Mjukvaruarkitektur
GTK är implementerat ovanpå ett abstraktionslager som kallas GDK, vilket befriar GTK från lågnivåproblem som insamling av indata, dra och släpp och konvertering av pixelformat. GDK är ett mellanlager som separerar GTK från detaljerna i fönstersystemet.
GDK är en viktig del av GTK:s portabilitet. Eftersom plattformsoberoende lågnivåfunktionalitet redan tillhandahålls av GLib , är allt som behövs för att få GTK att köras på andra plattformar att porta GDK till det underliggande operativsystemets grafiklager. Därför är GDK-portarna till Windows API och Quartz det som gör att GTK-applikationer kan köras på Windows respektive macOS .
Från och med GTK+ 2.8 stödjer GDK Cairo som bör användas med GTK+ 3 istället för GDK:s ritfunktioner.
GDK är ett mellanlager som isolerar GTK från detaljerna i fönstersystemet . GDK är ett tunt omslag runt Xlib . X Window System kommer med ett lågnivåbibliotek som heter Xlib . Nästan varje funktion i GDK är ett mycket tunt omslag runt en motsvarande Xlib-funktion; men en del av komplexiteten (och funktionaliteten) hos Xlib är dold, för att förenkla programmering och för att göra GDK lättare att porta till andra fönstersystem, som Wayland eller Microsoft Windows. Den dolda Xlib-funktionaliteten kommer sällan att vara av intresse för applikationsprogrammerare; till exempel är många funktioner som enbart används av fönsterhanterare inte exponerade i GDK.
GDK låter dig göra saker på låg nivå, som t.ex. " blit this pixmap till skärmen".
GDK tillhandahåller ett lager som är mycket mer portabelt än säg X-protokollet, utan att offra någon av den lågnivåtillgänglighet som system som X tillhandahåller. Den sanna kraften i denna abstraktion är att om du väljer att använda den istället för att säga X, kommer din programvara automatiskt att renderas på Linux Framebuffer och Windows.
Att ha stöd för OpenGL (eller OpenGL ES ) i GDK, underlättar en något bättre kontroll av grafikpipelinen ; OpenGL är väl lämpad för sammansättning av texturerad data men totalt olämplig för ritning.
GdkFrameClock
GdkFrameClock lades till i GTK 3.8
Medan GTK-applikationer förblir mainloopdrivna (jfr. Glib event loop ), vilket betyder att applikationen är inaktiv i denna huvudloop för det mesta och bara väntar på att något ska hända och sedan anropar lämplig subrutin när den gör det, lägger GdkFrameClock till en extra mekanism, som ger en "puls" till applikationen. Den talar om för applikationen när den ska uppdatera och måla om ett fönster. Slaghastigheten kan synkroniseras med monitorns uppdateringsfrekvens.
GTK Scene Graph Kit
I sin historia innehöll och länkade GDK med ett par olika dukar .
Utvecklare övervägde också nya riktningar för biblioteket, inklusive att ta bort föråldrade API- komponenter och lägga till ett integrerat scengrafsystem (canvas) som liknar Clutter -grafikbiblioteket, vilket effektivt integrerar GTK med OpenGL och Vulkan .
- GTK Scene Graph Kit (GSK)
GTK+ Scene Graph Kit (GSK) släpptes som en del av GTK+ 3.90 i mars 2017. Det är scengrafen och renderings-API:et för GTK. GSK har inte integrerats ytterligare med GDK (som också är en del av GTK) utan hålls i sin egen katalog.
Fönstersystem
GDK innehåller back-ends till ett par fönstersystem , nämligen till X11- och Wayland -protokollen, till Quartz och GDI , och till och med till Hypertext Transfer Protocol (HTTP)-motorn Broadway.
Med lanseringen av GNOME 3.16 i mars 2015, fick GDK en experimentell back-end för Mir -visningsserverprotokollet. Mir-visningsserverprotokollet är en produkt från Canonical för deras Ubuntu- distribution av Linux, som de har för avsikt att konkurrera med Wayland-visningsserverprotokollet; än så länge är det bara implementerat i Ubuntu.
För närvarande finns ingen back-end för KMS .
För att starta en applikation och tvinga denna instans av den att använda ett visst fönstersystem, anger du variabeln GDK_BACKEND : GDK_BACKEND=wayland gnome-calculator
GDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese
gdk-pixbuf
gdk-pixbuf är en verktygslåda för bildladdning och pixelbuffertmanipulation. Biblioteket tillhandahåller bildladdnings- och lagringsmöjligheter, snabb skalning och sammansättning av pixbufs, enkel laddning av animationer (dvs animerade GIF-filer) och rendering av libart-bildbufferten till en GdkDrawable-instans.
gdk-pixbuf har ett ganska stort API.
Grundstrukturen i gdk-pixbuf-biblioteket är GdkPixbuf, en privat, ogenomskinlig datastruktur som speglar många av samma koncept som ArtPixBuf stöder. Faktum är att de flesta av GdkPixbufs privata datafält har samma namn och datatyper som motsvarande i ArtPixBuf. Denna likhet går tillbaka till de tidigare dagarna när gdk-pixbuf var ett omslag kring libart . Sedan dess har libart-beroendet tagits bort, och gdk-pixbuf slogs samman till GTK+ 2.0-kodbasen. Som sådan är gdk-pixbufs dagar som ett fristående bibliotek begränsade till GNOME 1- utgåvan.
Med lanseringen av GTK+ 2.22 den 2010-09-23 har gdk-pixbuf förvandlats tillbaka till ett fristående bibliotek, efter att ha skickats som en del av GTK+ sedan gtk+ 2.0. Detta gjordes som förberedelse för övergången till GTK+ 3.
Den första fristående utgåvan var 2.22 2010-sep-21, dess utveckling började med 2.21.3 2010-06-23.
Den senaste versionen av gdk-pixbuf är gdk-pixbuf 2.36.11 från 2017-okt-02. Utvecklingen av 3.36 startade med 3.35.1 2016-04-26.
Historia
GDK utvecklades ursprungligen på X Window System för GIMP- rastergrafikredigeraren .
Se även
externa länkar
- GDK-kod från utgåvan GTK+ 3.19.0
- Den moderna Gtk-ritningsmodellen – Alexander Larsson, 2013/11/04
- Översikt över GTK och dess bibliotek - GTK-projektet
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg