<?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="es">

  <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>Abstracción de bajo nivel para el sistema de ventanas</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Daniel Mustieles</mal:name>
      <mal:email>daniel.mustieles@gmail.com</mal:email>
      <mal:years>2011-2017</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Jorge González</mal:name>
      <mal:email>jorgegonz@svn.gnome.org</mal:email>
      <mal:years>2007-2010</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Mario Carrión</mal:name>
      <mal:email>mario@monouml.org</mal:email>
      <mal:years>2006</mal:years>
    </mal:credit>
  </info>

<title>GDK</title>

  <p>GDK es la biblioteca de bajo nivel que usa <link xref="tech-gtk">GTK+</link> 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.</p>

<p>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 <code>GtkButton</code> registrará los eventos <code>GDK_BUTTON_PRESS</code> y <code>GTK_BUTTON_RELEASE</code>, que provienen del ratón, y los traducirá a la señal <code>GtkButton::clicked</code> cuando el usuario pulsa y suelta el botón el ubicación adecuada.</p>

<p>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.</p>

<p>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.</p>

  <p>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 <link xref="tech-cairo">Cairo</link> para dibujar gráficos 2D de alta calidad.</p>

<list style="compact">
  <item><p><link href="https://developer.gnome.org/gdk3/stable/">Manual de referencia de GTK+</link></p></item>
</list>
</page>
