1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-23 15:22:09 +00:00
mpv/DOCS/xml/hu/skin.xml
Gabrov d73d272e5c synced with r20677
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@20678 b3059339-0415-0410-9bf9-f77b7e298cf2
2006-11-04 23:38:59 +00:00

1157 lines
38 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r20551 -->
<appendix id="skin">
<title><application>MPlayer</application> skin formátum</title>
<sect1 id="skin-overview">
<title>Áttekintés</title>
<para>
Igazából ennek nincs köze a skin formátumához, de tudnod kell, hogy az
<application>MPlayer</application>nek <emphasis role="bold">nincs</emphasis>
beépített skin-je, így <emphasis role="bold">legalább egy skin-nek telepítve
kell lennie, hogy használni tudd a GUI-t.</emphasis>
</para>
<sect2 id="skin-overview-directories">
<title>Könyvtárak</title>
<para>
Az alábbi könyvtárak kerülnek átvizsgálásra (sorrendben):
<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>
Figyelj rá, hogy az első elérési út változhat az <application>MPlayer</application>
konfigurációjának megfelelően (lásd a <command>configure</command> script
<option>--prefix</option> és <option>--datadir</option> kapcsolóit).
</para>
<para>
Minden skin a saját könyvtárába kerül telepítésre a fent felsorolt könyvtárakon
belül, például:
<screen>$(PREFIX)/share/mplayer/skins/default/</screen>
</para>
</sect2>
<sect2 id="skin-overview-formats">
<title>Képformátumok</title>
<para>A képeknek truecolor-os (24 vagy 32 bpp) PNG-knek kell lenniük.</para>
<para>
A fő ablakban és a playbar-on (lásd lejjebb) használhatsz transzparens képeket:
Az #FF00FF (bíborvörös) színnel feltöltött területek teljesen
transzparensek lesznek, ha az <application>MPlayer</application>-rel
nézed. Ez azt jelenti, hogy formázott ablakjaid is lehetnek, ha az X
szerverednek van XShape kiterjesztése.
</para>
</sect2>
<sect2 id="skin-overview-components">
<title>Skin komponensek</title>
<para>
A Skin-ek eléggé szabad formátumúak (nem mint például a <application>Winamp</application>/<application>XMMS</application>,
fix formátumú skin-jei), tehát csak rajtad múlik, hogy valami igazán nagyot
alkoss.
</para>
<para>
Jelenleg négy ablak van, amit dekorálni kell: a
<link linkend="skin-file-main">fő ablak</link>, az
<link linkend="skin-file-subwindow">alablak</link>, a
<link linkend="skin-file-main">playbar</link> és a
<link linkend="skin-file-menu">skin menü</link> (ami jobb kattintással
aktiválható).
<itemizedlist>
<listitem><para>
A <emphasis role="bold">fő ablak</emphasis> és/vagy a
<emphasis role="bold">playbar</emphasis> az, ahol vezérelheted az
<application>MPlayer</application>t. Az ablak háttere egy kép.
Ebbe az ablakba különböző elemeket lehet (és kell) tenni: <emphasis>gombok</emphasis>,
<emphasis>potméterek</emphasis> (csúszkák) és <emphasis>címkék</emphasis>.
Minden egyes elemnek meg kell adnod a pozícióját és a méretét.
</para><para>
Egy <emphasis role="bold">gomb</emphasis>nak három állása van (lenyomott,
felengedett, letiltott), így a képe függőlegesen három részre van osztva.
Lásd a <link linkend="skin-button">gomb</link> elemet a részletekért.
</para><para>
Egy <emphasis role="bold">potmeter</emphasis>nek (főként a kereső sáv és a
hangerő/balansz állító) bármennyi fázisa lehet a képének egymás alatti
tetszőleges feldarabolásával. Lásd a
<link linkend="skin-hpotmeter">hpotmeter</link>t és
<link linkend="skin-potmeter">potmeter</link>t a részletekért.
</para><para>
A <emphasis role="bold">címkék</emphasis> egy kicsit különlegesek: A megrajzolásukhoz
szükséges karaktereket egy kép fájlból nyerjük és a képen lévő karaktereket
egy <link linkend="skin-fonts">betű leíró fájl</link> írja le.
Ez utóbbi egy sima szöveges fájl, ami megadja minden egyes betű x, y
pozícióját és méretét a képen (a kép fájl és a hozzátartozó betű leíró
fájl <emphasis>együtt</emphasis> alkot egy betűtípust). Lásd a <link linkend="skin-dlabel">dlabel</link>t
és az <link linkend="skin-slabel">slabel</link>t a részeltekért.
</para>
<note><para>Az összes kép lehet teljes transzparens is, amint az a
<link linkend="skin-overview-formats">kép formátumokról</link> szóló
részben le van írva. Ha az X szerver nem támogatja az XShape kiterjesztést,
a transzparensként megjelölt részek feketék lesznek. Ha használni
akarod ezt a tulajdonságot, a fő ablak háttérképének 8-cal oszthatónak
kell lennie.
</para></note>
</listitem>
<listitem><para>
Az <emphasis role="bold">alablak</emphasis> az, ahol a film megjelenik. Egy
megadott képet tud megjeleníteni, ha nincs film betöltve (elég unalmas egy
üres ablak :-)) <emphasis role="bold">Megjegyzés:</emphasis> a transzparens
kép <emphasis role="bold">nem megengedett</emphasis> itt.
</para></listitem>
<listitem><para>
A <emphasis role="bold">skin menü</emphasis> csak az <application>MPlayer</application>
vezérlésének egy módja menüpontok segítségével. Két kép kell a menühöz:
az egyik a legjobb kép, ami a menüt mutatja normál állapotában, a másik
a kiválasztott pont megjelenítésére lesz felhasználva. Ha kinyitod a menüt,
az első kép látszódik. Ha az egeret az egyik menüpont fölé viszed, az
aktuálisan kiválasztott pont bemásolódik a második képről az egér mutató
alatti területre (a második képet soha sem lehet látni egészében).
</para><para>
Egy menüpontot a képen lévő poziciója és a mérete határoz meg (lásd a
<link linkend="skin-file-menu">skin menü</link> részt).
</para></listitem>
</itemizedlist>
</para>
<para>
Van egy fontos dolog, amiről eddig nem beszéltünk: a gombokhoz, potméterekhez
és menüpontokhoz tartozóan az <application>MPlayer</application> tudnia kell,
hogy mit csináljon, ha rákattintanak. Ez <link linkend="skin-gui">üzenetekkel</link>
(eseményekkel) van megvalósítva. Minden elemhez meg kell adnod, hogy milyen
üzenetet generál, amikor kattintanak rá.
</para>
</sect2>
<sect2 id="skin-files">
<title>Fájlok</title>
<para>
A következő fájlokra lesz szükséges, hogy el tudj készíteni egy skin-t:
<itemizedlist>
<listitem><para>
A konfigurációs fájl, aminek <link linkend="skin-file">skin</link> a neve,
megmondja az <application>MPlayer</application>nek, hogyan rakja össze a
skin különböző részeit és hogy mit tegyen ha valahol kattintanak az ablakban.
</para></listitem>
<listitem><para>
A fő ablak háttérképe.
</para></listitem>
<listitem><para>
A fő ablakban lévő elemek képe (beleértve egy vagy több betű leíró fájlt,
ami a címkék megrajzolásához kell).
</para></listitem>
<listitem><para>
Az alablakban megjelenítendő kép (opcionális).
</para></listitem>
<listitem><para>
Két kép a skin menünek (csak akkor szükséges, ha menüt akarsz csinálni).
</para></listitem>
</itemizedlist>
A skin konfigurációs fájl kivételével a többi fájlt úgy nevezed el, ahogy
csak akarod (de jegyezd meg, hogy a betű leíró fájlnak <filename>.fnt</filename>
kiterjesztéssel kell rendelkeznie).
</para>
</sect2>
</sect1>
<sect1 id="skin-file">
<title>A skin fájl</title>
<para>
Amint fentebb már említettem, ez a skin konfigurációs fájl. Sor-orientált;
a megjegyzést tartalmazó sorok egy '<literal>;</literal>' karakterrel kezdődnek
(csak szóközök és tab-ok lehetnek a '<literal>;</literal>' előtt).
</para>
<para>
A fájl szekciókból áll. Minden szekció a skin egy alkalmazását írja le a
következő formában:
<programlisting>
section = <replaceable>szekció neve</replaceable>
.
.
.
end
</programlisting>
</para>
<para>
Jelenleg csak egy alkalmazás van, vagyis csak egy szekciót kell készítened:
a neve <emphasis role="bold">movieplayer</emphasis>.
</para>
<para>
Ebben a szekcióban minden ablakot egy blokk ír le a következő formában:
<programlisting>
window = <replaceable>ablak neve</replaceable>
.
.
.
end
</programlisting>
</para>
<para>
Ahol az <replaceable>ablak neve</replaceable> ezen karakterláncok valamelyike lehet:
<itemizedlist>
<listitem><para><emphasis role="bold">main</emphasis> - a főablak esetében</para></listitem>
<listitem><para><emphasis role="bold">sub</emphasis> - az alablak esetében</para></listitem>
<listitem><para><emphasis role="bold">menu</emphasis> - a skin menü esetében</para></listitem>
<listitem><para><emphasis role="bold">playbar</emphasis> - a playbar esetében</para></listitem>
</itemizedlist>
</para>
<para>
(Az alablak és menü blokkok opcionálisak - nem kötelező menüt készítened vagy
kidekorálni az alablakot.)
</para>
<para>
Egy ablak blokkon belül az ablak minden elemét definiálhatod, egyet egy
sorban, ebbe a formában:
<programlisting>item = parameter</programlisting>
Ahol az <literal>item</literal> egy karakterlánc, ami azonosítja az adott
típusú GUI elemet, a <literal>parameter</literal> pedig egy numerikus vagy
szöveges érték (vagy értékek listája vesszővel elválasztva).
</para>
<para>
A fentieket összerakva a teljes fájl valahogy így néz ki:
<programlisting>
section = movieplayer
window = main
; ... főablak elemei ...
end
window = sub
; ... alablak elemei ...
end
window = menu
; ... menü elemei ...
end
window = playbar
; ... playbar elemei ...
end
end
</programlisting>
</para>
<para>
Egy kép fájl nevét a hozzá vezető útvonal nélkül kell megadni - a képeknek
a <filename class="directory">skins</filename> könyvtárban kell lenniük.
A fájl kiterjesztését megadhatod (de nem kötelező). Ha a fájl nem létezik,
az <application>MPlayer</application> megpróbálja betölteni a
<filename>&lt;filename&gt;.&lt;ext&gt;</filename> fájlt, ahol <literal>png</literal>
és <literal>PNG</literal> kerül az <filename>&lt;ext&gt;</filename> helyére
(ebben a sorrendben). Az első megtalált fájlt fogja használni.
</para>
<para>
Végül pár szó a pozícionálásról. A fő ablak és az alablak a képernyő különböző
sarkaiba helyezhető az <literal>X</literal> és <literal>Y</literal> koordináták
megadásával. A <literal>0</literal> fent vagy bal oldalt van, a
<literal>-1</literal> középen és a <literal>-2</literal> jobb oldalt vagy lent,
ahogy az itt is látható:
</para>
<informalfigure>
<screen>
(0, 0)----(-1, 0)----(-2, 0)
| | |
| | |
(0,-1)----(-1,-1)----(-2,-1)
| | |
| | |
(0,-2)----(-1,-2)----(-2,-2)
</screen>
</informalfigure>
<para>
Egy példa a tisztánlátáshoz. Tegyük fel, hogy van egy <filename>main.png</filename>
nevű fájlod, amit a fő ablakhoz használsz: <programlisting>base = main, -1, -1</programlisting>
Az <application>MPlayer</application> megpróbálja betölteni a <filename>main</filename>,
<filename>main.png</filename>, <filename>main.PNG</filename> fájlokat.
</para>
<sect2 id="skin-file-main">
<title>Fő ablak és a playbar</title>
<para>
A következő bejegyzések használhatóak a
'<literal>window = main</literal>' ... '<literal>end</literal>',
és a '<literal>window = playbar</literal>' ... '<literal>end</literal>'
blokkokban.
</para>
<variablelist>
<varlistentry>
<term><literal>
<anchor id="skin-main-base"/>base = image, X, Y
</literal></term>
<listitem><para>
Megadhatod vele a fő ablakban használt háttérképet.
Az ablak a megadott <literal>X, Y</literal> pozícióban fog megjelenni
a képernyőn. Az ablak mérete a kép méretével lesz azonos.
</para>
<note><para>Ezek a koordináták jelenleg nem működnek a megjelenítő ablak esetében.</para></note>
<warning><para>A kép transzparens részei (#FF00FF színű) feketeként jelenik meg
az XShape kiterjesztés nélküli X szerverek esetében. A kép szélességének 8-cal
oszthatónak kell lennie.</para></warning>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-button"/>button = image, X, Y, width, height, message
</literal></term>
<listitem><para>
Egy <literal>width</literal> * <literal>height</literal> méretű gomb
megjelenítése az <literal>X, Y</literal> pozícióban. A megadott <literal>message</literal>
üzenet akkor generálódik, amikor a gombot megnyomják. Az <literal>image</literal> által
megadott képnek három részt kell tartalmaznia egymás alatt (a gomb állapotainak
megfelelően), így:
</para>
<informalfigure>
<screen>
+-------------+
| benyomott |
+-------------+
| felengedett |
+-------------+
| letiltott |
+-------------+
</screen>
</informalfigure>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-decoration"/>decoration = enable|disable
</literal></term>
<listitem><para>
Engedélyezi vagy letiltja a főablakban az ablakkezelő dekorációját. Alapértelmezetten
<emphasis role="bold">disable</emphasis>.
</para>
<note><para>Ez nem működik a megjelenítő ablakban, nincs rá szükség.</para></note>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-hpotmeter"/>hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
</literal></term>
<listitem><para>
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-vpotmeter"/>vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
</literal></term>
<listitem><para>
Egy vízszintes (hpotmeter) vagy függőleges (vpotmeter) potméter megjelenítése
<literal>width</literal> * <literal>height</literal> méretben az
<literal>X, Y</literal> pozícióban. A kép több különböző részre osztható a
potméter különböző fázisainak megfelelően (például lehet egy pot-od a hangerő
szabályozásához, ami zöldből pirosba vált, ahogy az értéke változik a minimumtól
a maximumig). A <literal>hpotmeter</literal>-nek lehet egy gombja is, amit
vízszintesen lehet húzni. A paraméterek:
</para>
<itemizedlist>
<listitem><para><literal>button</literal> - a gombként használt kép
(három részt kell tartalmaznia egymás alatt, mint a
<link linkend="skin-button">gomb</link> esetében)
</para></listitem>
<listitem><para><literal>bwidth</literal>, <literal>bheight</literal> - a gomb
mérete
</para></listitem>
<listitem><para><literal>phases</literal> - a hpotmeter különböző fázisaiban
használt kép neve. Speciális értékként a <literal>NULL</literal> is
használható, ha nem akarsz ilyen képet. A képet függőlegesen
<literal>numphases</literal> részre kell felosztani így:
</para>
<informalfigure>
<screen>
+------------+
| 1. fázis |
+------------+
| 2. fázis |
+------------+
...
+------------+
| n. fázis |
+------------+
</screen>
</informalfigure>
</listitem>
<listitem><para><literal>numphases</literal> - a <literal>phases</literal> képen
lévő fázisok száma
</para></listitem>
<listitem><para><literal>default</literal> - a hpotmeter alapértelmezett értéke
(<literal>0</literal> és <literal>100</literal> között)
</para></listitem>
<listitem><para><literal>X</literal>, <literal>Y</literal> - a hpotmeter pozíciója
</para></listitem>
<listitem><para><literal>width</literal>, <literal>height</literal> - a <literal>hpotmeter</literal>
szélessége és magassága
</para></listitem>
<listitem><para><literal>message</literal> - az üzenet, ami a <literal>hpotmeter</literal>
értékének megváltozásakor generálódik
</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-potmeter"/>potmeter = phases, numphases, default, X, Y, width, height, message
</literal></term>
<listitem><para>
Egy <literal>hpotmeter</literal> gomb nélkül. (Gondolom a megfordítása volt az
eredeti cél, de csak a vízszintes vonszolásra reagál.) A paraméterek leírását
lásd a <link linkend="skin-hpotmeter">hpotmeter</link>-nél.
A <literal>phases</literal> lehet <literal>NULL</literal>, de ez eléggé haszontalan,
mivel akkor nem látod, hogy a <literal>potmeter</literal> hova van állítva.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-font"/>font = fontfile, fontid
</literal></term>
<listitem><para>
Egy betűt definiál. A <literal>fontfile</literal> a betű leíró fájl neve egy
<filename>.fnt</filename> kiterjesztéssel (a kiterjesztést ne add meg itt).
A <literal>fontid</literal>-t a betűre történő hivatkozásokhoz lehet használni
(lásd <link linkend="skin-dlabel">dlabel</link> és
<link linkend="skin-slabel">slabel</link>). 25 betűt lehet definiálni.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-slabel"/>slabel = X, Y, fontid, &quot;text&quot;
</literal></term>
<listitem><para>
Egy statikus címkét tesz ki az <literal>X, Y</literal> pozícióba. A
<literal>text</literal> szöveget jeleníti meg a <literal>fontid</literal>-vel
azonosított betűtípussal. A szöveg egyszerű karakterlánc (az <literal>$x</literal>
változók nem működnek) amit dupla idézőjelek közé kell írni (de a &quot; karakter
nem lehet a szöveg része). A címke a <literal>fontid</literal>-vel
azonosított betűtípussal jelenik meg.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-dlabel"/>dlabel = X, Y, length, align, fontid, &quot;text&quot;
</literal></term>
<listitem>
<para>
Egy dinamikus címkét tesz ki az <literal>X, Y</literal> pozícióba. A címke
azért dinamikus, mert a szövege periódikusan frissül. A címke maximum hosszát
a <literal>length</literal> szabályozza (a magassága egy karakter magasságával
egyezik meg). Ha a megjelenítendő szöveg szélesebb ennél, scrollozva lesz,
különben az <literal>align</literal> paraméter által megadott módon pozícionálódik:
<literal>0</literal> jobbra, <literal>1</literal> középre, <literal>2</literal> balra
igazítva.
</para>
<para>
A megjelenítendő szöveget a <literal>text</literal> adja meg: dupla idézőjelek
közé kell írni (de a &quot; karakter nem lehet része a szövegnek). A címke
a <literal>fontid</literal> által meghatározott betűtípussal jelenik meg.
A szövegben a következő változókat használhatod:
</para>
<informaltable>
<tgroup cols="2">
<thead>
<row><entry>Változó</entry><entry>Jelentés</entry></row>
</thead>
<tbody>
<row>
<entry>$1</entry>
<entry>lejátszási idő <emphasis>hh:mm:ss</emphasis> formátumban</entry>
</row>
<row>
<entry>$2</entry>
<entry>lejátszási idő <emphasis>mmmm:ss</emphasis> formátumban</entry>
</row>
<row>
<entry>$3</entry>
<entry>lejátszási idő <emphasis>hh</emphasis> formátumban (órák)</entry>
</row>
<row>
<entry>$4</entry>
<entry>lejátszási idő <emphasis>mm</emphasis> formátumban (percek)</entry>
</row>
<row>
<entry>$5</entry>
<entry>lejátszási idő <emphasis>ss</emphasis> formátumban (másodpercek)</entry>
</row>
<row>
<entry>$6</entry>
<entry>film hossza <emphasis>hh:mm:ss</emphasis> formátumban</entry>
</row>
<row>
<entry>$7</entry>
<entry>film hossza <emphasis>mmmm:ss</emphasis> formátumban</entry>
</row>
<row>
<entry>$8</entry>
<entry>film hossza <emphasis>h:mm:ss</emphasis> formátumban</entry>
</row>
<row>
<entry>$v</entry>
<entry>hangerő <emphasis>xxx.xx</emphasis>% formátumban</entry>
</row>
<row>
<entry>$V</entry>
<entry>hangerő <emphasis>xxx.xx</emphasis> formátumban</entry>
</row>
<row>
<entry>$b</entry>
<entry>balansz <emphasis>xxx.xx</emphasis>% formátumban</entry>
</row>
<row>
<entry>$B</entry>
<entry>balansz <emphasis>xxx.xx</emphasis> formátumban</entry>
</row>
<row>
<entry>$$</entry>
<entry>az $ karakter</entry>
</row>
<row>
<entry>$a</entry>
<entry>egy karakter az audió típusnak megfelelően (nincs: <literal>n</literal>,
mono: <literal>m</literal>, sztereo: <literal>t</literal>)</entry>
</row>
<row>
<entry>$t</entry>
<entry>sáv száma (a lejátszási listában)</entry>
</row>
<row>
<entry>$o</entry>
<entry>fájlnév</entry>
</row>
<row>
<entry>$f</entry>
<entry>fájlnév kisbetűsen</entry>
</row>
<row>
<entry>$F</entry>
<entry>fájlnév nagybetűsen</entry>
</row>
<row>
<entry>$T</entry>
<entry>egy karakter a folyam típusnak megfelelően (file: <literal>f</literal>,
Video CD: <literal>v</literal>, DVD: <literal>d</literal>, URL: <literal>u</literal>)</entry>
</row>
<row>
<entry>$p</entry>
<entry>a <keycap>p</keycap> karakter (ha a film lejátszás alatt van és a
betűtípusban van <keycap>p</keycap> karakter)</entry>
</row>
<row>
<entry>$s</entry>
<entry>az <keycap>s</keycap> karakter (ha a film meg van állítva movie és
a betűtípusban van <keycap>s</keycap> karakter)</entry>
</row>
<row>
<entry>$e</entry>
<entry>az <keycap>e</keycap> karakter (ha a lejátszás szünetel és a
betűtípusban van <keycap>e</keycap> karakter)</entry>
</row>
<row>
<entry>$x</entry>
<entry>film szélessége</entry>
</row>
<row>
<entry>$y</entry>
<entry>film magassága</entry>
</row>
<row>
<entry>$C</entry>
<entry>használt codec neve</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</varlistentry>
</variablelist>
<note><para>
Az <literal>$a, $T, $p, $s</literal> és <literal>$e</literal>
változók mind karakterekkel térnek vissza, amiket speciális szimbólumként kell
megjeleníteni (például az <keycap>e</keycap> a pillanatállj szimbóluma, ami
általában valami ilyesmi: ||). Szükséged lesz egy normál karaktereket
tartalmazó betűtípusra és egy másikra a szimbólumokhoz. Lásd a
<link linkend="skin-fonts-symbols">szimbólumokról</link> szóló részt a
további információkért.
</para></note>
</sect2>
<sect2 id="skin-file-subwindow">
<title>Alablak</title>
<para>
A következő bejegyzések használhatóak a
'<literal>window = sub</literal>' . . . '<literal>end</literal>' blokkban.
</para>
<variablelist>
<varlistentry>
<term><literal>
<anchor id="skin-sub-base"/>base = image, X, Y, width, height
</literal></term>
<listitem><para>
Az ablakban megjelenítendő kép. Az ablak a megadott
<literal>X, Y</literal> pozícióban jelenik meg a képernyőn (<literal>0,0</literal>
a bal felső sarok). A <literal>-1</literal> a középre, a <literal>-2</literal>
a jobbra (<literal>X</literal>) és le (<literal>Y</literal>) igazítást jelenti.
Az ablak akkora lesz, amekkora a kép. A <literal>width</literal> és a <literal>height</literal>
az ablak méretét írják elő, opcionálisak (ha hiányoznak, az ablak
ugyan akkora méretű lesz, mint a kép).
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-background"/>background = R, G, B
</literal></term>
<listitem><para>
Beállíthatod vele a háttér színét. Hasznos, ha a kép kisebb, mint az
ablak mérete. Az <literal>R</literal>, <literal>G</literal> és <literal>B</literal>
a szín vörös, zöld és kék komponensét adja meg (mindegyik decimális szám
0-tól 255-ig).
</para></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="skin-file-menu">
<title>Skin menü</title>
<para>
Amint korábban már említettem, a menü két kép segítségével kerül megjelenítésre.
A normál menü bejegyzések a <literal>base</literal> elemmel megadott képen
láthatóak, míg az épp aktuálisan kiválasztott elem megjelenítése a
<literal>selected</literal> elemről történik. Meg kell adnod minden egyes
menüpont pozícióját és méretét.
</para>
<para>
A következő bejegyzések használhatóak a
'<literal>window = menu</literal>'. . .'<literal>end</literal>' blokkban.
</para>
<variablelist>
<varlistentry>
<term><literal>
<anchor id="skin-menu-base"/>base = image
</literal></term>
<listitem><para>
A normál menüpontokat tartalmazó kép.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-selected"/>selected = image
</literal></term>
<listitem><para>
Az összes menüpontot kiválasztva ábrázoló kép.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-menu"/>menu = X, Y, width, height, message
</literal></term>
<listitem><para>
Megadja egy menüelem <literal>X, Y</literal> pozícióját és a méretét a képen.
A <literal>message</literal> egy üzenet, ami az egérgomb menüponton történő
felengedésekor generálódik.
</para></listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
<sect1 id="skin-fonts">
<title>Betűk</title>
<para>
Amint azt már a skin elemeiről szóló részben is említettem, egy betűtípust
egy kép és egy leíró fájl alkot. A karaktereket bárhová teheted a képen,
de győződj meg róla, hogy a pozíciójuk és a méretük pontosan meg van adva
a leíró fájlban.
</para>
<para>
A betű leíró fájl (az <filename>.fnt</filename> kiterjesztéssel) tartalmazhat
megjegyzéseket, melyek '<literal>;</literal>'-vel kezdődő sorokban kapnak helyet.
A fájlban kell, hogy szerepeljenek az alábbi sorok:
<anchor id="skin-font-image"/>
<programlisting>image = <replaceable>image</replaceable></programlisting>
Ahol az <literal><replaceable>image</replaceable></literal> a betűhöz használt
kép fájl neve (nem kell megadnod a kiterjesztést).
<anchor id="skin-font-char"/>
<programlisting>&quot;char&quot; = X, Y, width, height</programlisting>
Itt az <literal>X</literal> és az <literal>Y</literal> a
<literal>char</literal> karakter pozícióját adja meg a képen (<literal>0,0</literal>
a bal felső sarok). A <literal>width</literal> és a <literal>height</literal>
a karakter méretei pixelben.
</para>
<para>
Ez a példa az A, B, C karaktereket definiálja a <filename>font.png</filename>
felhasználásával.
<programlisting>
; Lehet &quot;font&quot; is a &quot;font.png&quot; helyett.
image = font.png
; Három karakter elég a bemutatáshoz :-)
&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>Szimbólumok</title>
<para>
Néhány karakternek speciális jelentése van, ha <link linkend="skin-dlabel">dlabel</link>-ben
használva valamelyik változó tér vissza vele. Ezeket a karaktereket
szimbólumokként kell megjeleníteni, így például egy szép DVD logó jelenhet
meg a '<literal>d</literal>' karakter helyett egy DVD folyam esetén.
</para>
<para>
Az alábbi táblázat a szimbólumként megjeleníthető (és így külön betűtípust igénylő)
karaktereket tartalmazza.
</para>
<informaltable>
<tgroup cols="2">
<thead>
<row><entry>Karakter</entry><entry>Szimbólum</entry></row>
</thead>
<tbody>
<row><entry><keycap>p</keycap></entry><entry>lejátszás</entry></row>
<row><entry><keycap>s</keycap></entry><entry>stop</entry></row>
<row><entry><keycap>e</keycap></entry><entry>pillanatállj</entry></row>
<row><entry><keycap>n</keycap></entry><entry>nincs hang</entry></row>
<row><entry><keycap>m</keycap></entry><entry>mono hang</entry></row>
<row><entry><keycap>t</keycap></entry><entry>sztereó hang</entry></row>
<row><entry><keycap>f</keycap></entry><entry>a folyam egy fájl</entry></row>
<row><entry><keycap>v</keycap></entry><entry>a folyam egy Video CD</entry></row>
<row><entry><keycap>d</keycap></entry><entry>a folyam egy DVD</entry></row>
<row><entry><keycap>u</keycap></entry><entry>a folyam egy URL</entry></row>
</tbody>
</tgroup>
</informaltable>
</sect2>
</sect1>
<sect1 id="skin-gui">
<title>GUI üzenetek</title>
<para>
Az alábbi üzeneteket generálják a gombok, potméterek és menüpontok.
</para>
<variablelist>
<title>Lejátszás vezérlése:</title>
<varlistentry>
<term><emphasis role="bold">evNext</emphasis></term>
<listitem><para>
ugrás a következő sávra a lejátszási listában.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPause</emphasis></term>
<listitem><para>
Párt alkot az <literal>evPlaySwitchToPause</literal>-val. Egy általános
lejátszás/szünet gomb készítéséhez használhatóak fel. Mind a két üzenetet
egy olyan gombhoz kell hozzárendelni, ami teljesen ugyan ott jelenik meg az
ablakban. Ez az üzenet megállítja a lejátszást és megjelenteti az
<literal>evPlaySwitchToPause</literal> gombhoz tartozó képet (jelezve
ezzel, hogy a gombot meg lehet nyomni a lejátszás folytatásához).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlay</emphasis></term>
<listitem><para>
Lejátszás elindítása.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlaySwitchToPause</emphasis></term>
<listitem><para>
Az <literal>evPauseSwitchToPlay</literal> ellentéte. Ez az üzenet elkezdi a
lejátszást és megjelenteti az <literal>evPauseSwitchToPlay</literal> gomb
képét (jelezve ezzel, hogy a gombot meg lehet nyomni a lejátszás megállításához).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPrev</emphasis></term>
<listitem><para>
Az előző sávra ugrik a lejátszási listában.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evStop</emphasis></term>
<listitem><para>
Lejátszás megállítása.
</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Seeking:</title>
<varlistentry>
<term><emphasis role="bold">evBackward10sec</emphasis></term>
<listitem><para>
Visszalépés 10 másodperccel.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evBackward1min</emphasis></term>
<listitem><para>
Visszalépés 1 perccel.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evBackward10min</emphasis></term>
<listitem><para>
Visszalépés 10 perccel.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evForward10sec</emphasis></term>
<listitem><para>
Előrelépés 10 másodperccel.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evForward1min</emphasis></term>
<listitem><para>
Előrelépés 1 perccel.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evForward10min</emphasis></term>
<listitem><para>
Előrelépés 10 perccel.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetMoviePosition</emphasis></term>
<listitem><para>
Ugrás a pozícióhoz (potméter tudja használni; a
potméter relatív értékét (0-100%) használja).
</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Videó vezérlés:</title>
<varlistentry>
<term><emphasis role="bold">evHalfSize</emphasis></term>
<listitem><para>
Film ablak méretének felezése.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDoubleSize</emphasis></term>
<listitem><para>
Film ablak méretének duplázása.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evFullScreen</emphasis></term>
<listitem><para>
Teljes képernyős mód be-/kikapcsolása.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evNormalSize</emphasis></term>
<listitem><para>
Film ablak normál méretének beállítása.
</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Audió vezérlés:</title>
<varlistentry>
<term><emphasis role="bold">evDecAudioBufDelay</emphasis></term>
<listitem><para>
Audió buffer késleltetésének csökkentése.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDecBalance</emphasis></term>
<listitem><para>
Balansz csökkentése.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDecVolume</emphasis></term>
<listitem><para>
Hangerő csökkentése.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIncAudioBufDelay</emphasis></term>
<listitem><para>
Audió buffer késleltetésének növelése.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIncBalance</emphasis></term>
<listitem><para>
Balansz növelése.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIncVolume</emphasis></term>
<listitem><para>
Hangerő növelése.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evMute</emphasis></term>
<listitem><para>
Hang ki-/bekapcsolása.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetBalance</emphasis></term>
<listitem><para>
Balansz beállítása (potméter tudja használni; a
potméter relatív értékét (0-100%) használja).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetVolume</emphasis></term>
<listitem><para>
Hangerő beállítása (potméter tudja használni; a
potméter relatív értékét (0-100%) használja).
</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Vegyes:</title>
<varlistentry>
<term><emphasis role="bold">evAbout</emphasis></term>
<listitem><para>
Programinformációs ablak megnyitása.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDropSubtitle</emphasis></term>
<listitem><para>
Aktuálisan használt felirat letiltása.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evEqualizer</emphasis></term>
<listitem><para>
Equalizer be-/kikapcsolása.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evExit</emphasis></term>
<listitem><para>
Kilépés a programból.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIconify</emphasis></term>
<listitem><para>
Ablak összecsukása kis méretűvé.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoad</emphasis></term>
<listitem><para>
Fájl betöltése (a fájl böngésző ablak megnyitásával, ahol kiválaszthatod a fájlt).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoadPlay</emphasis></term>
<listitem><para>
Ugyan azt csinálja, mint az <literal>evLoad</literal>, de automatikusan elkezdi
lejátszani a fájlt, miután betöltötte.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoadSubtitle</emphasis></term>
<listitem><para>
Felirat fájl betöltése (a fájlválasztóval)
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoadAudioFile</emphasis></term>
<listitem><para>
Audió fájl betöltése (a fájlválasztóval)
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evNone</emphasis></term>
<listitem><para>
Üres üzenet, nincs hatása (kivéve talán a Subversion verziót :-)).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlaylist</emphasis></term>
<listitem><para>
Lejátszási lista ablak megnyitása/becsukása.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlayDVD</emphasis></term>
<listitem><para>
Megpróbálja megnyitni az adott DVD-ROM meghajtóban lévő lemezt.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlayVCD</emphasis></term>
<listitem><para>
Megpróbálja megnyitni az adott CD-ROM meghajtóban lévő lemezt.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPreferences</emphasis></term>
<listitem><para>
Megnyitja a beállítások ablakot.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetAspect</emphasis></term>
<listitem><para>
Beállítja a megjelenített kép arányát.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetURL</emphasis></term>
<listitem><para>
Megjeleníti az URL dialógus ablakot.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSkinBrowser</emphasis></term>
<listitem><para>
Megnyitja a skin böngésző ablakot.
</para></listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="skin-quality">
<title>Minőségi skin-ek készítése</title>
<para>
Tehát végigolvastad az <application>MPlayer</application> GUI-jához
történő skin készítés leírását, megtettél minden tőled telhetőt a
<application>Gimp</application>pel és el szeretnéd küldeni nekünk a
skin-ed?
Olvass még egy kicsit tovább, hogy elkerüld a gyakori hibákat és
minőségi skin-t tudj készíteni.
</para>
<para>
Szeretnénk, ha a skin-ek, amit beveszünk a listánkba, megfelelnének
bizonyos minőségi elvárásoknak. Ezen kívül van még pár dolog, amivel
a mi életünket könnyítheted meg.
</para>
<para>
Példaként nézd meg a a <systemitem>Blue</systemitem> skin-t,
az teljesíti az összes lent felsorolt kritériumot az 1.5-ös verzió óta.
</para>
<itemizedlist>
<listitem><para>Minden skin-nek tartalmaznia kell egy
<filename>README</filename> fájlt, ami tartalmazza az információkat
rólad, a szerzőről, a szerzői jogi és licensz figyelmeztetéseket és
bármi mást, amit még bele akarsz írni. Ha szeretnél changelog-ot,
ez a fájl jó hely neki.</para></listitem>
<listitem><para>Kell lennie egy <filename>VERSION</filename>
fájlnak, melyben semmi más nincs, csak a skin verziószáma egyetlen
egy sorban (pl. 1.0).</para></listitem>
<listitem><para>A vízszintes és függőleges irányítókon (csúszkák a
hangerőnek és a pozíciónak) a gombjuk középpontjának pontosan középen
kell lennie, a csúszka felénél. A gombot mindkét irányban ki kell
tudni húzni a csúszka végéig, de azon túl nem.</para></listitem>
<listitem><para>A skin elemeit megfelelő méretűnek kell deklarálni
a skin fájlban. Ha nem így van, akkor kattintani tudsz pl. a gombon
kívül és mégis megnyomod vagy egy területen belül kattintasz és nem
lesz hatása.</para></listitem>
<listitem><para>A <filename>skin</filename> fájlnak jól formázottnak
kell lennie és nem tartalmazhat tab-okat. A jól formázottság azt
jelenti, hogy a számoknak szépen oszlopokban kell lenniük.</para></listitem>
</itemizedlist>
</sect1>
</appendix>