GDK - GDK

GDK
GTK+ Softwarearchitektur.svg
Vereinfachte Softwarearchitektur von GTK
Originalautor(en) GIMP-Autoren
Entwickler Das GNOME-Projekt
Repository Bearbeite dies bei Wikidata
Geschrieben in C
Betriebssystem Linux , macOS , Microsoft Windows
Plattform X11 , Wayland , Quarz und GDI
Art Softwarebibliothek
Lizenz GNU Lesser General Public License (LGPL)
Webseite Entwickler .gnome .org /gdk3 /stable /

GDK ( GIMP Drawing Kit) ist eine Bibliothek , die als Wrapper für die Low-Level-Funktionen fungiert, die von den zugrunde liegenden Fenster- und Grafiksystemen bereitgestellt werden. GDK liegt zwischen dem Anzeigeserver und der GTK- Bibliothek und verarbeitet grundlegendes Rendering wie Zeichnungsprimitive, Rastergrafiken (Bitmaps), Cursor , Schriftarten sowie Fensterereignisse und Drag-and-Drop- Funktionalität.

Wie das GTK Scene Graph Kit (GSK) ist das GDK Teil von GTK und unter der GNU Lesser General Public License (LGPL) lizenziert.

Softwarearchitektur

GDK enthält Backends für X11 , Wayland , Broadway ( HTTP ), Quartz und GDI und verlässt sich beim Rendering auf Cairo . Sein neuer Szenengraph (Leinwand) ist in Arbeit, seine Ankunft sollte GTK 4.0 einläuten.

GTK wird auf einer Abstraktionsschicht namens GDK implementiert, wodurch GTK von Low-Level-Problemen wie Eingabeerfassung, Drag-and-Drop und Pixelformatkonvertierung befreit wird . GDK ist eine Zwischenschicht, die GTK von den Details des Fenstersystems trennt.

GDK ist ein wichtiger Bestandteil der Portabilität von GTK. Da GLib bereits plattformübergreifende Low-Level-Funktionalität bereitstellt , muss GDK lediglich auf die Grafikschicht des zugrunde liegenden Betriebssystems portiert werden, um GTK auf anderen Plattformen laufen zu lassen . Daher ermöglichen die GDK-Ports zur Windows-API und Quartz die Ausführung von GTK-Anwendungen unter Windows bzw. macOS .

Ab GTK+ 2.8 unterstützt GDK Cairo , das mit GTK+ 3 anstelle der Zeichenfunktionen von GDK verwendet werden sollte.

GDK ist eine Zwischenschicht, die GTK von den Details des Fenstersystems isoliert . GDK ist ein dünner Wrapper um Xlib . Das X Window System wird mit einer Low-Level-Bibliothek namens Xlib geliefert . Fast jede Funktion im GDK ist ein sehr dünner Wrapper um eine entsprechende Xlib-Funktion; aber ein Teil der Komplexität (und Funktionalität) von Xlib ist verborgen, um die Programmierung zu vereinfachen und die Portierung von GDK auf andere Windowing-Systeme wie Wayland oder Microsoft Windows zu erleichtern . Die versteckte Xlib-Funktionalität wird für Anwendungsprogrammierer selten von Interesse sein; zum Beispiel werden viele Funktionen, die ausschließlich von Fenstermanagern verwendet werden, im GDK nicht verfügbar gemacht.

GDK können Sie niedrigen Niveau Dinge zu tun, wie zB „ blit dieses pixmap auf dem Bildschirm“.

GDK bietet eine Schicht, die viel portabler ist als beispielsweise das X-Protokoll, ohne die Zugänglichkeit auf niedriger Ebene zu beeinträchtigen, die Systeme wie X bieten. Die wahre Stärke dieser Abstraktion besteht darin, dass Ihre Software automatisch auf dem Linux-Framebuffer und unter Windows gerendert wird, wenn Sie sie anstelle von X verwenden.

Die Unterstützung von OpenGL (oder OpenGL ES ) im GDK erleichtert eine etwas bessere Kontrolle der Grafikpipeline ; OpenGL eignet sich gut zum Zusammensetzen von texturierten Daten, aber völlig ungeeignet zum Zeichnen.

GdkFrameClock

GdkFrameClock wurde in GTK 3.8 hinzugefügt

Während GTK-Anwendungen Mainloop-gesteuert bleiben (vgl. Glib-Ereignisschleife ), dh die Anwendung ist die meiste Zeit in dieser Hauptschleife im Leerlauf und wartet nur darauf, dass etwas passiert und ruft dann die entsprechende Subroutine auf, wenn dies geschieht, fügt GdkFrameClock einen zusätzlichen Mechanismus hinzu, das gibt der Anwendung einen "Impuls". Es teilt der Anwendung mit, wann ein Fenster aktualisiert und neu gezeichnet werden soll. Die Beat-Rate kann mit der Monitor-Aktualisierungsrate synchronisiert werden.

GTK-Szenengrafik-Kit

In seiner Geschichte hat GDK mehrere verschiedene Canvases enthalten und mit diesen verknüpft .

Die Entwickler dachten auch über neue Richtungen für die Bibliothek nach, darunter das Entfernen veralteter API- Komponenten und das Hinzufügen eines integrierten Szenengraphen-(Leinwand-) Systems, ähnlich der Clutter- Grafikbibliothek, das GTK effektiv mit OpenGL und Vulkan integriert .

GTK+ Scene Graph Kit (GSK) wurde im März 2017 als Teil von GTK+ 3.90 veröffentlicht. Es ist die Szenengraph- und Rendering-API für GTK. GSK wurde nicht weiter in GDK (das auch Teil von GTK ist) integriert, sondern wird in einem eigenen Verzeichnis geführt.

Fenstersysteme

GDK enthält Back-Ends für einige Windowing-Systeme , nämlich für die Protokolle X11 und Wayland , für Quartz und GDI und sogar für die Hypertext Transfer Protocol (HTTP) Engine Broadway.

Mit der Veröffentlichung von GNOME 3.16 im März 2015 hat GDK ein experimentelles Back-End für das Mir- Display-Server-Protokoll erhalten. Das Mir-Display-Server-Protokoll ist ein Produkt von Canonical für ihre Ubuntu- Distribution von Linux, das mit dem Wayland-Display-Server-Protokoll konkurrieren soll; bisher ist es nur in Ubuntu implementiert.

Derzeit existiert kein Back-End für KMS .

Um eine Anwendung zu starten und zu erzwingen, dass diese Instanz ein bestimmtes Fenstersystem verwendet, geben Sie die Variable GDK_BACKEND an :
GDK_BACKEND=wayland gnome-calculator
GDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese

gdk-pixbuf

gdk-pixbuf ist ein Toolkit zum Laden von Bildern und zur Manipulation des Pixelpuffers. Die Bibliothek bietet Funktionen zum Laden und Speichern von Bildern, schnelles Skalieren und Zusammensetzen von Pixbufs, einfaches Laden von Animationen (dh animierte GIFs) und das Rendern des libart-Bildpuffers in eine GdkDrawable-Instanz.

gdk-pixbuf hat eine ziemlich große API.

Die grundlegende Struktur der gdk-pixbuf-Bibliothek ist GdkPixbuf, eine private, undurchsichtige Datenstruktur, die viele der Konzepte widerspiegelt, die ArtPixBuf unterstützt. Tatsächlich haben die meisten privaten Datenfelder von GdkPixbuf dieselben Namen und Datentypen wie die entsprechenden Felder in ArtPixBuf. Diese Ähnlichkeit geht auf die früheren Tage zurück, als gdk-pixbuf ein Wrapper um libart war . Seitdem wurde die libart-Abhängigkeit entfernt und gdk-pixbuf wurde in die GTK+ 2.0-Codebasis integriert. Daher sind die Tage von gdk-pixbuf als eigenständige Bibliothek auf die Version GNOME 1.x beschränkt.

Mit der Veröffentlichung von GTK+ 2.22 am 23.09.2010 wurde gdk-pixbuf wieder in eine eigenständige Bibliothek umgewandelt, nachdem es seit gtk+ 2.0 als Teil von GTK+ ausgeliefert wurde. Dies geschah in Vorbereitung auf den Übergang zu GTK+ 3.

Die erste eigenständige Version war 2.22 am 21.09.2010 , die Entwicklung begann mit 2.21.3 am 23.06.2010 .

Die neueste Version von gdk-pixbuf ist gdk-pixbuf 2.36.11 vom 02.10.2017 . Die Entwicklung von 3.36 begann mit 3.35.1 am 26.04.2016.

Geschichte

GDK wurde ursprünglich auf dem X Window System für den Rastergrafikeditor GIMP entwickelt .

Siehe auch

Verweise

Externe Links