Abstracción de bajo nivel para el sistema de ventanas
Daniel Mustieles
daniel.mustieles@gmail.com 2011-2015
Jorge González
jorgegonz@svn.gnome.org 2007-2010
Mario Carrión
mario@monouml.org 2006

# GDK

GDK es la biblioteca de bajo nivel que usa GTK+ para interactuar con el sistema de ventanas para los dispositivos gráficos y de entrada. Aunque rara vez usará GDK directamente en el código de la aplicación, contiene toda la funcionalidad necesaria para crear ventanas de bajo nivel en la pantalla y para interactuar con el usuario con varios dispositivos de entrada. GDK actúa como una capa de abstracción sobre varios sistemas de ventanas, por lo que GTK+ se puede usar en todos ellos: el sistema X-Window (X11), Microsoft Windows y Mac OS X Quartz.

GDK le permite acceder a eventos del teclado, del ratón y a otros dispositivos de entrada. Las implementaciones de widgets en GTK+ usan esta funcionalidad, y traducen los eventos en señales de alto nivel que se pueden usar desde el código de la aplicación. Por ejemplo, un widget `GtkButton` registrará los eventos `GDK_BUTTON_PRESS` y `GTK_BUTTON_RELEASE`, que provienen del ratón, y los traducirá a la señal `GtkButton::clicked` cuando el usuario pulsa y suelta el botón el ubicación adecuada.

GDK también proporciona rutinas de bajo nivel para acceder a los datos de arrastrar y soltar y del portapapeles del sistema. Cuando implemente controles personalizados, quizá deba acceder a estas características para implementar un comportamiento adecuado de la interacción con el usuario.

GDK proporciona otra funcionalidad necesaria para implementar un toolkit gráfico completo como GTK+. Ya que GDK actúa como una plataforma de abstracción, permitiendo que GTK+ se ejecute en múltiples entornos, proporciona una API para todas las funcionalidades del sistema que necesita GTK+. Esto incluye información acerca configuraciones multimonitor, resolución y profundidad de color, mapas de colores y cursores.

Debería usar GDK siempre que necesite acceso de bajo nivel al sistema de ventanas, incluyendo acceso a bajo nivel para eventos, ventanas y al portapapeles. Usar GDK para estas tareas asegura que su código es portable y se integra con el resto de su código GTK+. Generalmente no deberían usarse las rutinas de dibujado simple en GDK; estas se dejan para cuando GDK simplemente envuelve las primitivas de dibujado del sistema de ventanas. En su lugar, debería usar la extensa funcionalidad que proporciona Cairo para dibujar gráficos 2D de alta calidad.

Manual de referencia de GTK+