Shaun McCance
shaunm@gnome.org 2011–2012
Lågnivåabstraktion för fönstersystemet
Daniel Nylander
po@danielnylander.se 2007
Anders Jonsson
anders.jonsson@norsjovallen.se 2017, 2018

# GDK

GDK är lågnivåbiblioteket som används av GTK för att interagera med fönstersystemet för grafik och indataenheter. Även om du sällan kommer att använda GDK direkt i programkod så innehåller det all nödvändig funktionalitet för att skapa lågnivåfönster på skärmen och för att interagera med användaren med olika inmatningsenheter. GDK agerar som en abstraktion över diverse fönstersystem, så att GTK kan porteras till dem alla: X Window System (X11), Microsoft Windows, Mac OS X Quartz.

GDK låter dig komma åt händelser från tangentbord, möss och andra inmatningsenheter. Implementationer av komponenter i GTK använder denna funktionalitet och översätter händelserna till signaler på högre nivå som i sin tur kan användas från programkod. Till exempel kommer en `GtkButton`-komponent att spåra `GDK_BUTTON_PRESS`- och `GDK_BUTTON_RELEASE`-händelser, vilka kommer från musen, och översätta dem som lämpligt till en `GtkButton::clicked`-signal när användaren trycker ner och släpper upp knappen på rätt plats.

GDK tillhandahåller också lågnivårutiner för att komma åt dra-och-släpp och urklippsdata från systemet. Då anpassade kontroller implementeras kan du behöva komma åt dessa funktioner för att implementera lämpligt beteende för användarinteraktion.

GDK tillhandahåller annan funktionalitet som behövs för att implementera en fullständig grafisk verktygslåda som GTK. Eftersom GDK agerar som en plattformsabstraktion, vilken låter GTK köra under flera miljöer, så tillhandahåller den ett API för all systemfunktionalitet som behövs av GTK. Detta inkluderar information om visning över flera skärmar, upplösning och färgdjup, färgkartor och markörer.

Du bör använda GDK närhelst du behöver lågnivååtkomst till det underliggande fönstersystemet, inklusive lågnivååtkomst till händelser, fönster och urklipp. Att använda GDK för dessa uppgifter säkerställer att din kod är portabel och integrerad med resten av din GTK-kod. De enkla utritningsrutinerna i GDK bör i allmänhet inte användas, dessa är en kvarleva från när GDK helt enkelt var ett omslag till fönstersystemets utritningsprimitiver. Istället bör du använda den omfattande funktionalitet som tillhandahålls av Cairo för att rita 2D-grafik med hög kvalitet.

GDK-referenshandbok