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

  <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>Nízkoúrovňová abstrakce pro okenní systém</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Lucas Lommer</mal:name>
      <mal:email>llommer@svn.gnome.org</mal:email>
      <mal:years>2009.</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Marek Černocký</mal:name>
      <mal:email>marek@manet.cz</mal:email>
      <mal:years>2015.</mal:years>
    </mal:credit>
  </info>

<title>GDK</title>

  <p>GDK je nízkoúrovňová knihovna používaná knihovnou <link xref="tech-gtk">GTK</link> ke spolupráci s okenním systémem pro grafická a vstupní zařízení. Ačkoliv ve svém kódu zřídka kdy použijete přímo GDK, tak ta obsahuje veškerou nutnou funkcionalitu pro výtváření oken na obrazovce na nízké úrovni a pro komunikaci s uživatelem přes různá vstupní zařízení. GDK vystupuje jako abstrakce nad různými okenními systémy, takže GTK může být portováno na všechny z nich: X Windows (X11), Microsoft Windows, MAC OS X Quartz.</p>

<p>GDK vám dovoluje přístup k událostem z klávesnice, myši a dalších vstupních zařízení. Implementace widgetů v GTK využívá této funkcionality a překládá události na vysokoúrovňové signály, které pak mohou být použity v kódu aplikace. Například widget <code>GtkButton</code> sleduje události <code>GDK_BUTTON_PRESS</code> a <code>GDK_BUTTON_RELEASE</code>, které přichází od myši a příslušně je překládá na signál <code>GtkButton::clicked</code>, když uživatel zmáčkně nebo uvolní tlačítko na správném místě.</p>

<p>GDK také poskytuje nízkoúrovňové rutiny pro přístup k „táhni a upusť“ a k datům schránky. Když implementujete vlastní ovládací prvky, potřebujete přístup k těmto funkcím, abyste mohli implementovat správné chování při spolupráci s uživatelem.</p>

<p>GDK poskytuje i další funkcionalitu, která je zapotřebí k implementaci úplné sady grafických nástrojů, jako je GTK. Protože GDK vystupuje jako abstrakce platformy, aby umožnila běh GTK pod různými prostředími, poskytuje API pro veškerou systémovou funkcionalitu potřebnou v GTK. A to včetně informací o víceobrazovkových displejích, rozlišení a barevné hloubce, mapování barev a kurzorech.</p>

  <p>GDK byste měli použít kdykoliv potřebujete nízkoúrovňový přístup do podkladové vrstvy oknního systému, včetně nízkoúrovňového přístupu k událostem, oknům a schránce. Použití GDK k těmto úkolům zajistí, že váš kód bude přenositelný, že se začlnění se zbytkem vaše kódu pro GTK. Jednoduché kreslící rutiny v GDK by se obecně používat neměly. Jsou pozůstatkem z doby, kdy GDK je prostě obalovalo kreslící primitiva okenního systému. Místo toho byste měli používat rozšiřující funkce poskytované <link xref="tech-cairo">knihovou Cairo</link>, která slouží ke kreslení vysoce kvalitní grafiky ve 2D.</p>

<list style="compact">
  <item><p><link href="https://developer.gnome.org/gdk3/stable/">Referenční příručka ke knihovně GDK</link></p></item>
</list>
</page>
