1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-28 01:52:19 +00:00
mpv/DOCS/xml/pl/skin.xml
paszczi eeff2c904f synchronizoation
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12821 b3059339-0415-0410-9bf9-f77b7e298cf2
2004-07-14 18:29:42 +00:00

1135 lines
36 KiB
XML

<?xml version="1.0" encoding="iso-8859-2"?>
<!-- synced with 1.10 -->
<appendix id="skin">
<title>Format skórki <application>MPlayera</application></title>
<para>
Celem tego dokumentu jest opisanie formatu skórki
<application>MPlayera</application>.
Informacje zawarte tutaj mog± byæ niedok³adne, poniewa¿:
<orderedlist>
<listitem><para>To nie ja napisa³em 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
to tutaj.
</para>
<para>Podziêkowania dla <emphasis>Zoltána Ponekkera</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 <application>MPlayer</application> <emphasis role="bold">nie</emphasis>
ma wbudowanej skórki, w zwi±zku z tym <emphasis role="bold"> co najmniej
jedna skórka musi byæ zainstalowana, aby¶ mia³ mo¿liwo¶æ korzystania z 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
<application>MPlayer</application> zosta³ 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 jednej z wy¿ej
wymienionych lokacji, 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æ zapisane w formacie PNG (paleta 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 <application>MPlayera</application>. Oznacza to, ¿e
mo¿esz mieæ okna o ró¿nych kszta³tach je¶li Twój X Server ma 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.
<application>Winampa</application>/<application>XMMS</application>),
a wiêc zale¿y to wy³±cznie od Ciebie, czy stworzysz co¶ wspania³ego.
</para>
<para>
W chwili obecnej mamy cztery 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¿esz
sterowaæ <application>MPlayerem</application>.
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 jest pod 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> czcionkê).
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, gdzie odtwarzany jest
film. 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 <application>MPlayera</application> poprzez wpisy w menu. Dwa
obrazki s± do tego potrzebne: 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 w ca³o¶ci).
</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:
<application>MPlayer</application> 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æ wys³ane podczas
klikniêcia na nie.
</para>
</sect2>
<sect2 id="skin-files">
<title>Pliki</title>
<para>
Potrzebujesz nastêpuj±cych plików do stworzenia skórki:
<itemizedlist>
<listitem><para>
Plik konfiguracyjny o nazwie <link linkend="skin-file">skin</link> mówi
<application>MPlayerowi</application> jak po³±czyæ ró¿ne czê¶ci skórki
w jedn± ca³o¶æ i co zrobiæ, gdy kliknie siê gdzie¶ na 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 stworzyæ
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' - jej nazwa 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, <application>MPlayer</application>
spróbuje wczytaæ plik <filename>&lt;nazwa pliku&gt;.&lt;rozszerzenie&gt;</filename>,
gdzie <literal>png</literal> oraz <literal>PNG</literal> s± brane 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¿esz
umie¶ciæ 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>
<application>MPlayer</application> spró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>
Mo¿esz okre¶liæ obrazek t³a, który bêdzie u¿ywany w oknie g³ównym.
Okno bêdzie widoczne na ekranie na wspó³rzêdnych <literal>X, Y</literal>. 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 niemaj±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>
Umie¶ci przycisk o rozmiarze <literal>szeroko¶æ</literal> *
<literal>wysoko¶æ</literal> na 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³±czona)
</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 fragmenty <literal>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 czcionkê. <literal>plik_czcionek</literal> jest nazw± pliku opisu
czcionki 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± czcionki wskazywanych przez
<literal>id_czcionki</literal>. Tekst jest po prostu zwyk³ym ³añcuchem znaków
(zmienne <literal>$x</literal> nie dzia³aj±), któru musi byæ umieszczony
pomiêdzy podwójnym cudzys³owem (znak &quot; nie mo¿e byæ czê¶ci± tekstu).
Etykieta wy¶wietlana jest za pomoc± czcionki, na któr± 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. Maksymaln±
d³ugo¶æ etykiety okre¶la parametr <literal>d³ugo¶æ</literal> (jej wysoko¶æ
okre¶la wysoko¶æ czcionki). 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 (znak &quot; nie mo¿e byæ czê¶ci±
tekstu). Etykieta wy¶wietlana jest za pomoc± czcionki, na któr± 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æ znaki gdziekolwiek na obrazku,
ale miej pewno¶æ, ¿eich pozycja i rozmiar jest dok³adnie podana w pliku
opisuj±cym.
</para>
<para>
Plik opisuj±cy czcionkê (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 czcionkê (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 odtwarzania/pauzy.
Oba sygna³y powinny byæ powi±zane z przyciskami wy¶wietlonymi na tej samej
pozycji w oknie. Sygna³ ten wstrzymuje odtwarzanie i wy¶wietla 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>
Rozpocznij 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¶wietla obrazek 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>
Zatrzymaj odtwarzanie.
</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Przewijanie:</title>
<varlistentry>
<term><emphasis role="bold">evBackward10sec</emphasis></term>
<listitem><para>
Przewiñ do ty³u o 10 sekund.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evBackward1min</emphasis></term>
<listitem><para>
Przewiñ do ty³u o 1 minutê.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evBackward10min</emphasis></term>
<listitem><para>
Przewiñ do ty³u o 10 minut.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evForward10sec</emphasis></term>
<listitem><para>
Przewiñ do przodu o 10 sekund.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evForward1min</emphasis></term>
<listitem><para>
Przewiñ do przodu o 1 minutê.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evForward10min</emphasis></term>
<listitem><para>
Przewiñ do przodu o 10 minut..
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetMoviePosition</emphasis></term>
<listitem><para>
Przewiñ 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>
Ustaw podwójny rozmiar okna z filmem.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evFullScreen</emphasis></term>
<listitem><para>
W³±cz/wy³±cz tryb pe³noekranowy.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evNormalSize</emphasis></term>
<listitem><para>
Ustaw 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>
Zmniejsz opó¼nienie bufora d¼wiêku.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDecBalance</emphasis></term>
<listitem><para>
Zmniejsz balans.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDecVolume</emphasis></term>
<listitem><para>
Zmniejsz g³o¶no¶æ
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIncAudioBufDelay</emphasis></term>
<listitem><para>
Zwiêksz opó¼nienie bufora d¼wiêku.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIncBalance</emphasis></term>
<listitem><para>
Zwiêksz balans.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIncVolume</emphasis></term>
<listitem><para>
Zwiêksz g³o¶no¶æ.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evMute</emphasis></term>
<listitem><para>
Wycisz/przywróæ d¼wiêk.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetBalance</emphasis></term>
<listitem><para>
Ustawi 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>
Ustaw 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>
Otwórz okno "o programie".
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evDropSubtitle</emphasis></term>
<listitem><para>
Wy³±cz aktualnie u¿ywane napisy.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evEqualizer</emphasis></term>
<listitem><para>
W³±cz/wy³±cz korektor.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evExit</emphasis></term>
<listitem><para>
Wy³±cz program.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evIconify</emphasis></term>
<listitem><para>
Minimalizuj okno.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoad</emphasis></term>
<listitem><para>
Wczytaj 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>
Tto samo co <literal>evLoad</literal>, ale zacznij automatycznie odtwarzaæ
zaraz po wyborze pliku.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoadSubtitle</emphasis></term>
<listitem><para>
Wczytaj plik z napisami (z przegl±darki plików).
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evLoadAudioFile</emphasis></term>
<listitem><para>
Wczytaj 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>
Spróbuj odczytaæ p³ytê ze wskazanego czytnika DVD.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPlayVCD</emphasis></term>
<listitem><para>
Spróbuj odczytaæ p³ytê ze wskazanego czytnika CD.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evPreferences</emphasis></term>
<listitem><para>
Otwórz okno z ustawieniami.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetAspect</emphasis></term>
<listitem><para>
Ustaw proporcje obrazu.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSetURL</emphasis></term>
<listitem><para>
Wy¶wietl okienko dialogowe URL.
</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">evSkinBrowser</emphasis></term>
<listitem><para>
Otwórz okno przegl±darki skórek.
</para></listitem>
</varlistentry>
</variablelist>
</sect1>
</appendix>