Shaun McCance
shaunm@gnome.org 2011–2012
Abstração de baixo nível para sistema de janela
Enrico Nicoletto
liverig@gmail.com 2009
Rafael Fontenelle
rafaelff@gnome.org 2013, 2014, 2016, 2017
Isaac Ferreira Filho
isaacmob@riseup.net 2018

# GDK

GDK é a biblioteca de baixo nível utilizada pelo GTK+ para interagir com o sistema de janela por gráficos e dispositivos de entrada. Embora você raramente usará a GDK diretamente no código do aplicativo, ela contém todas as funcionalidades necessárias para criar janelas de baixo nível na tela e para interagir com o usuário com vários dispositivos de entrada. GDK age como uma abstração sobre vários sistemas de janela, de forma que GTK+ pode ser portável para todas elas: o X Window System (X11), Microsoft Windows, Mac OS X Quartz.

GDK permite que você acesse eventos de teclados, mouses e outros dispositivos de entrada. Implementações de widgets no GTK+ usam essa funcionalidade e traduzem os eventos em sinais de alto nível que podem, por sua vez, ser usados a partir do código do aplicativo. Por exemplo, um widget `GtkButton` vai rastrear eventos `GDK_BUTTON_PRESS` e `GTK_BUTTON_RELEASE`, que vêm do mouse e os traduz como apropriado em um sinal `GtkButton::clicked` quando o usuário pressiona e solta o botão na localização correta.

GDK também oferece rotinas de baixo nível para acessar dados do arrastar-e-soltar e da área de transferência do sistema. Quando implementados controles customizados, você poderá precisar acessar esses recursos para implementar um próprio comportamento de interação com o usuário.

GDK oferece outra funcionalidade que é necessária para a implementação de um kit completo de ferramentas gráficas como o GTK+. Como GDK atua como uma abstração de plataforma, que permite ao GTK+ ser executado em vários ambientes, ele fornece uma API para todas as funcionalidades do sistema que precisem do GTK+. Isto inclui informações sobre exibição de multi-monitores, resolução, profundidade da cor, mapas de cores e cursores.

Você deve usar GDK toda vez que precise acesso de baixo nível para o sistema de janelas subjacente, incluindo acesso de baixo nível para eventos, janelas e para a área de transferência. Usar GDK para estas tarefas garante que seu código é portável e integra-se com o resto do seu código GTK+. Geralmente rotinas simples de desenho no GDK não devem ser usadas; essas são restos de quando GDK simplesmente interfaceava as primitivas de desenho do sistema de janela. Ao invés disso você deve usar a funcionalidade extensiva fornecida pelo Cairo para desenhar gráficos 2D de alta qualidade.

Manual de referência do GDK