Shaun McCance
shaunm@gnome.org 2011 – 2012
Nízkoúrovňová abstrakce pro okenní systém
Lucas Lommer
llommer@svn.gnome.org 2009.
Marek Černocký
marek@manet.cz 2015.

# GDK

GDK je nízkoúrovňová knihovna používaná knihovnou GTK+ ke spolupráci s okenním systémem pro grafická a vstupní zařízení. Ačkoliv ve svém kódu zřídka kdy použijete přímo GDK, tak ta obsahuje veškerou nutnou funkcionalitu pro výtváření oken na obrazovce na nízké úrovni a pro komunikaci s uživatelem přes různá vstupní zařízení. GDK vystupuje jako abstrakce nad různými okenními systémy, takže GTK+ může být portováno na všechny z nich: X Windows (X11), Microsoft Windows, MAC OS X Quartz.

GDK vám dovoluje přístup k událostem z klávesnice, myši a dalších vstupních zařízení. Implementace widgetů v GTK+ využívá této funkcionality a překládá události na vysokoúrovňové signály, které pak mohou být použity v kódu aplikace. Například widget `GtkButton` sleduje události `GDK_BUTTON_PRESS` a `GDK_BUTTON_RELEASE`, které přichází od myši a příslušně je překládá na signál `GtkButton::clicked`, když uživatel zmáčkně nebo uvolní tlačítko na správném místě.

GDK také poskytuje nízkoúrovňové rutiny pro přístup k „táhni a upusť“ a k datům schránky. Když implementujete vlastní ovládací prvky, potřebujete přístup k těmto funkcím, abyste mohli implementovat správné chování při spolupráci s uživatelem.

GDK poskytuje i další funkcionalitu, která je zapotřebí k implementaci úplné sady grafických nástrojů, jako je GTK+. Protože GDK vystupuje jako abstrakce platformy, aby umožnila běh GTK+ pod různými prostředími, poskytuje API pro veškerou systémovou funkcionalitu potřebnou v GTK+. A to včetně informací o víceobrazovkových displejích, rozlišení a barevné hloubce, mapování barev a kurzorech.

GDK byste měli použít kdykoliv potřebujete nízkoúrovňový přístup do podkladové vrstvy oknního systému, včetně nízkoúrovňového přístupu k událostem, oknům a schránce. Použití GDK k těmto úkolům zajistí, že váš kód bude přenositelný, že se začlnění se zbytkem vaše kódu pro GTK+. Jednoduché kreslící rutiny v GDK by se obecně používat neměly. Jsou pozůstatkem z doby, kdy GDK je prostě obalovalo kreslící primitiva okenního systému. Místo toho byste měli používat rozšiřující funkce poskytované knihovou Cairo, která slouží ke kreslení vysoce kvalitní grafiky ve 2D.

Referenční příručka ke knihovně GDK