<?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>
  </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>
