mpv/DOCS/xml/pl/skin.xml

1094 lines
36 KiB
XML

<?xml version="1.0" encoding="iso-8859-2"?>
<!-- synced with 1.5 -->
<appendix id="skin">
<title>Format skórki MPlayera</title>
<para>
Celem tego dokumentu jest opisanie formatu skórki MPlayera.
Informacje zawarte tutaj mog± byæ niedok³adne poniewa¿
<orderedlist>
<listitem><para>Nie jestem tym, który pisa³ GUI.</para></listitem>
<listitem><para>GUI nie jest ukoñczone.</para></listitem>
<listitem><para>Mogê siê myliæ.</para></listitem>
</orderedlist>
A wiêc nie b±d¼ zaskoczony je¶li co¶ nie bêdzie dzia³aæ tak, jak przedstawiono tutaj.
</para>
<para>Podziêkowania <emphasis>Zoltánowi Ponekkerowi</emphasis> za jego pomoc.</para>
<para><emphasis>András Mohari &lt;mayday@freemail.hu&gt;</emphasis></para>
<sect1 id="skin-overview">
<title>Wstêp</title>
<para>
W zasadzie nie ma to ¿adnego zwi±zku z formatem skórki, ale powiniene¶
wiedzieæ, ¿e MPlayer <emphasis role="bold">nie</emphasis> posiada wbudowanej skórki, w zwi±zku
z tym <emphasis role="bold"> co najmniej jedna skórka musi byæ zainstalowana, aby by³a mo¿liwo¶æ
u¿ywania GUI.</emphasis>
</para>
<sect2 id="skin-overview-directories">
<title>Katalogi</title>
<para>
Skórki s± szukane w nastêpuj±cych katalogach (w kolejno¶ci):
<orderedlist>
<listitem><para>
<filename class="directory">$(DATADIR)/Skin/</filename>
</para></listitem>
<listitem><para>
<filename class="directory">$(PREFIX)/share/mplayer/Skin/</filename>
</para></listitem>
<listitem><para>
<filename class="directory">~/.mplayer/Skin/</filename>
</para></listitem>
</orderedlist>
</para>
<para>
Zauwa¿, ¿e pierwsza ¶cie¿ka mo¿e siê ró¿niæ w zale¿no¶ci od sposobu w jaki MPlayer by³ skonfigurowany
(zobacz argumenty <option>--prefix</option> oraz <option>--datadir</option> w skrypcie
<command>configure</command>).
</para>
<para>
Ka¿da skórka jest instalowana w swoim w³asnym katalogu, w jednym z
katalogów wy¿ej wymienionych, na przyk³ad:
<screen>$(PREFIX)/share/mplayer/Skin/default/</screen>
</para>
</sect2>
<sect2 id="skin-overview-formats">
<title>Formaty obrazków</title>
<para>Obrazki musz± byæ w formacie PNG truecolor (24 lub 32 bpp).</para>
<para>
W g³ównym oknie oraz na panelu odtwarzania (zobacz ni¿ej) mo¿esz u¿yæ
obrazków z 'przezroczysto¶ci±': obszary wype³nione kolorem #FF00FF (magenta) s± w pe³ni
przezroczyste dla MPlayera. Oznacza to, ¿e mo¿esz mieæ okna o ró¿nych kszta³tach
je¶li Twój X Server posiada rozszerzenie XShape.
</para>
</sect2>
<sect2 id="skin-overview-components">
<title>Sk³adniki skórki</title>
<para>
Skórki s± ca³kowicie konfigurowalne (w odró¿nieniu od skórek np. Winampa/XMMS),
a wiêc zale¿y to od Ciebie, czy stworzysz co¶ wspania³ego.
</para>
<para>
W chwili obecnej mamy trzy okna, które mo¿na ozdobiæ:
<link linkend="skin-file-main">okno g³ówne (main window)</link>,
<link linkend="skin-file-subwindow">okno ekranu (subwindow)</link>,
<link linkend="skin-file-main">panel odtwarzania (playbar)</link>,
<link linkend="skin-file-menu">menu skórki (skin menu)</link> (które mo¿e byæ aktywowane
prawym przyciskiem myszy).
<itemizedlist>
<listitem><para>
<emphasis role="bold">Okno g³ówne</emphasis> i/lub
<emphasis role="bold">panel odtwarzania</emphasis> to miejsca, gdzie mo¿na sterowaæ programem MPlayer.
T³em tego okna jest obrazek. Ró¿ne elementy mog± (i musz±) byæ umieszczone
w tym oknie: <emphasis>przyciski</emphasis>, <emphasis>potencjometry</emphasis>
(suwaki) i <emphasis>etykiety</emphasis>. Dla ka¿dego elementu musisz okre¶liæ ich pozycjê
oraz rozmiar.
</para><para>
<emphasis role="bold">Przycisk</emphasis> ma trzy stany (wci¶niêty, zwolniony, nieaktywny) ,
zatem jego obrazki musz± byæ podzielone na trzy czê¶ci w pionie. Zobacz sekcjê
<link linkend="skin-button">button</link>, by dowiedzieæ siê wiêcej.
</para><para>
<emphasis role="bold">Potencjometr (suwak)</emphasis> (wykorzystywany g³ównie jako pasek
przewijania i kontrolka g³o¶no¶ci/balansu) mo¿e sk³adaæ siê z ka¿dej liczby stanów poprzez podzielenie jego obrazka
na wiele czê¶ci, z których jedna poprzedza drug±. Zobacz
<link linkend="skin-hpotmeter">hpotmeter</link> oraz
<link linkend="skin-potmeter">potmeter</link>, by dowiedzieæ siê wiêcej.
</para><para>
<emphasis role="bold">Etykiety</emphasis> s± nieco specyficzne: Znaki
potrzebne do ich narysowania s± pobierane z pliku graficznego, a znaki umieszczone
w pliku graficznym s± opisane przez <link linkend="skin-fonts">plik opisu czcionek</link>.
Jest to plik, który za pomoc± czystego tekstu okre¶la wspó³rzêdne x, y oraz wielko¶æ
ka¿dego znaku umieszczonego na obrazku (plik graficzny i jego plik opisu tworz±
<emphasis>razem</emphasis> zestaw czcionek). Zobacz <link linkend="skin-dlabel">dlabel</link>
oraz <link linkend="skin-slabel">slabel</link>, by dowiedzieæ siê wiêcej.
</para>
<note><para>Wszystkie obrazki mog± byæ ca³kowicie przezroczyste - tak, jak to opisano
w sekcji <link linkend="skin-overview-formats">formaty plików graficznych</link>. Je¿eli X Server
nie obs³uguje rozszerzenia XShape, to elementy oznaczone jako przezroczyste bêd± czarne.
Je¶li chcia³by¶ wykorzystaæ tak± mo¿liwo¶æ, szeroko¶æ obrazka t³a g³ównego okna musi byæ
podzielna przez 8.
</para></note>
</listitem>
<listitem><para>
<emphasis role="bold">Okno ekranu</emphasis> to miejsce odtwarzania filmu. Mo¿e
ono wy¶wietlaæ okre¶lony obrazek je¶li ¿aden film nie jest uruchomiony
(to do¶æ nudne mieæ puste okno :-)) <emphasis role="bold">Uwaga:</emphasis> przezroczysto¶æ
<emphasis role="bold">nie jest</emphasis> tutaj dostêpna.
</para></listitem>
<listitem><para>
<emphasis role="bold">Menu skórki</emphasis> to po prostu jeden ze sposobów
na kontrolowanie MPlayera poprzez wpisy w menu. Dwa obrazki s± wymagane dla tego
menu: pierwszy z nich jest obrazkiem podstawowym, który pokazuje zwyk³y stan menu, drugi za¶
s³u¿y do wy¶wietlenia zaznaczonych obszarów. Gdy uaktywnisz menu, zostanie pokazany pierwszy obrazek.
Je¶li przesuniesz mysz nad który¶ z jego wpisów, wówczas zaznaczony element jest kopiowany z drugiego
obrazka w miejsce, na które wskazuje kursor myszy (drugi obrazek nigdy nie jest wy¶wietlany jako ca³o¶æ).
</para><para>
Wpis w menu jest okre¶lony przez jego pozycjê oraz rozmiar na obrazku (zobacz
sekcjê <link linkend="skin-file-menu">menu skórki</link> by dowiedzieæ siê wiêcej).
</para></listitem>
</itemizedlist>
</para>
<para>
Jedna wa¿na sprawa, która nie zosta³a jeszcze powiedziana: MPlayer musi wiedzieæ co zrobiæ w momencie
klikniêcia na przyciski, potencjometry i wpisy w menu, aby zadzia³a³y. Zosta³o to zrobione za pomoc±
<link linkend="skin-gui">sygna³ów</link> (zdarzeñ).
Dla tych elementów musisz zdefiniowaæ sygna³y, które maj± byæ generowane podczas ich klikniêcia.
</para>
</sect2>
<sect2 id="skin-files">
<title>Pliki</title>
<para>
Potrzebne s± nastêpuj±ce pliki podczas tworzenia skórki:
<itemizedlist>
<listitem><para>
Plik konfiguracyjny o nazwie <link linkend="skin-file">skin</link>, mówi±cy
programowi MPlayer jak po³±czyæ ró¿ne czê¶ci skórki razem i co zrobiæ, gdy
nast±pi klikniêcie w którym¶ obszarze okna.
</para></listitem>
<listitem><para>
Plik graficzny t³a w oknie g³ównym.
</para></listitem>
<listitem><para>
Obrazki dla elementów w g³ównym oknie (zawieraj±ce jeden lub
wiêcej plików opisu czcionek, potrzebnych do rysowania etykiet).
</para></listitem>
<listitem><para>
Obrazek wy¶wietlany w oknie ekranu (opcjonalnie)
</para></listitem>
<listitem><para>
Dwa obrazki dla menu skórki (potrzebne s± tylko wtedy, gdy chcesz tworzyæ
takie menu).
</para></listitem>
</itemizedlist>
Za wyj±tkiem pliku konfiguracyjnego skórki mo¿esz nazwaæ wszystkie pliki
tak, jak tego chcesz (ale we¼ pod uwagê, ¿e pliki opisu czcionek musz± mieæ
rozszerzenie <filename>.fnt</filename> ).
</para>
</sect2>
</sect1>
<sect1 id="skin-file">
<title>Plik skin</title>
<para>
Jak zosta³o powiedziane wcze¶niej, plik ten jest plikiem konfiguruj±cym skórkê. Obs³uguje ró¿ne
rodzaje wierszy; komentarze zaczynaj± wiersz znakiem '<literal>;</literal>' (tylko spacje i znaki
tabulacji s± dopuszczone przed '<literal>;</literal>').
</para>
<para>
Plik podzielony jest na sekcje. Ka¿da sekcja opisuje skórkê dla ka¿dej
aplikacji i ma nastêpuj±c± formê:
<programlisting>
section = <replaceable>nazwa sekcji</replaceable>
.
.
.
end
</programlisting>
</para>
<para>
Obecnie jest tylko jedna aplikacja, a wiêc potrzebujesz tylko jedn± sekcjê 'section': nazwa tej sekcji to
<emphasis role="bold">movieplayer</emphasis>.
</para>
<para>
Wewn±trz tej sekcji ka¿de z okien jest opisane przez blok nastêpuj±cej postaci:
<programlisting>
window = <replaceable>nazwa okna</replaceable>
.
.
.
end
</programlisting>
</para>
<para>
gdzie <replaceable>nazwa okna</replaceable>mo¿e byæ jednym z poni¿szych ³añcuchów:
<itemizedlist>
<listitem><para><emphasis role="bold">main</emphasis> - dla okna g³ównego</para></listitem>
<listitem><para><emphasis role="bold">sub</emphasis> - dla okna ekranu</para></listitem>
<listitem><para><emphasis role="bold">menu</emphasis> - dla menu skórki</para></listitem>
<listitem><para><emphasis role="bold">playbar</emphasis> - dla panelu odtwarzania</para></listitem>
</itemizedlist>
</para>
<para>
(Bloki sub i menu s± opcjonalne - nie musisz tworzyæ menu czy elementów skórki dla okna ekranu)
</para>
<para>
Wewn±trz bloku 'window' mo¿esz definiowaæ ka¿dy element okna wpisuj±c linijkê tej postaci:
<programlisting>item = parametr</programlisting>
Gdzie <literal>item</literal> jest ³añcuchem, kóry identyfikuje typ elementu GUI,
<literal>parametr</literal> jest warto¶ci± numeryczn± lub tekstow± (lub list± takich
warto¶ci oddzielonych od siebie znakiem przecinka).
</para>
<para>
Z³o¿enie powy¿szych elementów razem tworzy plik, który wygl±da mniej wiêcej tak:
<programlisting>
section = movieplayer
window = main
; ... elementy okna g³ównego ...
end
window = sub
; ... elementy okna ekranu ...
end
window = menu
; ... elementy menu skórki ...
end
window = playbar
; ... elementy panelu odtwarzania ...
end
end
</programlisting>
</para>
<para>
Nazwa pliku graficznego musi zostaæ podana bez ¿adnych nazw katalogów - obrazki
s± szukane w katalogu <filename class="directory">Skin</filename>.
Mo¿esz (ale nie musisz) okre¶liæ rozszerzenia tego pliku. Je¶li plik taki nie istnieje, MPlayer
próbuje wczytaæ plik <filename>&lt;nazwa pliku&gt;.&lt;rozszerzenie&gt;</filename>, gdzie <literal>png</literal>
oraz <literal>PNG</literal> s± próbowane jako <filename>&lt;rozszerzenie&gt;</filename>
(w tej w³a¶nie kolejno¶ci). Pierwszy pasuj±cy plik bêdzie u¿yty.
</para>
<para>
Na koniec kilka s³ów na temat pozycjonowania. Okno g³ówne oraz okno ekranu mo¿e
zostaæ umieszczone w ró¿nych naro¿nikach ekranu poprzez ustawienie wspó³rzêdnych
<literal>X</literal> i <literal>Y</literal>. <literal>0</literal> to góra lub lewa strona,
<literal>-1</literal> to ¶rodek, <literal>-2</literal> to strona prawa lub dó³, tak jak
przedstawiono na poni¿szej ilustracji:
</para>
<informalfigure>
<screen>
(0, 0)----(-1, 0)----(-2, 0)
| | |
| | |
(0,-1)----(-1,-1)----(-2,-1)
| | |
| | |
(0,-2)----(-1,-2)----(-2,-2)
</screen>
</informalfigure>
<para>
Oto przyk³ad wyja¶niaj±cy to lepiej. Przypu¶æmy, ¿e masz obrazek nazwany
<filename>main.png</filename>, który zosta³ u¿yty dla okna g³ównego:
<programlisting>base = main, -1, -1</programlisting>
MPlayer próbuje wczytaæ pliki <filename>main</filename>, <filename>main.png</filename>,
<filename>main.PNG</filename>.
</para>
<sect2 id="skin-file-main">
<title>Okno g³ówne i panel odtwarzania</title>
<para>
Poni¿ej znajduje siê lista wpisów, które mog± byæ u¿yte w blokach
'<literal>window = main</literal>'...'<literal>end</literal>',
oraz '<literal>window = playbar</literal>' ... '<literal>end</literal>'.
</para>
<variablelist>
<varlistentry>
<term><literal>
<anchor id="skin-main-base"/>base = obrazek, X, Y
</literal></term>
<listitem><para>
Pozwala okre¶liæ obrazek t³a, który bêdzie u¿ywany w oknie g³ównym
Okno bêdzie widoczne w pozycji <literal>X, Y</literal> na ekranie. Okno
bêdzie wielko¶ci tego obrazka.
</para>
<note><para>Wspó³rzêdne te nie dzia³aj± na razie dla okna ekranu.</para></note>
<warning><para>Obszary przezroczysto¶ci obrazka (kolor #FF00FF) bêd± widoczne jako czarne
pod X serwerami nieposiadaj±cymi rozszerzenia XShape. Szeroko¶æ obrazka musi byæ podzielna przez 8.</para></warning>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-button"/>button = obrazek, X, Y, szeroko¶æ, wysoko¶æ, sygna³
</literal></term>
<listitem><para>
Umieszcza przycisk o rozmiarze <literal>szeroko¶æ</literal> * <literal>wysoko¶æ</literal> w pozycji
<literal>X</literal>, <literal>Y</literal>. Okre¶lony <literal>sygna³</literal> jest generowany podczas klikniêcia na przycisk.
Obrazek ten opisany przez <literal>obrazek</literal> musi sk³adaæ siê z trzech czê¶ci jedna pod drug± (stosownie
do mo¿liwych stanów przycisku), w ten oto sposób:
</para>
<informalfigure>
<screen>
+---------------+
| wci¶niêty |
+---------------+
| zwolniony |
+---------------+
| nieaktywny |
+---------------+
</screen>
</informalfigure>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-decoration"/>decoration = enable|disable (w³±czona|wy³aczona)
</literal></term>
<listitem><para>
W³±cza lub wy³±cza dekoracjê mened¿era okna w oknie g³ównym.
Domy¶lnie jest <emphasis role="bold">wy³±czona</emphasis>.
</para>
<note><para>Nie dzia³a to w oknie ekranu, gdy¿ nie ma takiej potrzeby.</para></note>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-hpotmeter"/>hpotmeter = przycisk, szer_przycisku, wys_przycisku, faza, liczba_faz, domy¶lny, X, Y,
szeroko¶æ, wysoko¶æ, sygna³
</literal></term>
<listitem><para>
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-vpotmeter"/>vpotmeter = przycisk, szer_przycisku, wys_przycisku, fazy, liczba_faz,
domy¶lny, X, Y, szeroko¶æ, wysoko¶æ, sygna³
</literal></term>
<listitem><para>
Umieszcza poziomo (hpotmeter) lub pionowo (vpotmeter) suwak o rozmiarze
<literal>szeroko¶æ</literal> * <literal>wysoko¶æ</literal> i pozycji <literal>X,Y</literal>.
Obrazek mo¿e byæ podzielony na ró¿ne czê¶ci dla ró¿nych faz suwaka (np. mo¿esz mieæ
suwak g³o¶no¶ci, który w zale¿no¶ci od po³o¿enia zmienia kolor z zielonego (minimum) na
czerwony (maksimum)). <literal>hpotmeter</literal> mo¿e byæ przyciskiem umieszczonym poziomo.
Jego parametry to:
</para>
<itemizedlist>
<listitem><para><literal>przycisk</literal> - obrazek u¿yty do przycisku (musi posiadaæ trzy czê¶ci jedna pod drug± tak,
jak w przypadku <link linkend="skin-button">przycisku</link>)
</para></listitem>
<listitem><para><literal>szer_przycisku</literal>, <literal>wys_przycisku</literal> - wielko¶æ przycisku
</para></listitem>
<listitem><para><literal>fazy</literal> - obrazek u¿ywany do okre¶lenie faz dla hpotmeter.
Warto¶æ specjalna <literal>NULL</literal> mo¿e byæ u¿yta je¶li nie chcesz ¿adnego obrazka.
Obrazek musi byæ podzielony w pionie na <literal>fragmenty poszczególnych faz</literal> tak, jak poni¿ej:
</para>
<informalfigure>
<screen>
+------------+
| faza #1 |
+------------+
| faza #2 |
+------------+
...
+------------+
| faza #n |
+------------+
</screen>
</informalfigure>
</listitem>
<listitem><para><literal>liczba_faz</literal> - liczba faz znajduj±ca siê na obrazku z <literal>fazami</literal>
</para></listitem>
<listitem><para><literal>domy¶lny</literal> - domy¶lne ustawienie dla hpotmeter
(zakres od <literal>0</literal> do <literal>100</literal>)
</para></listitem>
<listitem><para><literal>X</literal>, <literal>Y</literal> - pozycja dla hpotmeter
</para></listitem>
<listitem><para><literal>szeroko¶æ</literal>, <literal>wysoko¶æ</literal> - szeroko¶æ i wysoko¶æ dla
<literal>hpotmeter</literal>
</para></listitem>
<listitem><para><literal>sygna³</literal> - sygna³ generowany podczas zmiany warto¶ci <literal>hpotmeter</literal>
</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-potmeter"/>potmeter = fazy, liczba_faz, domy¶lny, X, Y, szeroko¶æ, wysoko¶æ, sygna³
</literal></term>
<listitem><para>
<literal>hpotmeter</literal> bez przycisku. (domy¶lam siê, ¿e chodzi o to, aby
nim krêciæ, ale reaguje on tylko na poziome przesuwanie). Opis parametrów znajdziesz w czê¶ci o
<link linkend="skin-hpotmeter">hpotmeter</link>.
Parametr <literal>fazy</literal> mo¿e mieæ warto¶æ <literal>NULL</literal>, ale
jest to zupe³nie bezu¿yteczne, gdy¿ nie widaæ wtedy po³o¿enia potencjometru.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-font"/>font = plik_czcionek, id_czcionki
</literal></term>
<listitem><para>
Definiuje czcionki. <literal>plik_czcionek</literal> jest nazw± pliku opisu czcionek z rozszerzeniem
<filename>.fnt</filename> (nie podawaj rozszerzenia w tym miejscu).
<literal>id_czcionki</literal> jest u¿ywany do wskazywania konkretnej czcionki (zobacz <link linkend="skin-dlabel">dlabel</link>
oraz <link linkend="skin-slabel">slabel</link>). Mo¿na zdefiniowaæ do 25 czcionek.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-slabel"/>slabel = X, Y, id_czcionki, &quot;tekst&quot;
</literal></term>
<listitem><para>
Umieszcza statyczn± etykietê w pozycji <literal>X,Y</literal>. <literal>tekst</literal>
jest wy¶wietlany za pomoc± czcionek wskazywanych przez <literal>id_czcionki</literal>. Tekst jest
po prostu zwyk³ym ³añcuchem znaków (zmienne <literal>$x</literal> nie dzia³aj±), które musz± byæ umieszczone
pomiêdzy podwójnym cudzys³owem (a znak &quot; nie mo¿e byæ czê¶ci± tekstu). Etykieta
wy¶wietlana jest za pomoc± czcionek, na które wskazuje <literal>id_czcionki</literal>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-dlabel"/>dlabel = X, Y, d³ugo¶æ, wyrównanie, id_czcionki, &quot;tekst&quot;
</literal></term>
<listitem>
<para>
Umieszcza dynamiczn± etykietê w pozycji <literal>X,Y</literal>. Etykieta jest nazywana
dynamiczn± poniewa¿ jej tekst jest cyklicznie od¶wie¿any. Maksymalna d³ugo¶æ etykiety
okre¶la parametr <literal>d³ugo¶æ</literal> (jej wysoko¶æ okre¶la wysoko¶æ czcionek).
Je¶li tekst jest szerszy ni¿ zdefiniowana d³ugo¶æ, bêdzie on przewijany, w przeciwnym wypadku
bêdzie wyrównany w miejscu okre¶lonym przez warto¶æ parametru <literal>wyrównanie</literal>: <literal>0</literal>
oznacza do prawej, <literal>1</literal> to wy¶rodkowanie, <literal>2</literal> to wyrównanie do lewej.
</para>
<para>
Wy¶wietlany tekst jest okre¶lony przez zmienn± <literal>tekst</literal>: musi byæ zawarty
pomiêdzy podwójnymi cudzys³owami (a znak &quot; nie mo¿e byæ czê¶ci± tekstu). Etykieta
wy¶wietlana jest za pomoc± czcionek, na które wskazuje parametr <literal>id_czcionki</literal>. Mo¿esz
u¿yæ nastêpuj±cych zmiennych w tek¶cie:
</para>
<informaltable>
<tgroup cols="2">
<thead>
<row><entry>Zmienna</entry><entry>Znaczenie</entry></row>
</thead>
<tbody>
<row>
<entry>$1</entry>
<entry>czas odtwarzania w formacie <emphasis>hh:mm:ss</emphasis></entry>
</row>
<row>
<entry>$2</entry>
<entry>czas odtwarzania w formacie <emphasis>mmmm:ss</emphasis></entry>
</row>
<row>
<entry>$3</entry>
<entry>czas odtwarzania w formacie (godziny) <emphasis>hh</emphasis></entry>
</row>
<row>
<entry>$4</entry>
<entry>czas odtwarzania w formacie (minuty) <emphasis>mm</emphasis></entry>
</row>
<row>
<entry>$5</entry>
<entry>czas odtwarzania w formacie (sekundy) <emphasis>ss</emphasis></entry>
</row>
<row>
<entry>$6</entry>
<entry>d³ugo¶æ filmu w formacie <emphasis>hh:mm:ss</emphasis></entry>
</row>
<row>
<entry>$7</entry>
<entry>d³ugo¶æ filmu w formacie <emphasis>mmmm:ss</emphasis></entry>
</row>
<row>
<entry>$8</entry>
<entry>d³ugo¶æ filmu w formacie<emphasis>h:mm:ss</emphasis></entry>
</row>
<row>
<entry>$v</entry>
<entry>format g³o¶no¶ci w %<emphasis>xxx.xx</emphasis></entry>
</row>
<row>
<entry>$V</entry>
<entry>format g³o¶no¶ci <emphasis>xxx.xx</emphasis> format</entry>
</row>
<row>
<entry>$b</entry>
<entry>format balansu w %<emphasis>xxx.xx</emphasis></entry>
</row>
<row>
<entry>$B</entry>
<entry>format balansu <emphasis>xxx.xx</emphasis></entry>
</row>
<row>
<entry>$$</entry>
<entry>znak $</entry>
</row>
<row>
<entry>$a</entry>
<entry>oznaczenie zgodne z rodzajem typu pliku audio (nic: <literal>n</literal>,
mono: <literal>m</literal>, stereo: <literal>t</literal>)</entry>
</row>
<row>
<entry>$t</entry>
<entry>numer ¶cie¿ki (na li¶cie odtwarzania)</entry>
</row>
<row>
<entry>$o</entry>
<entry>nazwa pliku</entry>
</row>
<row>
<entry>$f</entry>
<entry>nazwa pliku pisana ma³ymi literami</entry>
</row>
<row>
<entry>$F</entry>
<entry>nazwa pliku pisana wielkimi literami</entry>
</row>
<row>
<entry>$T</entry>
<entry>oznaczenie zgodne z rodzajem strumienia (plik: <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> (gdy film jest odtwarzany i czcionka ma znak <keycap>p</keycap>)</entry>
</row>
<row>
<entry>$s</entry>
<entry>znak <keycap>s</keycap> (gdy film jest zatrzymany i czcionka ma znak <keycap>s</keycap>)</entry>
</row>
<row>
<entry>$e</entry>
<entry>znak <keycap>e</keycap> (gdy film jest wstrzymany (pauza) i czcionka ma znak <keycap>e</keycap>)
</entry>
</row>
<row>
<entry>$x</entry>
<entry>rozdzielczo¶æ filmu (szeroko¶æ)</entry>
</row>
<row>
<entry>$y</entry>
<entry>rozdzielczo¶æ filmu (wysoko¶æ)</entry>
</row>
<row>
<entry>$C</entry>
<entry>nazwa u¿ywanego kodeka</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</varlistentry>
</variablelist>
<note><para>
Zmienne <literal>$a, $T, $p, $s</literal> oraz <literal>$e</literal>
zwracaj± znaki, które powinny byæ wy¶wietlane jako znaki specjalne (na przyk³ad
<keycap>e</keycap> jest symbolem pauzy, która z regu³y wygl±da mniej wiêcej tak
||). Powiniene¶ mieæ czcionkê dla zwyk³ych znaków oraz osobn± czcionkê dla symboli.
Zobacz sekcjê na temat <link linkend="skin-fonts-symbols">symboli</link>,
by dowiedzieæ siê wiêcej.
</para></note>
</sect2>
<sect2 id="skin-file-subwindow">
<title>Okno ekranu</title>
<para>
Poni¿sze wpisy mog± byæ u¿yte w bloku
'<literal>window = sub</literal>' . . . '<literal>end</literal>' .
</para>
<variablelist>
<varlistentry>
<term><literal>
<anchor id="skin-sub-base"/>base = obrazek, X, Y, szeroko¶æ, wysoko¶æ
</literal></term>
<listitem><para>
Wy¶wietla obrazek w oknie. Okno bêdzie widoczne na ekranie w miejscu oznaczonym przez wspó³rzêdne
<literal>X</literal>, <literal>Y</literal> (<literal>0,0</literal> to lewy górny naro¿nik).
Mo¿esz u¿yæ <literal>-1</literal> dla ¶rodka, <literal>-2</literal>
dla prawej strony (<literal>X</literal>) i do³u (<literal>Y</literal>). Okno
bêdzie mieæ wielko¶æ obrazka. <literal>szeroko¶æ</literal> oraz <literal>wysoko¶æ</literal>
oznaczaj± wielko¶æ okna; s± one opcjonalne (je¶li nie s± okre¶lone, okno bêdzie wielko¶ci takiej, jak obrazek).</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-background"/>background = R, G, B
</literal></term>
<listitem><para>
Pozwala ustawiæ kolor t³a. Jest to u¿yteczne je¶li obrazek jest mniejszy ni¿ okno.
<literal>R</literal>, <literal>G</literal> oraz <literal>B</literal> okre¶laj± sk³adniki kolorów
czerwonego, zielonego i niebieskiego (ka¿dy z nich jest reprezentowany przez liczbê dziesiêtn± w zakresie
od 0 do 255).</para></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="skin-file-menu">
<title>Menu skórki</title>
<para>
Jak wspomniano wcze¶niej, menu jest wy¶wietlane przy u¿yciu dwóch obrazków.
Zwyk³e obszary menu s± pobierane z obrazka okre¶lonego przez element <literal>base</literal>,
podczas gdy obszary zaznaczone s± pobierane z obrazka wskazywanego przez element <literal>selected</literal>.
Musisz zdefiniowaæ pozycjê i rozmiar ka¿dego obszaru menu poprzez element menu.
</para>
<para>
Poni¿sze wpisy mog± byæ u¿yte w bloku:
'<literal>window = menu</literal>'. . .'<literal>end</literal>' .
</para>
<variablelist>
<varlistentry>
<term><literal>
<anchor id="skin-menu-base"/>base = obrazek
</literal></term>
<listitem><para>
Obrazek dla zwyk³ych obszarów menu.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-selected"/>selected = obrazek
</literal></term>
<listitem><para>
Obrazek pokazuj±cy w menu wszystkie zaznaczone obszary.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>
<anchor id="skin-menu"/>menu = X, Y, szeroko¶æ, wysoko¶æ, sygna³
</literal></term>
<listitem><para>
Definiuje pozycjê i rozmiar obszarów menu na obrazku przy pomocy <literal>X,Y</literal>.
<literal>sygna³</literal> to zdarzenie wygenerowane podczas zwolnienia przycisku
myszy nad obszarem.
</para></listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
<sect1 id="skin-fonts">
<title>Czcionki</title>
<para>
Jak wspomniano w sekcji na temat fragmentów skórki, czcionka jest definiowana przez
obrazek i plik opisuj±cy. Mo¿esz umie¶ciæ znak gdziekolwiek na obrazku, ale miej
pewno¶æ, ¿e jego pozycja i rozmiar jest podana w³a¶ciwie w pliku opisuj±cym.
</para>
<para>
Plik opisuj±cy czcionki (o rozszerzeniu <filename>.fnt</filename>) mo¿e posiadaæ
linie komentarzy zaczynaj±ce siê znakiem '<literal>;</literal>'. Plik musi zawieraæ
linie w postaci:
<anchor id="skin-font-image"/>
<programlisting>image = <replaceable>obrazek</replaceable></programlisting>
Gdzie <literal><replaceable>obrazek</replaceable></literal> jest nazw± pliku
graficznego, który zawiera czcionki (nie musisz dopisywaæ jego rozszerzenia).
<anchor id="skin-font-char"/>
<programlisting>&quot;char&quot; = X, Y, szeroko¶æ, wysoko¶æ</programlisting>
<literal>X</literal> oraz <literal>Y</literal> okre¶laj± pozycjê znaku
<literal>char</literal> na obrazku (<literal>0,0</literal> to górny lewy naro¿nik).
<literal>szeroko¶æ</literal> i <literal>wysoko¶æ</literal> to rozmiar znaku
w pikselach.
</para>
<para>
Przyk³ad: definiujemy znaki A, B, C przy u¿yciu pliku <filename>font.png</filename>.
<programlisting>
; Mo¿e byæ &quot;font&quot; zamiast &quot;font.png&quot;.
image = font.png
; Trzy znaki wystarcz± do tej demonstracji :-)
&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>Znaki specjalne (symbole)</title>
<para>
Niektóre znaki maj± specjalne znaczenie, gdy s± zwracane przez pewne zmienne
u¿ywane w <link linkend="skin-dlabel">dlabel</link>. Znaki te mog± byæ wy¶wietlane jako symbole
w ten sposób, ¿e np. podczas odtwarzania strumienia DVD widoczne jest ³adne logo zamiast znaku '<literal>d</literal>'.
</para>
<para>
Poni¿sza tablica zawiera znaki u¿ywane do wy¶wietlania symboli (wymagaj± one oddzielnych czcionek).
</para>
<informaltable>
<tgroup cols="2">
<thead>
<row><entry>Znak</entry><entry>Symbol</entry></row>
</thead>
<tbody>
<row><entry><keycap>p</keycap></entry><entry>odtwarzanie</entry></row>
<row><entry><keycap>s</keycap></entry><entry>stop</entry></row>
<row><entry><keycap>e</keycap></entry><entry>pauza</entry></row>
<row><entry><keycap>n</keycap></entry><entry>bez d¼wiêku</entry></row>
<row><entry><keycap>m</keycap></entry><entry>d¼wiêk mono</entry></row>
<row><entry><keycap>t</keycap></entry><entry>d¼wiêk stereo</entry></row>
<row><entry><keycap>f</keycap></entry><entry>strumieñ z pliku</entry></row>
<row><entry><keycap>v</keycap></entry><entry>strumieñ z Video CD</entry></row>
<row><entry><keycap>d</keycap></entry><entry>strumieñ z DVD</entry></row>
<row><entry><keycap>u</keycap></entry><entry>strumieñ z URL</entry></row>
</tbody>
</tgroup>
</informaltable>
</sect2>
</sect1>
<sect1 id="skin-gui">
<title>Sygna³y GUI</title>
<para>
Tutaj znajduj± siê sygna³y, które mog± byæ generowane przez przyciski, suwaki
i elementy menu.
</para>
<note><para>
Niektóre sygna³y mog± nie dzia³aæ w oczekiwany sposób (lub nie dzia³aæ w ogóle).
Jak wiadomo, GUI jest jeszcze w fazie rozwoju.
</para></note>
<variablelist>
<title>Kontrola odtwarzania :</title>
<varlistentry>
<term><emphasis role="bold">evNext</emphasis></term>
<listitem><para>
Przejd¼ do nastêpnej pozycji na li¶cie odtwarzania.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPause</emphasis></term>
<listitem><para>
Tworzy prze³±cznik razem z <literal>evPlaySwitchToPause</literal>.
Mog± byæ u¿yte do utworzenia wspólnego przycisku dla odtwarzania/pauzy.
Oba sygna³y powinny byæ powi±zane z przyciskami wy¶wietlonymi w tej samej
pozycji w oknie. Sygna³ wstrzymuje wtedy odtwarzanie i wy¶wietlanty jest
obrazek dla przycisku <literal>evPlaySwitchToPause</literal> (aby zaznaczyæ,
¿e przycisk ten mo¿e byæ u¿yty do kontynuowania odtwarzania).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlay</emphasis></term>
<listitem><para>
Rozpoczyna odtwarzanie.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlaySwitchToPause</emphasis></term>
<listitem><para>
Przeciwieñstwo <literal>evPauseSwitchToPlay</literal>. Ten sygna³ zaczyna odtwarzanie
oraz wy¶wietlenie obrazka dla przycisku <literal>evPauseSwitchToPlay</literal>
(aby zaznaczyæ, ¿e przycisk ten mo¿e byæ u¿yty ponownie do wstrzymania odtwarzania).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPrev</emphasis></term>
<listitem><para>
Przejd¼ do poprzedniej pozycji na li¶cie odtwarzania.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evStop</emphasis></term>
<listitem><para>
Zatrzymuje odtwarzanie.
</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Przewijanie:</title>
<varlistentry>
<term><emphasis role="bold">evBackward10sec</emphasis></term>
<listitem><para>
Przewija do ty³u o 10 sekund.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evBackward1min</emphasis></term>
<listitem><para>
Przewija do ty³u o 1 minutê.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evBackward10min</emphasis></term>
<listitem><para>
Przewija do ty³u o 10 minut.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evForward10sec</emphasis></term>
<listitem><para>
Przewija do przodu o 10 sekund.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evForward1min</emphasis></term>
<listitem><para>
Przewija do przodu o 1 minutê.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evForward10min</emphasis></term>
<listitem><para>
Przewija do przodu o 10 minut..
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetMoviePosition</emphasis></term>
<listitem><para>
Przewija do pozycji (mo¿e byæ wykorzystane przez suwak;
u¿yte s± wzglêdne warto¶ci (0-100%) suwaka).
</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Kontrola video:</title>
<varlistentry>
<term><emphasis role="bold">evDoubleSize</emphasis></term>
<listitem><para>
Ustawia podwójny rozmiar okna z filmem.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evFullScreen</emphasis></term>
<listitem><para>
W³±cza/wy³±cza tryb pe³noekranowy.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evNormalSize</emphasis></term>
<listitem><para>
Ustawia typowy rozmiar okna z filmem.
</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Kontrola d¼wiêku:</title>
<varlistentry>
<term><emphasis role="bold">evDecAudioBufDelay</emphasis></term>
<listitem><para>
Zmniejsza opó¼nienie bufora d¼wiêku.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDecBalance</emphasis></term>
<listitem><para>
Zmniejsza balans.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDecVolume</emphasis></term>
<listitem><para>
Zmniejsza g³o¶no¶æ
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIncAudioBufDelay</emphasis></term>
<listitem><para>
Zwiêksza opó¼nienie bufora d¼wiêku.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIncBalance</emphasis></term>
<listitem><para>
Zwiêksza balans.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIncVolume</emphasis></term>
<listitem><para>
Zwiêksza g³o¶no¶æ.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evMute</emphasis></term>
<listitem><para>
Wycisza/przywraca d¼wiêk.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetBalance</emphasis></term>
<listitem><para>
Ustawia balans (mo¿e byæ u¿ywane przez suwak;
u¿ywana jest warto¶æ wzglêdna (0-100%)).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetVolume</emphasis></term>
<listitem><para>
Ustawia g³o¶no¶æ (mo¿e byæ u¿ywane przez suwak;
u¿ywana jest warto¶æ wzglêdna (0-100%)).
</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Ró¿ne:</title>
<varlistentry>
<term><emphasis role="bold">evAbout</emphasis></term>
<listitem><para>
Otwiera okno "o programie".
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDropSubtitle</emphasis></term>
<listitem><para>
Wy³±cza aktualnie u¿ywane napisy.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evEqualizer</emphasis></term>
<listitem><para>
W³±cza/wy³±cza equalizer.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evExit</emphasis></term>
<listitem><para>
Wy³±cza 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>
Wczytuje plik (poprzez otwarcie okna przegl±darki plików, gdzie mo¿esz wybraæ plik).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoadPlay</emphasis></term>
<listitem><para>
Robi to samo co <literal>evLoad</literal>, ale zaczyna automatycznie odtwarzaæ
zaraz po wyborze pliku.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoadSubtitle</emphasis></term>
<listitem><para>
Wczytuje plik z napisami (z przegl±darki plików).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoadAudioFile</emphasis></term>
<listitem><para>
Wczytuje plik d¼wiêkowy (z przegl±darki plików).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evNone</emphasis></term>
<listitem><para>
Sygna³ pusty - nic nie robi (mo¿e za wyj±tkiem wersji z CVS:-)).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlayList</emphasis></term>
<listitem><para>
Otwórz/zamknij okno listy odtwarzania.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlayDVD</emphasis></term>
<listitem><para>
Próbuje odczytaæ p³ytê ze wskazanego czytnika DVD.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlayVCD</emphasis></term>
<listitem><para>
Próbuje odczytaæ p³ytê ze wskazanego czytnika CD.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPreferences</emphasis></term>
<listitem><para>
Otwiera okno z ustawieniami.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetAspect</emphasis></term>
<listitem><para>
Ustawia proporcje obrazu.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetURL</emphasis></term>
<listitem><para>
Wy¶wietla okienko dialogowe URL.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSkinBrowser</emphasis></term>
<listitem><para>
Otwiera okno przegl±darki skórek.
</para></listitem>
</varlistentry>
</variablelist>
</sect1>
</appendix>