1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-20 22:02:59 +00:00
mpv/DOCS/xml/cs/skin.xml

1151 lines
37 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r20551 -->
<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
is <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>
Nakonec ještě pár slov k umísťování. Hlavní okno a podokno mohou být umístěny
v různých rozích obrazovky zadáním souřadnic <literal>X</literal> a
<literal>Y</literal>. <literal>0</literal> je nahoře nebo vlevo,
<literal>-1</literal> je střed a <literal>-2</literal> je vpravo nebo dole, jak
je vidět na obrázku:
</para>
<informalfigure>
<screen>
(0, 0)----(-1, 0)----(-2, 0)
| | |
| | |
(0,-1)----(-1,-1)----(-2,-1)
| | |
| | |
(0,-2)----(-1,-2)----(-2,-2)
</screen>
</informalfigure>
<para>
Aby bylo vše jasné, uvádíme příklad. Řekněme, že máte obrázek jménem
<filename>main.png</filename>, který použijete pro hlavní okno:
<programlisting>base = main, -1, -1</programlisting>
<application>MPlayer</application> zkusí načíst soubory <filename>main</filename>,
<filename>main.png</filename>, <filename>main.PNG</filename>.
</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ů:
</para>
<itemizedlist>
<listitem><para><literal>tlačítko</literal> - obrázek, ktrý 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:
</para>
<informalfigure>
<screen>
+------------+
| fáze #1 |
+------------+
| fáze #2 |
+------------+
...
+------------+
| fáze #n |
+------------+
</screen>
</informalfigure>
</listitem>
<listitem><para><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><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>
</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, &quot;text&quot;
</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 &quot; 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, &quot;text&quot;
</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 &quot; 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>
</listitem>
</varlistentry>
</variablelist>
<note><para>
Proměnné <literal>$a, $T, $p, $s</literal> a <literal>$e</literal>
vracejí znaky, které by se měly zobrazit jako speciální symboly (například
<keycap>e</keycap> je symbol pro pauzu, který obvykle vypadá asi takto
||). Měli byste mít font pro normální znaky a jiný font pro
symboly. Pro více informací viz sekci
<link linkend="skin-fonts-symbols">symboly</link>.
</para></note>
</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>&quot;char&quot; = 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 &quot;font&quot; místo &quot;font.png&quot;.
image = font.png
; Tři znaky pro ilustraci stačí :-)
&quot;A&quot; = 0,0, 7,13
&quot;B&quot; = 7,0, 7,13
&quot;C&quot; = 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>pause</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. 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>Mel 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>