Mercurial > mplayer.hg
view DOCS/xml/cs/skin.xml @ 22280:a5e5b0c45c03
Split command/property handling from mplayer.c to a new file command.c.
Move some global and static variables under a struct that can be given
as a parameter. Add a context argument to the property functions so that
they do not have to depend on global/static variables.
author | uau |
---|---|
date | Wed, 21 Feb 2007 00:49:24 +0000 |
parents | da64f5e20483 |
children | 40e794ce297d |
line wrap: on
line source
<?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><jméno>.<příp></filename>, kdy jsou za <filename><příp></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> 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> </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> </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>"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>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>