view DOCS/xml/cs/skin.xml @ 29585:a17d4f8040f1

free(), delete and delete[] are all different and can't just be used at random, so change code to use the one appropriate for the allocation used.
author reimar
date Wed, 02 Sep 2009 11:07:02 +0000
parents 0f1b5b68af32
children 6fd8caca0f9c
line wrap: on
line source

<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r21612 -->
<appendix id="skin">
<title>Formát skinů <application>MPlayer</application>u</title>

<sect1 id="skin-overview">
<title>Přehled</title>

<para>
Nemá to sice nic společného s formátem skinu, ale měli byste vědět, že
<application>MPlayer</application> <emphasis role="bold">nemá</emphasis>
vestavěný skin, takže <emphasis role="bold">si musíte alespoň jeden skin
nainstalovat, chcete-li používat GUI.</emphasis>
</para>

<!-- ********** -->

<sect2 id="skin-overview-directories">
<title>Adresáře</title>

<para>
Adresáře prohledávané na skiny jsou (v tomto pořadí):
<orderedlist>
<listitem><para>
  <filename class="directory">$(DATADIR)/skins/</filename>
</para></listitem>
<listitem><para>
  <filename class="directory">$(PREFIX)/share/mplayer/skins/</filename>
</para></listitem>
<listitem><para>
  <filename class="directory">~/.mplayer/skins/</filename>
</para></listitem>
</orderedlist>
</para>

<para>
Poznamenejme, že první z cest se může lišit podle toho, jak je
<application>MPlayer</application> zkonfigurován (viz volby  configure skriptu
<option>--prefix</option> a <option>--datadir</option>).
</para>

<para>
Každý skin je instalován do vlastního adresáře v některém z výše uvedených.
Například:
<screen>$(PREFIX)/share/mplayer/skins/default/</screen>
</para>
</sect2>

<!-- ********** -->

<sect2 id="skin-overview-formats">
<title>Formáty obrázků</title>

<para>Obrázky musí být truecolor (24 nebo 32 bpp) PNG.</para>
<para>
V hlavním okně a v přehrávači (viz níž) můžete použít obrázky s 'průhledností':
Oblasti vyplněné barvou #FF00FF (magenta) jsou plně průhledné, pokud jsou
zobrazovány <application>MPlayer</application>em. To znamená, že můžete mít
tvarovaná okna, pokud má váš X server XShape rozšíření.
</para>
</sect2>

<sect2 id="skin-overview-components">
<title>Součásti skinu</title>

<para>
Skiny mají poměrně volný formát (narozdíl například od pevného formátu skinů
<application>Winamp</application>u/<application>XMMS</application>),
takže je jen na vás, zda vytvoříte něco skvělého.
</para>

<para>
V současnosti jsou zde čtyři okna, která můžete dekorovat:
<link linkend="skin-file-main">hlavní okno</link>,
<link linkend="skin-file-subwindow">podokno</link>,
<link linkend="skin-file-main">ovládací panel</link> a
<link linkend="skin-file-menu">nabidka</link> (tu lze aktivovat
pravým myšítkem).

<itemizedlist>
<listitem>
  <para>
  <application>MPlayer</application> je ovládán v
  <emphasis role="bold">hlavním okně</emphasis> a/nebo v
  <emphasis role="bold">ovládacím panelu</emphasis>. Pozadím okna je obrázek.
  Následující součásti mohou (a musí) být umístěny v okně:
  <emphasis>tlačítka</emphasis>, <emphasis>potenciometry</emphasis> (šoupátka)
  a <emphasis>popisky</emphasis>.
  Každé součásti musíte nastavit pozici a velikost.
  </para>

  <para>
  A <emphasis role="bold">tlačítko</emphasis> má tři stavy (stisknuto, puštěno a
  zakázáno), proto musí být jeho obraz svisle rozdělen do tří částí.
  Detaily viz součást <link linkend="skin-button">tlačítko</link>.
  </para>

  <para>
  A <emphasis role="bold">potenciometr</emphasis> (hlavně používaný pro
  lištu převíjení a ovládání hlasitosti/stereováhy) může mít libovolný počet
  fází dělících jeho obraz na jednotlivé části pod sebou. Detaily viz
  <link linkend="skin-hpotmeter">hpotenciometr</link> a
  <link linkend="skin-potmeter">potenciometr</link>.
  </para>

  <para>
  <emphasis role="bold">Popisky</emphasis> jsou poněkud zvláštní: Znaky potřebné
  pro jejich vykreslení jsou brány z obrazového souboru a znaky v obrázku jsou
  popsány <link linkend="skin-fonts">souborem popisu fontu</link>.
  Tento (druhý) soubor je prostý textový soubor, který popisuje pozici x,y a
  velikost každého znaku v obrázku (obrázkový soubor a soubor popisu fontu
  <emphasis>spolu</emphasis> tvoří font). Detaily viz
  <link linkend="skin-dlabel">dlabel</link>.
  </para>

  <note><para>
  Všechny obrázky mohou mít plnou průhlednost, jak je popsána v sekci
  o <link linkend="skin-overview-formats">formátech obrázků</link>. Pokud X
  server nepodporuje rozšíření XShape, budou průhledné části černé. Pokud byste
  chtěli využít tuto vlastnost, musí být šířka pozadí hlavního okna celočíselně
  dělitelná 8.
  </para></note>
</listitem>

<listitem><para>
  <emphasis role="bold">Podokno</emphasis> je to okno, kde se zobrazuje film.
  Může v něm být zobrazen určený obrázek, pokud není načten žádný film (je
  docela únavné, pokud zde není nic :-)).
  <emphasis role="bold">Poznámka:</emphasis> průhlednost zde
  <emphasis role="bold">není povolena</emphasis>.
</para></listitem>

<listitem>
  <para>
  <emphasis role="bold">Nabídka</emphasis> je jen způsob, jak ovládat
  <application>MPlayer</application> položkami menu. Vyžadovány jsou dva
  obrázky: jeden z nich jako menu v normálním stavu a druhý se zvýrazněnými
  položkami. Když pak vyvoláte menu, je zobrazen první obrázek. Při pohybu myší
  přes položky, je zkopírována aktuálně vybraná položka z druhého obrázku přes
  ten první pod kursorem (druhý obrázek není nikdy zobrazen celý).
  </para>
  <para>
  Položka menu je definována svou pozicí a velikostí v obrázku (detaily viz
  sekce <link linkend="skin-file-menu">nabídka</link>).
  </para>
</listitem>
</itemizedlist>
</para>

<para>
Jednu důležitou věc jsme ještě nezmínili: Mají-li tlačítka,
potenciometry a položky menu pracovat, musí <application>MPlayer</application>
vědět, co má udělat, pokud je na ně kliknuto. To je zajištěno pomocí
<link linkend="skin-gui">zpráv</link> (událostí). Pro tyto členy tedy musíte
definovat zprávy, které budou při kliku generovány.
</para>
</sect2>

<!-- ********** -->

<sect2 id="skin-files">
<title>Soubory</title>

<para>
Pro výrobu skinu budete potřebovat následující:
<itemizedlist>
<listitem><para>
  Konfigurační soubor jménem <link linkend="skin-file">skin</link> řekne
  <application>MPlayer</application>u, jak má dát jednotlivé části skinu
  dohromady a co udělat, kliknete-li někde v okně.
</para></listitem>
<listitem><para>
  Obrázek pozadí hlavního okna.
</para></listitem>
<listitem><para>
  Obrázky položek hlavního okna (včetně jednoho nebo více souborů s popisem
  fontu pro vykreslování popisek).
</para></listitem>
<listitem><para>
  Obrázek pro zobrazení v podokně (volitelný).
</para></listitem>
<listitem><para>
  Dva obrázky pro nabídku (ty jsou potřeba pouze pokud chcete vytvořit menu).
</para></listitem>
</itemizedlist>
  S výjimkou konfiguračního souboru skinu si můžete pojmenovat ostatní soubory
  jak chcete (s tím, že vaše soubory s popisem fontu budou mít příponu
  <filename>.fnt</filename>).
</para>
</sect2>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="skin-file">
<title>Soubor skin</title>

<para>
Jak jsme již řekli, je to konfigurační soubor skinu. Soubor je řádkově
orientován; řádky s komentářem začínají znakem '<literal>;</literal>'
(před ním jsou povoleny jen mezery a tabulátory).
</para>

<para>
Soubor je složen ze sekcí. Každá sekce popisuje skin pro aplikaci a má
následující formu:
<programlisting>
section = <replaceable>název cekce</replaceable>
.
.
.
end
</programlisting>
</para>

<para>
Zatím máme jen jednu aplikaci, takže potřebujete jen jednu sekci: její název je
<emphasis role="bold">movieplayer</emphasis>.
</para>

<para>
Uvnitř sekce je každé okno posáno blokem, který má následující formu:
<programlisting>
window = <replaceable>název okna</replaceable>
.
.
.
end
</programlisting>
</para>

<para>
kde <replaceable>název okna</replaceable> může být jeden z těchto řetězců:
<itemizedlist>
<listitem><para>
  <emphasis role="bold">main</emphasis> - pro hlavní okno
</para></listitem>
<listitem><para>
  <emphasis role="bold">sub</emphasis> - pro podokno
</para></listitem>
<listitem><para>
  <emphasis role="bold">menu</emphasis> - pro nabídku
</para></listitem>
<listitem><para>
  <emphasis role="bold">playbar</emphasis> - ovládací panel
</para></listitem>
</itemizedlist>
</para>

<para>
(Bloky sub a menu jsou volitelné - nemusíte vytvářet nabídku nebo vyzdobit
podokno.)
</para>

<para>
Uvnitř window bloku můžete definovat každou položku okna řádkem v tomto tvaru:
<programlisting>položka = parametr</programlisting>
Kde <literal>položka</literal> je řetězec označující typ položky GUI a
<literal>parametr</literal> je číselná nebo textová hodnota (nebo seznam hodnot
oddělených čárkami).
</para>

<para>
Dáte-li to všechno dohromady, celý soubor vypadá asi takto:
<programlisting>
section = movieplayer
  window = main
  ; ... položky hlavního okna ...
  end

  window = sub
  ; ... položky podokna ...
  end

  window = menu
  ; ... položky menu ...
  end

  window = playbar
  ; ... položky ovládacího panelu ...
  end
end
</programlisting>
</para>

<para>
Jméno souboru s obrázkem musí být zadáno bez úvodních adresářů - obrázky jsou
vyhledávány v adresáři <filename class="directory">skins</filename>.
Měli byste (ale nemusíte) zadat příponu souboru. Pokud soubor neexistuje,
zkouší <application>MPlayer</application> načíst soubor
<filename>&lt;jméno&gt;.&lt;příp&gt;</filename>, kdy jsou za
<filename>&lt;příp&gt;</filename> zkoušeny přípony <literal>png</literal>
a <literal>PNG</literal> (v tomto pořadí). Použitý bude první vyhovující soubor.
</para>

<para>
Aby bylo vše jasné, uvedeme příklad. Řekněme, že máte obrázek jménem
<filename>main.png</filename>, který použijeme pro hlavní okno:
<programlisting>base = main, -1, -1</programlisting>
<application>MPlayer</application> se pokusí nahrát soubory
<filename>main</filename>, <filename>main.png</filename>, <filename>main.PNG</filename>.
</para>

<para>
Nakonec několik slov o pozicování. Hlavní okno a podokno lze
umístit do odlišných rohů obrazovky zadáním souřadnic <literal>X</literal>
a <literal>Y</literal>. <literal>0</literal> horní nebo levý,
<literal>-1</literal> je střed a <literal>-2</literal> je vpravo nebo dole, jak
je vidět na obrázku:
<informalfigure>
<screen>
(0, 0)----(-1, 0)----(-2, 0)
  |          |          |
  |          |          |
(0,-1)----(-1,-1)----(-2,-1)
  |          |          |
  |          |          |
(0,-2)----(-1,-2)----(-2,-2)
</screen>
</informalfigure>
</para>

<!-- ********** -->

<sect2 id="skin-file-main">
<title>Hlavní okno a ovládací panel</title>

<para>
Níže uvádíme seznam položek, které mohou být použity v blocích
'<literal>window = main</literal>' ... '<literal>end</literal>',
a '<literal>window = playbar</literal>' ... '<literal>end</literal>'.
</para>

<variablelist>
<varlistentry>
  <term><literal>
  <anchor id="skin-main-base"/>base = obrázek, X, Y
  </literal></term>
  <listitem><para>
  Umožňuje nastavit obrázek pozadí hlavního okna. Okno bude vykresleno na
  zadaných souřadnicích <literal>X,Y</literal> na obrazovce a bude mít velikost
  obrázku.
  </para>
  <note><para>
  Tyto koordináty zatím nefungují pro okno display.
  </para></note>
  <warning><para>Průhledné oblasti v obrázku (obarvené #FF00FF) budou černé
  na X serverech bez XShape rozšíření. Šířka obrázku musí být celočíselně
  dělitelná 8.</para></warning>
  </listitem>
</varlistentry>

<varlistentry>
  <term><literal>
  <anchor id="skin-button"/>button = obrázek, X, Y, šířka, výška, zpráva
  </literal></term>
  <listitem><para>
  Umístí tlačítko rozměru <literal>šířka</literal> * <literal>výška</literal>
  na pozici <literal>X,Y</literal>. Zadaná <literal>zpráva</literal> je
  generována při kliku na tlačítko. Zadaný <literal>obrázek</literal> musí
  mít tři části pod sebou (odpovídající možným stavům tlačítka) takto:
  </para>
  <informalfigure>
  <screen>
+------------+
| stisknuto  |
+------------+
|  uvolněno  |
+------------+
|  zakázáno  |
+------------+<!--
  --></screen>
  </informalfigure>
  </listitem>
</varlistentry>

<varlistentry>
  <term><literal>
  <anchor id="skin-decoration"/>decoration = enable|disable
  </literal></term>
  <listitem><para>
  Zapne (enable) nebo vypne (disable) dekoraci hlavního okna, produkovanou
  okenním manažerem. Výchozí je <emphasis role="bold">disable</emphasis>.
  </para>
  <note><para>
  V okně display to nefunguje, není to potřeba.
  </para></note>
  </listitem>
</varlistentry>

<varlistentry>
  <term><literal>
  <anchor id="skin-hpotmeter"/>hpotmeter = tlačítko, tšířka, tvýška, fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva
  </literal></term>
  <listitem><para>
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><literal>
  <anchor id="skin-vpotmeter"/>vpotmeter = tlačítko, tšířka, tvýška, fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva
  </literal></term>
  <listitem><para>
  Umístí vodorovný (hpotmeter) nebo svislý (vpotmeter) potenciometr velikosti
  <literal>šířka</literal> * <literal>výška</literal> na pozici
  <literal>X,Y</literal>. Obrázek může být rozdělen do různých částí pro různé
  fáze potenciometru (Například můžete mít potenciometr pro nastavení hlasitosti,
  jehož dráha se barví ze zelené na červenou, jak se jeho hodnota mění od nejmenší
  do největší.). <literal>hpotmeter</literal> může mít táhlo, které může být
  vodorovně taženo. Význam parametrů:
  <itemizedlist>
  <listitem><para>
    <literal>tlačítko</literal> - obrázek, který se použije pro
    tlačítko (musí mít tři části pod sebou, stejně jako v případě tohoto
    <link linkend="skin-button">tlačítka</link>)
  </para></listitem>
  <listitem><para>
    <literal>tšířka</literal>, <literal>tvýška</literal> -
    velikost tlačítka
  </para></listitem>
  <listitem><para>
    <literal>fáze</literal> - obrázek použitý pro různé fáze
    hpotmetru. Pokud žádný obrázek nechcete, můžete použít speciální hodnotu
    <literal>NULL</literal>. Obrázek musí být rozdělen svisle na
    <literal>počet_fází</literal> částí takto:
    <informalfigure><screen>
+------------+
|   fáze #1  |
+------------+
|   fáze #2  |
+------------+
     ...
+------------+
|   fáze #n  |
+------------+<!--
    --></screen></informalfigure>
  </para></listitem>
  <listitem><para>
    <literal>numphases</literal> - number of phases stored in the
    <literal>počet_fází</literal> - počet fází uložených v
    obrázku <literal>fáze</literal>
    </para></listitem>
    <listitem><para>
      <literal>výchozí</literal> - výchozí hodnota pro hpotmeter
      (v rozsahu <literal>0</literal> až <literal>100</literal>)
      </para></listitem>
    <listitem><para>
      <literal>X</literal>, <literal>Y</literal> - pozice pro hpotmeter
    </para></listitem>
    <listitem><para>
      <literal>šířka</literal>, <literal>výška</literal> - šířka a výška
      <literal>hpotmeter</literal>u
    </para></listitem>
    <listitem><para>
      <literal>zpráva</literal> - zpráva generovaná při změně
      hodnoty <literal>hpotmeter</literal>u
  </para></listitem>
  </itemizedlist>
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><literal>
  <anchor id="skin-potmeter"/>potmeter = fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva
  </literal></term>
  <listitem><para>
  <literal>hpotmeter</literal> bez tlačítka. (soudil bych, že byl míněn jako
  otočný, ale reaguje pouze na horizontální tažení.) Popis parametrů je stejný
  jako v <link linkend="skin-hpotmeter">hpotmeter</link>.
  <literal>fáze</literal> mohou být <literal>NULL</literal>, ale je to vcelku
  k ničemu, jelikož nemůžete vidět, jak je nastaven <literal>potmeter</literal>.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><literal>
  <anchor id="skin-font"/>font = soubor_fontu, id_fontu
  </literal></term>
  <listitem><para>
  Definuje font. <literal>soubor_fontu</literal> je jméno souboru popisu fontu
  s příponou <filename>.fnt</filename> (zde příponu nezadávejte).
  <literal>id_fontu</literal> je použit jako ukazatel na font
  (viz <link linkend="skin-dlabel">dlabel</link>
  a <link linkend="skin-slabel">slabel</link>). Definováno může být více než 25 fontů.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><literal>
    <anchor id="skin-slabel"/>slabel = X, Y, id_fontu, "text";
  </literal></term>
  <listitem><para>
  Umístí statický popisek na pozici <literal>X,Y</literal>.
  <literal>text</literal> je zobrazen fontem identifikovaným pomocí
  <literal>id_fontu</literal>. Text je surový řetězec
  (<literal>$x</literal> proměnné nefungují), který musí být uzavřen
  ve dvojitých uvozovkách (ale znak " nesmí být součástí textu).
  Popisek je zobrazen fontem identifikovaným pomocí <literal>id_fontu</literal>.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><literal>
    <anchor id="skin-dlabel"/>dlabel = X, Y, délka, zarovnání, id_fontu, "text"
  </literal></term>
  <listitem>
  <para>
  Umístí dynamický popisek na pozici <literal>X,Y</literal>. Popisek je
  dynamický proto, že je jeho text periodicky obnovován. Maximální délka
  popisku je nastavena na <literal>délka</literal> (jeho výškou je výška
  znaku). Pokud je zobrazovaný text širší, pak bude rolován,
  jinak bude zarovnán do určeného prostoru podle hodnoty parametru
  <literal>zarovnání</literal>: <literal>0</literal> je zarovnání vpravo,
  <literal>1</literal> na střed, <literal>2</literal> vlevo.
  </para>
  <para>
  Text k zobrazení je zadán parametrem <literal>text</literal>: Musí být uzavřen
  do dvojitých uvozovek (ale znak " nesmí být součástí textu).
  Popisek je zobrazen fontem identifikovaným pomocí <literal>id_fontu</literal>.
  V textu můžete použít tyto proměnné:
  </para>

  <informaltable>
  <tgroup cols="2">
  <thead>
    <row><entry>Proměnná</entry><entry>Význam</entry></row>
  </thead>
  <tbody>
  <row>
    <entry>$1</entry>
    <entry>čas přehrávání ve formátu <emphasis>hh:mm:ss</emphasis></entry>
  </row>
  <row>
    <entry>$2</entry>
    <entry>čas přehrávání ve formátu <emphasis>mmmm:ss</emphasis></entry>
  </row>
  <row>
    <entry>$3</entry>
    <entry>čas přehrávání ve formátu <emphasis>hh</emphasis> (hodiny)</entry>
  </row>
  <row>
    <entry>$4</entry>
    <entry>čas přehrávání ve formátu <emphasis>mm</emphasis> (minuty)</entry>
  </row>
  <row>
    <entry>$5</entry>
    <entry>čas přehrávání ve formátu <emphasis>ss</emphasis> (sekundy)</entry>
  </row>
  <row>
    <entry>$6</entry>
    <entry>délka filmu ve formátu <emphasis>hh:mm:ss</emphasis></entry>
  </row>
  <row>
    <entry>$7</entry>
    <entry>délka filmu ve formátu <emphasis>mmmm:ss</emphasis></entry>
  </row>
  <row>
    <entry>$8</entry>
    <entry>čas přehrávání ve formátu <emphasis>h:mm:ss</emphasis></entry>
  </row>
  <row>
    <entry>$v</entry>
    <entry>hlasitost ve formátu <emphasis>xxx.xx</emphasis>%</entry>
  </row>
  <row>
    <entry>$V</entry>
    <entry>hlasitost ve formátu <emphasis>xxx.xx</emphasis></entry>
  </row>
  <row>
    <entry>$b</entry>
    <entry>stereováha ve formátu <emphasis>xxx.xx</emphasis>%</entry>
  </row>
  <row>
    <entry>$B</entry>
    <entry>stereováha ve formátu <emphasis>xxx.xx</emphasis></entry>
  </row>
  <row>
    <entry>$$</entry>
    <entry>znak $</entry>
  </row>
  <row>
    <entry>$a</entry>
    <entry>znak podle typu audia (žádné: <literal>n</literal>,
    mono: <literal>m</literal>, stereo: <literal>t</literal>)</entry>
  </row>
  <row>
    <entry>$t</entry>
    <entry>číslo stopy (v playlistu)</entry>
  </row>
  <row>
    <entry>$o</entry>
    <entry>název souboru</entry>
  </row>
  <row>
    <entry>$f</entry>
    <entry>název souboru malými písmeny</entry>
  </row>
  <row>
    <entry>$F</entry>
    <entry>název souboru velkými písmeny</entry>
  </row>
  <row>
    <entry>$T</entry>
    <entry>znak podle typu datového proudu (soubor: <literal>f</literal>,
    Video CD: <literal>v</literal>, DVD: <literal>d</literal>,
    URL: <literal>u</literal>)
    </entry>
  </row>
  <row>
    <entry>$p</entry>
    <entry>znak <keycap>p</keycap> (pokud přehráváte soubor a font obsahuje
    znak <keycap>p</keycap>)</entry>
  </row>
  <row>
    <entry>$s</entry>
    <entry>znak <keycap>s</keycap> character (pokud přehráváte soubor a font obsahuje
    znak <keycap>s</keycap>)</entry>
  </row>
  <row>
    <entry>$e</entry>
    <entry>znak <keycap>e</keycap> (pokud je přehrávání pozastaveno a font obsahuje
    znak <keycap>e</keycap>)</entry>
  </row>
  <row>
    <entry>$x</entry>
    <entry>šířka filmu</entry>
  </row>
  <row>
    <entry>$y</entry>
    <entry>výška filmu</entry>
  </row>
  <row>
    <entry>$C</entry>
    <entry>název použitého kodeku</entry>
  </row>
  </tbody>
  </tgroup>
  </informaltable>

  <note><para>
  Proměnné <literal>$a, $T, $p, $s</literal> a <literal>$e</literal>
  vracejí znaky, které by měly být zobrazovány jako speciální symboly
  (například, <keycap>e</keycap> vrací symbol pauza, který obvykle vypadá
  jako ||). Měli byste mít font pro normální znaky a
  jiný font pro symboly. Více informací viz sekce o
  <link linkend="skin-fonts-symbols">symbolech</link>.
  </para></note>
  </listitem>
</varlistentry>
</variablelist>
</sect2>

<!-- ********** -->

<sect2 id="skin-file-subwindow">
<title>Ovládací panel</title>

<para>
Následující vstupy mohou být použity v bloku
'<literal>window = sub</literal>' . . . '<literal>end</literal>'.
</para>

<variablelist>
<varlistentry>
  <term><literal>
  <anchor id="skin-sub-base"/>base = obrázek, X, Y, šířka, výška
  </literal></term>
  <listitem><para>
  Obrázek, který bude zobrazen v okně. Okno se zobrazí na pozici zadané
  souřadnicemi <literal>X,Y</literal> na obrazovce (<literal>0,0</literal> je
  levý horní roh). Můžete nastavit <literal>-1</literal> pro střed a
  <literal>-2</literal> pro vpravo (<literal>X</literal>) a dole
  (<literal>Y</literal>). Okno bude stejně velké jako obrázek.
  <literal>šířka</literal> a <literal>výška</literal>
  udávají velikost okna; jsou volitelné (pokud chybí, má okno
  rozměry shodné  s obrázkem).
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><literal>
  <anchor id="skin-background"/>background = R, G, B
  </literal></term>
  <listitem><para>
  Umožňuje nastavit barvu pozadí. To je užitečné, pokud je obrázek menší než
  okno. <literal>R</literal>, <literal>G</literal> a <literal>B</literal>
  označují červenou, zelenou a modrou složku barvy
  (každá z nich je dekadická hodnota 0 až 255).
  </para></listitem>
</varlistentry>
</variablelist>
</sect2>

<!-- ********** -->

<sect2 id="skin-file-menu">
<title>Nabídka</title>

<para>
Jak již bylo dříve řečeno, nabídka je zobrazena pomocí dvou obrázků. Normální
položky nabídky jsou brány z obrázku určeného položkou <literal>base</literal>,
zatímco aktuálně zvolený vstup je brán z obrázku určeného položkou
<literal>selected</literal>. Musíte definovat pozici a rozměr každé položky
nabídky.
</para>

<para>
Následující vstupy mohou být použity v bloku
'<literal>window = menu</literal>'. . .'<literal>end</literal>'.
</para>

<variablelist>
<varlistentry>
  <term><literal>
  <anchor id="skin-menu-base"/>base = obrázek
  </literal></term>
  <listitem><para>
  Obrázek normálních položek nabídky.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><literal>
  <anchor id="skin-selected"/>selected = obrázek
  </literal></term>
  <listitem><para>
  Obrázek nabídky kde jsou všechny položky vybrány.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><literal>
  <anchor id="skin-menu"/>menu = X, Y, šířka, výška, zpráva
  </literal></term>
  <listitem><para>
  Definuje pozici <literal>X,Y</literal> a rozměr položky nabídky v obrázku.
  <literal>zpráva</literal> je zpráva, generovaná jakmile je uvolněno tlačítko
  myši nad položkou.
  </para></listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="skin-fonts">
<title>Fonty</title>
<para>
Jak jsme již zmínili v sekci o částech skinu, font je definován obrázkem a
souborem popisu. Můžete rozmístit znaky v obrázku libovolně, ale ujistěte
se, že je jejich velikost a pozice je uvedena v souboru popisu přesně.
</para>

<para>
Soubor popisu fontu (s příponou <filename>.fnt</filename>) může obsahovat
řádky s komentářem začínající '<literal>;</literal>'. Soubor musí obsahovat
řádek ve formě
<anchor id="skin-font-image"/>
<programlisting>image = <replaceable>obrázek</replaceable></programlisting>
Kde <literal><replaceable>obrázek</replaceable></literal> je název obrázku
použitého pro font (nemusíte zadávat příponu).
<anchor id="skin-font-char"/>
<programlisting>"char" = X, Y, šířka, výška</programlisting>
Zde <literal>X</literal> a <literal>Y</literal> udávají pozici
<literal>char</literal> znaku v obrázku (<literal>0,0</literal> je levý
horní roh). <literal>šířka</literal> a <literal>výška</literal> jsou
rozměry znaku v pixelech.
</para>

<para>
Tento příklad definuje znaky A, B, C s použítím <filename>font.png</filename>.
<programlisting>
; Zde může být jen "font" místo "font.png".
image = font.png

; Tři znaky pro ilustraci stačí :-)
"A" =  0,0, 7,13
"B" =  7,0, 7,13
"C" = 14,0, 7,13
</programlisting>
</para>

<!-- ********** -->

<sect2 id="skin-fonts-symbols">
<title>Symboly</title>

<para>
Některé znaky mají speciální význam, jsou-li vráceny některou z proměnných
použitých v <link linkend="skin-dlabel">dlabel</link>. Tyto znaky mají být
zobrazovány jako symboly, takže mohou být zobrazeny věci jako pěkné DVD logo
 místo znaku '<literal>d</literal>' pro DVD datový proud.
</para>

<para>
Následující tabulka obsahuje znaky, které mohou být použity k zobrazení
symbolů (a tudíž vyžadují odlišný font).
</para>

<informaltable>
<tgroup cols="2">
<thead>
  <row><entry>Znak</entry><entry>Symbol</entry></row>
</thead>
<tbody>
  <row><entry><keycap>p</keycap></entry><entry>play</entry></row>
  <row><entry><keycap>s</keycap></entry><entry>stop</entry></row>
  <row><entry><keycap>e</keycap></entry><entry>pauza</entry></row>
  <row><entry><keycap>n</keycap></entry><entry>bez zvuku</entry></row>
  <row><entry><keycap>m</keycap></entry><entry>mono zvuk</entry></row>
  <row><entry><keycap>t</keycap></entry><entry>stereo zvuk</entry></row>
  <row><entry><keycap>f</keycap></entry><entry>datový proud je soubor</entry></row>
  <row><entry><keycap>v</keycap></entry><entry>datový proud je Video CD</entry></row>
  <row><entry><keycap>d</keycap></entry><entry>datový proud je DVD</entry></row>
  <row><entry><keycap>u</keycap></entry><entry>datový proud je URL</entry></row>
</tbody>
</tgroup>
</informaltable>
</sect2>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="skin-gui">
<title>GUI zprávy</title>

<para>
Tyto zprávy mohou být generovány tlačítky, potenciometry a položkami
nabídky.
</para>

<variablelist>
<title>Ovládání přehrávání:</title>
<varlistentry>
  <term><emphasis role="bold">evNext</emphasis></term>
  <listitem><para>
  Skočí na následující stopu v playlistu.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evPause</emphasis></term>
  <listitem><para>
  Tvoří přepínač společně s <literal>evPlaySwitchToPause</literal>. Ty mohou
  být použity k vytvoření tradičního play/pauza tlačítka. Obě zprávy by měly
  být přiřazeny tlačítkům umístěným na stejné pozici v okně. Tato zpráva
  pozastaví přehrávání a zobrazen bude obrázek pro
  <literal>evPlaySwitchToPause</literal> talčítko (pro indikaci, že tlačítko
  může být stisknuto pro obnovení přehrávání).
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evPlay</emphasis></term>
  <listitem><para>
  Zahájí přehrávání.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evPlaySwitchToPause</emphasis></term>
  <listitem><para>
  Protiklad <literal>evPauseSwitchToPlay</literal>. Tato zpráva zahájí přehrávání
  a zobrazí obrázek pro tlačítko <literal>evPauseSwitchToPlay</literal>
  (pro indikaci, že tlačítko může být stisknuto pro pozastavení přehrávání).
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evPrev</emphasis></term>
  <listitem><para>
  Skočí na předchozí stopu v playlistu.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evStop</emphasis></term>
  <listitem><para>
  Zastaví přehrávání.
  </para></listitem>
</varlistentry>
</variablelist>

<variablelist>
<title>Převíjení:</title>
<varlistentry>
  <term><emphasis role="bold">evBackward10sec</emphasis></term>
  <listitem><para>
  Převine zpět o 10 sekund.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evBackward1min</emphasis></term>
  <listitem><para>
  Převine zpět o 1 minutu.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evBackward10min</emphasis></term>
  <listitem><para>
  Převine zpět o 10 minut.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evForward10sec</emphasis></term>
  <listitem><para>
  Převine vpřed o 10 sekund.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evForward1min</emphasis></term>
  <listitem><para>
  Převine vpřed o 1 minutu.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evForward10min</emphasis></term>
  <listitem><para>
  Převine vpřed o 10 minut.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evSetMoviePosition</emphasis></term>
  <listitem><para>
  Převine na danou pozici (může být přiřazeno potenciometru; použije se
  relativní hodnota (0-100%) potenciometru).
  </para></listitem>
</varlistentry>
</variablelist>

<variablelist>
<title>Ovládání videa:</title>
<varlistentry>
  <term><emphasis role="bold">evHalfSize</emphasis></term>
  <listitem><para>
  Nastaví velikost okna filmu na poloviční velikost.
  </para></listitem>
</varlistentry>
<varlistentry>
  <term><emphasis role="bold">evDoubleSize</emphasis></term>
  <listitem><para>
  Nastaví velikost okna filmu na dvojnásobnou velikost.
  </para></listitem>
</varlistentry>
<varlistentry>
  <term><emphasis role="bold">evFullScreen</emphasis></term>
  <listitem><para>
  Přepíná do celoobrazovkového režimu a zpět.
  </para></listitem>
</varlistentry>
<varlistentry>
  <term><emphasis role="bold">evNormalSize</emphasis></term>
  <listitem><para>
  Nastaví velikost okna na normální velikost.
  </para></listitem>
</varlistentry>
</variablelist>

<variablelist>
<title>Ovládání zvuku:</title>
<varlistentry>
  <term><emphasis role="bold">evDecAudioBufDelay</emphasis></term>
  <listitem><para>
  Sníží zpoždění vyrovnávací paměti zvuku.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evDecBalance</emphasis></term>
  <listitem><para>
  Sníží hodnotu stereováhy.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evDecVolume</emphasis></term>
  <listitem><para>
  Sníží hlasitost.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evIncAudioBufDelay</emphasis></term>
  <listitem><para>
  Zvýší zpoždění vyrovnávací paměti zvuku.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evIncBalance</emphasis></term>
  <listitem><para>
  Zvýší hodnotu stereováhy.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evIncVolume</emphasis></term>
  <listitem><para>
  Zvýší hlasitost.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evMute</emphasis></term>
  <listitem><para>
  Vypne/zapne zvuk.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evSetBalance</emphasis></term>
  <listitem><para>
  Nastaví stereováhu (může být sdruženo s potenciometrem; použije se
  relativní hodnota potenciometru (0-100%)).
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evSetVolume</emphasis></term>
  <listitem><para>
  Nastaví hlasitost (může být sdruženo s potenciometrem; použije se
  relativní hodnota potenciometru (0-100%)).
  </para></listitem>
</varlistentry>
</variablelist>

<variablelist>
<title>Různé:</title>
<varlistentry>
  <term><emphasis role="bold">evAbout</emphasis></term>
  <listitem><para>
  Otevře okno o aplikaci.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evDropSubtitle</emphasis></term>
  <listitem><para>
  Vypne aktuálně použité titulky.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evEqualizer</emphasis></term>
  <listitem><para>
  Zapne/vypne ekvalizér.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evExit</emphasis></term>
  <listitem><para>
  Ukončí program.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evIconify</emphasis></term>
  <listitem><para>
  Minimalizuje okno.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evLoad</emphasis></term>
  <listitem><para>
  Otevře soubor (otevřením okna prohlížeče souborů, kde si soubor vyberete).
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evLoadPlay</emphasis></term>
  <listitem><para>
  Stejné jako <literal>evLoad</literal>, ale navíc se okamžitě spustí přehrávání
  otevřeného souboru.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evLoadSubtitle</emphasis></term>
  <listitem><para>
  Otevře soubor s titulky (pomocí prohlížeče souborů)
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evLoadAudioFile</emphasis></term>
  <listitem><para>
  Otevře soubor se zvukem (pomocí prohlížeče souborů)
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evNone</emphasis></term>
  <listitem><para>
  Prázdná zpráva, nemá žádný efekt (možná s výjimkou Subversion verzí :-)).
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evPlaylist</emphasis></term>
  <listitem><para>
  Otevře/zavře okno playlistu.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evPlayDVD</emphasis></term>
  <listitem><para>
  Zkusí otevřít disk v zadané DVD-ROM mechanice.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evPlayVCD</emphasis></term>
  <listitem><para>
  Zkusí otevřít disk v zadané CD-ROM mechanice.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evPreferences</emphasis></term>
  <listitem><para>
  Otevře okno předvoleb.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evSetAspect</emphasis></term>
  <listitem><para>
  Nastaví poměr stran zobrazovaného obrázku.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evSetURL</emphasis></term>
  <listitem><para>
  Zobrazí dialogové okno pro volbu URL.
  </para></listitem>
</varlistentry>

<varlistentry>
  <term><emphasis role="bold">evSkinBrowser</emphasis></term>
  <listitem><para>
  Otevře okno voliče skinů.
  </para></listitem>
</varlistentry>
</variablelist>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="skin-quality">
<title>Tvorba kvalitních skinů</title>

<para>
Co když jste si přečetli o skinech pro GUI
<application>MPlayer</application>u, odvedli to nejlepší s
<application>Gimp</application>em a chcete nám poslat svůj skin?
Přečtěte si pár návodů, abyste se vyhnuli běžným omylům a vytvořili
vysoce kvalitní skin.
</para>

<para>
Chceme, aby skiny, které přidáme do našeho repozitáře odpovídaly
určitým standardům kvality. Je zde také mnoho věcí, které můžete
udělat, abyste nám ulehčili práci.
</para>

<para>
Za příklad si vemte skin <systemitem>Blue</systemitem>.
Ten splňuje všechna kritéria od verze 1.5.
</para>

<itemizedlist>
  <listitem><para>
  Ke každému skinu by měl být soubor
  <filename>README</filename>, obsahující informace o vás jako autorovi,
  o copyrightu a licenci a vše ostatní, co chcete dodat.
  Chcete-li mít changelog, tento soubor je dobrým místem.
  </para></listitem>

  <listitem><para>
  Měl by tu být soubor <filename>VERSION</filename>
  neobsahující nic jiného, než číslo verze na jediném řádku (např. 1.0).
  </para></listitem>

  <listitem><para>
  Horizontální a vertikální ovládání (posuvníky jako hlasitost
  nebo pozice) by měly mít střed knoflíku správně zarovnán na stred posuvníku.
  Mělo by být možné posouvat knoflík na oba konce posuvníku, ale ne za ně.
  </para></listitem>

  <listitem><para>
  Jednotlivé součásti skinu by měly mít správné rozměry
  deklarované v souboru skin. Pokud to tak není, můžete kliknout mimo např.
  tlačítko a to se stejně stiskne, nebo kliknout na jeho plochu a nestisknout
  jej.
  </para></listitem>

  <listitem><para>
  Soubor <filename>skin</filename> by měl být srovnán na znaky
  a neobsahovat tabulátory. Srovnán na znaky znamená, že se čísla budou rovnat
  do úhledných sloupců.
  </para></listitem>
</itemizedlist>

</sect1>
</appendix>