<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="tech-gdk" xml:lang="pt-BR">
<info>
<link type="guide" xref="tech" group="gdk"/>
<revision pkgversion="3.0" date="2011-04-05" status="candidate"/>
<credit type="author copyright">
<name>Shaun McCance</name>
<email its:translate="no">shaunm@gnome.org</email>
<years>2011–2012</years>
</credit>
<include xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>
<desc>Abstração de baixo nível para sistema de janela</desc>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Enrico Nicoletto</mal:name>
<mal:email>liverig@gmail.com</mal:email>
<mal:years>2009</mal:years>
</mal:credit>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Rafael Fontenelle</mal:name>
<mal:email>rafaelff@gnome.org</mal:email>
<mal:years>2013, 2014, 2016, 2017</mal:years>
</mal:credit>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Isaac Ferreira Filho</mal:name>
<mal:email>isaacmob@riseup.net</mal:email>
<mal:years>2018</mal:years>
</mal:credit>
</info>
<title>GDK</title>
<p>GDK é a biblioteca de baixo nível utilizada pelo <link xref="tech-gtk">GTK+</link> 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.</p>
<p>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 <code>GtkButton</code> vai rastrear eventos <code>GDK_BUTTON_PRESS</code> e <code>GTK_BUTTON_RELEASE</code>, que vêm do mouse e os traduz como apropriado em um sinal <code>GtkButton::clicked</code> quando o usuário pressiona e solta o botão na localização correta.</p>
<p>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.</p>
<p>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.</p>
<p>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 <link xref="tech-cairo">Cairo</link> para desenhar gráficos 2D de alta qualidade.</p>
<list style="compact">
<item><p><link href="https://developer.gnome.org/gdk3/stable/">Manual de referência do GDK</link></p></item>
</list>
</page>