mpv/DOCS/pl/skin.html

800 lines
31 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>Tworzenie Sk<53>rek - MPlayer - Odtwarzacz Film<6C>w dla Linuksa</title>
<link rel="stylesheet" type="text/css" href="../default.css">
<style type="text/css">
em.note {color: green;
font-style: normal;}
em.warn {color: red;
font-style: normal;}
</style>
</head>
<body>
<h1>Dodate D - Format sk<73>rek MPlayera</h1>
<p>Celem tej dokumentacji jest opisanie formatu sk<73>r MPlayera. Informacje zawarte
w tym dokumencie mog<6F> by<62> b<><62>dne, poniewa<77>:</p>
<ol type="a">
<li>To nie ja napisa<73>em GUI.</li>
<li>GUI nie jest sko<6B>czone.</li>
<li>Mog<EFBFBD> si<73> myli<6C>.</li>
</ol>
<p>Wi<EFBFBD>c nie b<>d<EFBFBD> zaskoczony je<6A>eli co<63> nie b<>dzie dzia<69>a<EFBFBD>o w spos<6F>b w jaki zosta<74>o tutaj opisane.</p>
<p>Podzi<EFBFBD>kowania dla <em>Zolt<EFBFBD>n Ponekker</em> za jego pomoc.</p>
<p><em>Andr<EFBFBD>s Mohari &lt;mayday@freemail.hu&gt;</em></p>
<h2><a name="overview">D.1 Przedmowa</a></h2>
<p>To nie ma tak naprawd<77> <20>adnego zwi<77>zku z formatem sk<73>r, ale powiniene<6E> wiedzie<69>,
<20>e MPlayer <B>nie</B> ma wbudowanej sk<73>rki, wi<77>c musisz <B>mie<EFBFBD> zainstalowan<61> chocia<69>
jedn<64> sk<73>r<EFBFBD>, aby mie<69> mo<6D>liwo<77><6F> u<>ywania GUI.</B></p>
<h3><a name="directories">D.1.1 Katalogi</a></h3>
<p>Katalogi przeszukiwane przez MPlayera w poszukiwaniu sk<73>r to (w kolejno<6E>ci szukania):</p>
<pre>
$(DATADIR)/Skin/
$(PREFIX)/share/mplayer/Skin/
~/.mplayer/Skin/
</pre>
<p>Zauwa<EFBFBD>, <20>e pierwsza <20>cie<69>ka mo<6D>e by<62> zale<6C>na od tego, jak MPlayer zosta<74> skonfigurowany
podczas kompilacji (zobacz argumenty <code>--prefix</code> i <code>--datadir</code>
skryptu <code>configure</code>).</p>
<p>Ka<EFBFBD>da sk<73>rka jest zainstalowana w swoim w<>asnym katalogu znajduj<75>cym si<73> w jednym
z folder<65>w wymienionych powy<77>ej, na przyk<79>ad:</p>
<pre>
$(PREFIX)/share/mplayer/Skin/default/
</pre>
<h3><a name="images">D.1.2 Formaty obrazk<7A>w</a></h3>
<p>Obrazki musz<73> to by<62> PNG z g<><67>bi<62> kolor<6F>w truecolor (24, albo 32 bity).</p>
<p>W g<><67>wnym oknie i w pasku odtwarzania (zobacz ni<6E>ej) mo<6D>esz u<>ywa<77> obrazk<7A>w
z 'prze<7A>roczysto<74>ci<63>': obszary wype<70>nione przy u<>yciu koloru #FF00FF
(<font color="#FF00FF">magenta</font>) s<> dla MPlayera w pe<70>ni prze<7A>roczyste.
Oznacza to, <20>e mo<6D>esz u<>ywa<77> dowolnych kszta<74>t<EFBFBD>w okna g<><67>wnego, je<6A>eli
tw<74>j X serwer posiada rozszerzenie XShape.</p>
<h3><a name="components">D.1.3 Cz<43><7A>ci sk<73>rki</a></h3>
<p>Sk<EFBFBD>rki s<> ca<63>kowicie konfigurowalne (w przeciwie<69>stwie np. do sk<73>r Winampa/XMMS)
(chodzi o to, <20>e mo<6D>esz umie<69>ci<63> dowolny przycisk np. 'play' w dowolnym miejscu
swojej sk<73>ry, format XMMSa i Winampa ma z g<>ry ustalone po<70>o<EFBFBD>enie ka<6B>dego elementu
i nie mo<6D>na tego zmieni<6E> - przyp. t<>umacza), wi<77>c tylko od ciebie zale<6C>y,
czy stworzysz co<63> naprawd<77> fajnego.</p>
<p>Na dzie<69> dzisiejszy s<> trzy okna do skonfigurowania: <a href="#mainwin">okno g<><67>wne</a>
(main window), <a href="#subwindow">okno ekranu</a> (subwindow),
<a href="#mainwin">pasek odtwarzania</a> (playbar) oraz <a href="#skinmenu">menu sk<73>ry</a>
(skin menu) (kt<6B>re mo<6D>e zosta<74> uaktywnione poprzez naci<63>ni<6E>cie prawego przycisku myszy).</p>
<ul>
<li><p><b>Okno g<><67>wne</b> i/lub <b>pasek odtwarzania</b> to okno w kt<6B>rym kontrolujesz
MPlayera. T<>o tego okna jest obrazkiem. R<><52>ne elementy mog<6F> (i musz<73>) by<62> umieszczone
w tym oknie: <em>przyciski</em> (buttons), <em>potencjometry</em> (suwaki, ang. potmeters, sliders)
i <em>etykiety</em> (labels). Dla ka<6B>dego elementu musisz okre<72>li<6C> jego pozycj<63> oraz rozmiar.</p>
<p><b>Przycisk</b> ma trzy fazy (wci<63>ni<6E>ty, uwolniony oraz nieaktywny), wi<77>c ich obrazki
musz<73> by<62> podzielone na trzy cz<63><7A>ci w pionie. Zobacz sekcj<63> <a href="#main.button">przyciski</a>,
aby uzyska<6B> wi<77>cej informacji.</p>
<p><b>Potencjometry</b> (zazwyczaj u<>ywane do okre<72>lania pozycji filmu (seek bar) oraz do
kontroli g<>o<EFBFBD>no<6E>ci/balansu d<>wi<77>ku) mog<6F> posiada<64> dowoln<6C> liczb<7A> faz poprzez podzielenie
jego obrazka na cz<63><7A>ci, gdzie nast<73>pna faza jest poni<6E>ej poprzedniej.
Zobacz sekcj<63> <a href="#main.hpotmeter">hpotmeter</a> i <a href="#main.potmeter">potmeter</a>,
aby dowiedzie<69> si<73> wi<77>cej na ten temat.</p>
<p><b>Etykiety</b> s<> bardzo specyficzne: znaki s<>u<EFBFBD><75>ce do ich opisania s<>
brane z poliku graficznego, a litery, kt<6B>re s<> w nim zawarte w pliku graficznym
s<> opisane przez <a href="#fonts">plik opisuj<75>cy fonty</a>. Jest to plik tekstowy,
kt<6B>ry okre<72>la pozycj<63> x, y oraz rozmiar ka<6B>dego symbolu znajduj<75>cego si<73> w obrazku
(a wi<77>c "plik graficzny z fontami" i "plik opisuj<75>cy fonty" tworz<72> <em>razem</em> fonty).
Zobacz <a href="#main.dlabel">dlabel</a> i <a href="#main.slabel">slabel</a>,
po wi<77>cej szczeg<65><67><EFBFBD>w.</p>
<p><em class="note"><b>Informacja:</b> wszystkie obrazki mog<6F> posiada<64> prze<7A>roczysto<74><6F> tak,
jak opisano to w sekcji formaty <a href="#images">plik<EFBFBD>w graficznych</a>. Je<4A>eli
serwer X nie obs<62>uguje rozszerzenia XShape, cz<63><7A><EFBFBD> oznaczona jako przezroczysta, b<>dzie
czarna. Je<4A>eli chcesz u<>ywa<77> tej funkcji, szeroko<6B><6F> obrazka t<>a g<><67>wnego okna musi
by<62> podzielna przez 8.</em></p>
</li>
<li><b>Okno ekranu</b> - tutaj pojawia si<73> film podczas odtwarzania. Mo<4D>e ono
wy<77>wietla<6C> okre<72>lony obrazek je<6A>eli nie jest w danym momencie odgrywany <20>aden film
(to do<64><6F> nudne mie<69> puste okno :-)) <em class=note><b>Informacja:</b> prze<7A>roczysto<74><6F>
jest tutaj <b>niedost<EFBFBD>pna</b>.</em></li>
<li><p><b># menu sk<73>ry</b> to po prostu jeden ze sposob<6F>w do kontrolowania MPlayera
poprzez polecenia z menu. Wymagane s<> tutaj dwa obrazki: pierwszy z nich jest
podstawowym obrazkiem pokazuj<75>cym menu w "normalnym" stanie, drugi natomiast jest
u<>ywany do wy<77>wietlania wybranych element<6E>w. Kiedy aktywujesz menu pokazywany jest
pierwszy obrazek. Kiedy naje<6A>d<EFBFBD>asz kursorem na kt<6B>r<EFBFBD><72> z pozycji, jej zaznaczenie
jest kopiowane z drugiego obrazka na obszar menu znajduj<75>cy si<73> pod wska<6B>nikiem myszy
(a wi<77>c drugi obrazek nigdy nie jest pokazany w ca<63>o<EFBFBD>ci).</p>
<p>Obszar menu znajduj<75>cy si<73> pod kursorem jest zdefiniowany poprzez jego pozycj<63>
i rozmiar w obrazku (zobacz sekcj<63> <a href="#skinmenu">menu sk<73>ry</a> aby dowiedzie<69>
si<73> wi<77>cej na ten temat).</p>
</li>
</ul>
<p>Jest jeszcze jedna wa<77>na rzecz, kt<6B>ra nie zosta<74>a jeszcze wspomniana: dla przycisk<73>w,
potencjometr<74>w i obszar<61>w menu, MPlayer musi wiedzie<69> co ma zrobi<62> je<6A>eli zostan<61> one
klikni<6E>te. Zajmuj<75> si<73> tym <a href="#guimsg">sygna<EFBFBD>y</a> (zdarzenia). Dla wszystkich
tych element<6E>w musz<73> by<62> zdefiniowane sygna<6E>y, kt<6B>re maj<61> zosta<74> wywo<77>ane po naci<63>ni<6E>ciu
przycisku myszy.</p>
<h3><a name="files">D.1.4 Pliki</a></h3>
<p>Aby stworzy<7A> sk<73>r<EFBFBD> b<>dziesz potrzebowa<77> nast<73>puj<75>cych plik<69>w:</p>
<ul>
<li>Plik konfiguracyjny o nazwie<a href="#skin">skin</a>, kt<6B>ry informuje
MPlayera w jaki spos<6F>b <20><>czy<7A> ze sob<6F> poszczeg<65>lne cz<63><7A>ci sk<73>ry i co ma
zrobi<62> kiedy klikasz gdziesz w obszarze okna.</li>
<li>Obrazek T<>a do g<><67>wnego okna.</li>
<li>Obrazki dla element<6E>w okna g<><67>wnego (w<><77>czaj<61>c w to jeden, albo wi<77>cej
plik<69>w opisuj<75>cych fonty potrzebnych do wy<77>wietlania etykiet).</li>
<li>Obrazek kt<6B>ry ma by<62> wy<77>wietlony w oknie ekranu (opcjonalnie).</li>
<li>Dwa obrazki do menu sk<73>ry (s<> one potrzebne tylko je<6A>li chcesz stworzy<7A> takie menu).</li>
</ul>
<p>Poza plikiem konfiguracyjnym sk<73>ry, mo<6D>esz nazwa<77> wszystkie inne pliki
jak tylko chcesz (ale pami<6D>taj, <20>e plik opisuj<75>cy fonty musi mie<69> rozszerzenie <code>.fnt</code>).</p>
<h2><a name="skinfile">D.2 Plik skin</a></h2>
<p>Jak wspomniano powy<77>ej jest to plik konfiguruj<75>cy sk<73>r<EFBFBD>. Potrafi on rozpoznawa<77>
typy wierszy: wiersze komentarza rozpoczyna <20>rednik, czyli '<code>;</code>'
(przed nim mog<6F> znajdowa<77> si<73> tylko spacje, lub znaki tabulacji).</p>
<p>Plik podzielony jest na sekcj<63>. Ka<4B>da z nich opisuje poszczeg<65>lny element
sk<73>ry dla ka<6B>dej z aplikacji i ma nast<73>puj<75>c<EFBFBD> posta<74>:</p>
<table border="1" width="100%">
<tr bgcolor="silver">
<td>
<pre>
section = <i>section name</i>
.
.
.
end
</pre>
</td>
</tr>
</table>
<p>Na dzie<69> dzisiejszy istnieje tylko jedna aplikacja, wi<77>c potrzebujesz tylko jednej sekcji:
jej nazwa to <b>movieplayer</b> (odtwarzacz film<6C>w).</p>
<p>W tej sekcji ka<6B>de z okien jest opisane poprzez dany blok w taki spos<6F>b:</p>
<table border="1" width="100%">
<tr bgcolor="silver">
<td>
<pre>
window = <i>window name</i>
.
.
.
end
</pre>
</td>
</tr>
</table>
<p>gdzie <i>window name</i> mo<6D>e by<62> jednym z nast<73>puj<75>cych ci<63>g<EFBFBD>w znak<61>w:</p>
<ul>
<li><b>main</b> - dla g<><67>wnego okna</li>
<li><b>sub</b> - dla okna ekranu</li>
<li><b>menu</b> - dla menu sk<73>ry</li>
<li><b>playbar</b> - pasek odtwarzania</li>
</ul>
<p>(wpisy sub i menu s<> opcjonalne - nie musisz tworzy<7A> menu, ani dekorowa<77>
okna ekranu je<6A>eli nie chcesz.)</p>
<p>W ka<6B>dym z blok<6F>w mo<6D>esz zdefiniowa<77> poszczeg<65>lne elementy (items) dla danego
okna w spos<6F>b przedstawiony poni<6E>ej:</p>
<dl>
<dt><b><code>item = parameter</code></b></dt>
<dd>Gdzie <code>item</code> jest ci<63>giem znak<61>w identyfikuj<75>cym typ danego
elementu GUI, parametr jest numeryczn<7A>, lub tekstow<6F> warto<74>ci<63>
(lub list<73> warto<74>ci oddzielon<6F> przecinkami).</dd>
</dl>
<p><EFBFBD><EFBFBD>cz<EFBFBD>c to wszystko ze sob<6F>, uzyskujemy plik wygl<67>daj<61>cy mniej wi<77>cej tak:</p>
<table border="1" width="100%">
<tr bgcolor="silver">
<td>
<pre>
section = movieplayer
window = main
; ... elementy dla okna g<><67>wnego ...
end
window = sub
; ... elementy dla okna ekranu ...
end
window = menu
; ... elementy dla menu sk<73>ry ...
end
window = playbar
; ... elementy dla paska odtwarzania ...
end
end
</pre>
</td>
</tr>
</table>
<p>Nazwa obrazk musi by<62> podana bez <20>adnych g<><67>wnych katalog<6F>w - obrazki s<>
poszukiwane w katalogu ze <code>sk<EFBFBD>rk<EFBFBD></code>. Mo<4D>esz (ale nie musisz) poda<64>
rozszerzenie plik<69>w. Je<4A>eli plik nie istnieje, MPlayer pr<70>buje za<7A>adowa<77> plik
<code>&lt;nazwa pliku&gt;.&lt;rozszerzenie&gt;</code>, gdzie <code>png</code>
i <code>PNG</code> s<> pr<70>bowane jako <code>&lt;rozszerzenie&gt;</code> (w tej
kolejno<6E>ci). Wykorzystany zostanie pierwszy pasuj<75>cy plik.</p>
<p>Na koniec kilka s<><73>w o pozicjonowaniu. G<><47>wne okno i okno ekranu mog<6F>
by<62> umieszczone w r<><72>nych naro<72>nikach ekranu poprzez podanie parametr<74>w
<code>X</code> i <code>Y</code>. <code>0</code> jest g<>r<EFBFBD> lub lew<65> stron<6F>,
<code>-1</code> wy<77>rodkowuje, a <code>-2</code> jest do<64>em lub praw<61> stron<6F>,
jak pokazano na ilustracji:</p>
<pre>
(0, 0)----(-1, 0)----(-2, 0)
| | |
| | |
(0,-1)----(-1,-1)----(-2,-1)
| | |
| | |
(0,-2)----(-1,-2)----(-2,-2)
</pre>
<table border="1" cellpadding="5" width="100%">
<tr bgcolor="#ffffcc">
<td>Tutaj jest przyk<79>ad, kt<6B>ry powinien to wyja<6A>ni<6E>. Przypu<70><75>my, <20>e masz obrazek
o nazwie <code>main.png</code>, kt<6B>ry u<>ywasz do g<><67>wnego okna:
<blockquote>
<code>base = main, -1, -1</code>
</blockquote>
MPlayer pr<70>buje za<7A>adowa<77> <code>main</code>, <code>main.png</code>,
<code>main.PNG</code>.
</td>
</tr>
</table>
<h3><a name="mainwindow">D.2.1 Okno g<><67>wne i pasek odtwarzania</a></h3>
<p>Poni<EFBFBD>ej mo<6D>esz zobaczy<7A> list<73> element<6E>w, kt<6B>re mog<6F> by<62> u<>yte w bloku
'<code>window = main</code>' .&nbsp;.&nbsp;. '<code>end</code>', i w
'<code>window = playbar</code>' &nbsp;.&nbsp;. '<code>end</code>'.</p>
<dl>
<dt><a name="main.base"><b><code>base = obrazek, X, Y</code></b></a></dt>
<dd>Pozwala ci okre<72>li<6C> obrazek t<>a, kt<6B>ry ma zosta<74> u<>yty w g<><67>wnym oknie.
Okno to pojawi si<73> w okre<72>lonej przez <code>x,y</code> pozycji na ekranie.
Okno to b<>dzie rozmiar<61>w obrazka t<>a.
<div><em class="warn"><b>Informacja:</b> Te parametry narazie nie dzia<69>aj<61>
dla okna ekranu.</em></div>
<div><em class="warn"><b>Ostrze<EFBFBD>enie:</b> prze<7A>roczyste obszary w obrazku
(kolor #FF00FF) pojawiaj<61> si<73> jako czarny kolor w X serwerach, kt<6B>re nie
obs<62>uguj<75> rozszerzenia XShape.</em></div>
</dd>
<dt><a name="main.button"><b><code>button = obrazek, X, Y, szeroko<6B><6F>, wysoko<6B><6F>,
sygna<6E></code></b></a></dt>
<dd>Umieszcza przycisk o rozmiarze <code>szeroko<EFBFBD><EFBFBD></code> * <code>wysoko<EFBFBD><EFBFBD></code>
na pozycji <code>X</code>,<code>Y</code>. Okre<72>lony <code>sygna<EFBFBD></code> jest generowany,
kiedy przycisk zostanie klikni<6E>ty. Obrazek okre<72>lony przez <code>obrazek</code>
musi by<62> podzielony na trzy cz<63><7A>ci umieszczone jedna pod drug<75> (podzielony wed<65>ug
mo<6D>liwych faz przycisku), w ten spos<6F>b:
<pre>
+------------+
| wci<63>ni<6E>ty |
+------------+
| uwolniony |
+------------+
| nieaktywny |
+------------+
</pre>
</dd>
<dt><a name="main.decoration"><b><code>decoration = enable|disable</code></b>
</a></dt>
<dd>W<EFBFBD><EFBFBD>cza, lub wy<77><79>cza dekoracje okna (pasek tytu<74>owy) twojego menad<61>era okien
Domy<6D>lnie jest to <b>wy<EFBFBD><EFBFBD>czone</b>.
<div><em class="warn"><b>Informacja:</b> Nie dzia<69>a z oknem ekranu, opcja nie
jest wymagana.</em></div>
</dd>
<dt><a name="main.hpotmeter"><b><code>hpotmeter = przycisk, szer_przycisku, wys_przycisku,
fazy, liczbafaz, domy<6D>lna, X, Y, szeroko<6B><6F>, wysoko<6B><6F>, sygna<6E></code><br>
<code>vpotmeter = przycisk, szer_przycisku, wys_przycisku, fazy, liczbafaz,
domy<6D>lna, X, Y, szeroko<6B><6F>, wysoko<6B><6F>, sygna<6E></code></b></a></dt>
<dd>Umieszcza poziomy (hpotmeter) lub pionowy (vpotmeter) potencjometr o rozmiarach
<code>szeroko<EFBFBD><EFBFBD></code> * <code>wysoko<EFBFBD><EFBFBD></code>
na pozycji <code>X</code>,<code>Y</code>. Obrazek mo<6D>e by<62> podzielony na r<><72>ne cz<63><7A>ci
dla r<><72>nych faz potencjometru (np. mo<6D>esz mie<69> potencjometr g<>o<EFBFBD>no<6E>ci, kt<6B>ry zmienia si<73>
z zielonego na czerwony podczas zmiany g<>o<EFBFBD>no<6E>ci z minimalnej do maksymalnej).
<code>hpotmeter</code> mo<6D>e mie<69> przycisk kt<6B>ry jest przesuwany w poziomie.
<div>Parametry to:</div>
<ul>
<li><code>przycisk</code> - obrazek kt<6B>ry ma by<62> u<>yty jako suwak (musi mie<69>
trzy cz<63><7A>ci umieszczone jedna pod drug<75>, tak jak w przypadku
<a href="#main.button">przycisku</a>)</li>
<li><code>szer_przycisku</code>, <code>wys_przycisku</code> -rozmiar suwaka</li>
<li><code>fazy</code> - obrazek, kt<6B>ry ma by<62> u<>yty dla r<><72>nych faz hpotencjometru.
Specjalna warto<74><6F> <code>NULL</code> mo<6D>e by<62> u<>yta, je<6A>eli nie chcesz
<20>adnego obrazka. Obrazek musi by<62> podzielony w pionie na <code>liczb<EFBFBD>faz</code>,
w ten spos<6F>b:
<pre>
+------------+
| faza #1 |
+------------+
| faza #2 |
+------------+
...
+------------+
| faza #n |
+------------+
</pre>
</li>
<li><code>liczbafaz</code> - liczba faz znajduj<75>ca si<73> w obrazku
z <code>fazami</code>
<li><code>domy<EFBFBD>lna</code> - domy<6D>lna warto<74><6F> dla hpotencjometru (w przedziale od
0 do 100)</li>
<li><code>X</code>, <code>Y</code> - pozycja hpotencjometru</li>
<li><code>szeroko<EFBFBD><EFBFBD></code>, <code>wysoko<EFBFBD><EFBFBD></code> - szeroko<6B><6F> i wysoko<6B><6F>
<code>hpotnecjometru</code></li>
<li><code>sygna<EFBFBD></code> - sygna<6E> kt<6B>ry ma by<62> wywo<77>any, kiedy zmienia si<73> warto<74><6F>
<code>hpotnecjometru</code></li>
</ul>
</dd>
<dt><a name="main.potmeter"><b><code>potmeter = fazy, liczbafaz, domy<6D>lna, X,
Y, szeroko<6B><6F>, wysoko<6B><6F>, sygna<6E></code></b></a></dt>
<dd><code>Potencjometr</code> bez suwaka. (My<4D>l<EFBFBD>, <20>e chodzi tu o to <20>eby nim kr<6B>ci<63>, ale
reaguje on tylko na poziome przesuwanie.) Aby zobaczy<7A> opis parametr<74>w
zobacz <a href="#main.hpotmeter">hpotmeter</a>. <code>fazy</code> mog<6F> mie<69> warto<74><6F>
<code>NULL</code>, ale jest to bezu<7A>yteczne, je<6A>eli nie mo<6D>esz zobaczy<7A> gdzie znajduje
si<73> <code>potencjometr</code>.</dd>
<dt><a name="main.font"><b><code>font = plikfont<6E>w, fontid</code></b></a></dt>
<dd>Definiuje fonty. <code>fontfile</code> jest nazw<7A> pliku opisuj<75>cego fonty
z rozszerzeniem <code>.fnt</code> <b>nie trzeba</b> tu okre<72>la<6C> rozszerzenia).
<code>fontid</code> jest u<>ywany do odsy<73>ania si<73> do danego fonta (zobacz
<a href="#main.dlabel">dlabel</a> i <a href="#main.slabel">slabel</a>).
Mo<4D>esz okre<72>li<6C> ponad 25 znak<61>w.</dd>
<dt><a name="main.slabel"><b><code>slabel = X, Y, fontid, "text"</code></b>
</a></dt>
<dd>
Umieszcza statyczn<7A> etykiet<65> na pozycji <code>X</code>,<code>Y</code>.
<code>text</code> jest wy<77>wietlany u<>ywaj<61>c <code>fontid</code>. Text
jest po prostu nieprzetworzonym ci<63>giem znak<61>w (zmienne <code>$x</code>
nie dzia<69>aj<61>) kt<6B>ry musi znajdowa<77> si<73> w cudzys<79>owiu (" nie mo<6D>e by<62> cz<63><7A>ci<63>
tekstu). Etykieta jest wy<77>wietlana u<>ywaj<61>c <code>fontid</code>.</dd>
<dt><a name="main.dlabel"><b><code>dlabel = X, Y, d<>ugo<67><6F>, align, fontid,
"text"</code></b></a></dt>
<dd>Umieszcza dynamiczne etykiety na pozycji <code>X</code>,<code>Y</code>.
Etykieta nazywana jest dynamiczn<7A>, poniewa<77> tekst w niej jest regularnie
od<6F>wie<69>any. Maksymalna d<>ugo<67><6F> etykiety jest ustalona przez <code>d<EFBFBD>ugo<EFBFBD><EFBFBD></code>
przez
label is called dynamic because its text is refreshed periodically. The
maximum length of the label is given by <code>length</code> (jej wysoko<6B><6F>
jest wysoko<6B>ci<63> font<6E>w). Je<4A>eli tekst kt<6B>ry ma by<62> wy<77>wietlony jest d<>u<EFBFBD>szy
od tej warto<74>ci, wtedy b<>dzie on przewijany, w innym przypadku b<>dzie on
wyr<79>wnany do okre<72>lonej przez <code>align</code> (wyr<79>wnanie) przestrzeni.
<code>0</code> dla wyr<79>wnania do prawej, <code>1</code> dla wy<77>rodkowania,
<code>2</code> dla wyr<79>wnania do lewej.<br>
Tekst, kt<6B>ry ma zosta<74> wy<77>wietlony jest okre<72>lony przez <code>text</code>:
musi by<62> on opisany w cudzys<79>owiu (ale <code>"</code> nie mo<6D>e by<62> cz<63><7A>ci<63>
tekstu). Etykieta jest wy<77>wietlana u<>ywaj<61>c <code>fontid</code>. Mo<4D>esz
u<>y<EFBFBD> poni<6E>szych zmiennych w tek<65>cie:
<table align="center" border="1">
<tr align="center"><th>Zmienna</th><th align="left">Znaczenie</th></tr>
<tr><td align="center"><kbd>$1</kbd></td>
<td>play time in <em>hh:mm:ss</em> format</td></tr>
<tr><td align="center"><kbd>$2</kbd></td>
<td>odtwarza czas w formacie <em>mmmm:ss</em></td></tr>
<tr><td align="center"><kbd>$3</kbd></td>
<td>odtwarza czas w formacie <em>hh</em> (godziny)</td></tr>
<tr><td align="center"><kbd>$4</kbd></td>
<td>odtwarza czas w formacie <em>mm</em> (minuty)</td></tr>
<tr><td align="center"><kbd>$5</kbd></td>
<td>odtwarza czas w formacie <em>ss</em> (sekundy)</td></tr>
<tr><td align="center"><kbd>$6</kbd></td>
<td>wy<EFBFBD>wietla d<>ugo<67><6F> filmu w formacie <em>hh:mm:ss</em> </td></tr>
<tr><td align="center"><kbd>$7</kbd></td>
<td>wy<EFBFBD>wietla d<>ugo<67><6F> filmu w formacie <em>mmmm:ss</em> </td></tr>
<tr><td align="center"><kbd>$8</kbd></td>
<td>odtwarza czas w formacie <em>h:mm:ss</em></td></tr>
<tr><td align="center"><kbd>$v</kbd></td>
<td>g<EFBFBD>o<EFBFBD>no<EFBFBD><EFBFBD> w formacie <em>xxx.xx%</em></td></tr>
<tr><td align="center"><kbd>$V</kbd></td>
<td>g<EFBFBD>o<EFBFBD>no<EFBFBD><EFBFBD> w formacie <em>xxx.x</em></td></tr>
<tr><td align="center"><kbd>$b</kbd></td>
<td>balans w formacie <em>xxx.xx%</em></td></tr>
<tr><td align="center"><kbd>$B</kbd></td>
<td>balans w formacie <em>xxx.x</em></td></tr>
<tr><td align="center"><kbd>$$</kbd></td>
<td>znak <kbd>$</kbd></td></tr>
<tr><td align="center"><kbd>$a</kbd></td>
<td>znak okre<72>laj<61>cy typ d<>wi<77>ku (<28>aden: <code>n</code>,
mono: <code>m</code>, stereo: <code>t</code>)</td></tr>
<tr><td align="center"><kbd>$t</kbd></td>
<td>Numer <20>cie<69>ki (w playli<6C>cie)</td></tr>
<tr><td align="center"><kbd>$o</kbd></td>
<td>>nazwa pliku</td></tr>
<tr><td align="center"><kbd>$f</kbd></td>
<td>nazwa pliku ma<6D>ymi literami</td></tr>
<tr><td align="center"><kbd>$F</kbd></td>
<td>nazwa pliku du<64>ymi literami</td></tr>
<tr><td align="center"><kbd>$T</kbd></td>
<td>znak okre<72>laj<61>cy typ strumienia (plik: <code>f</code>,
Video CD: <code>v</code>, DVD: <code>d</code>, URL: <code>u</code>)
</td></tr>
<tr><td align="center"><kbd>$p</kbd></td>
<td>znak "p" (je<6A>eli film jest odgrywany i font ma okre<72>lony symbol "p")</td></tr>
<tr><td align="center"><kbd>$s</kbd></td>
<td>znak "s" (je<6A>eli film jest zatrzymany i font ma okre<72>lony symbol "s")</td></tr>
<tr><td align="center"><kbd>$e</kbd></td>
<td>znak "e" (je<6A>eli w<><77>czona jest pauza i font ma okre<72>lony symbol "e")</td></tr>
<tr><td align="center"><kbd>$x</kbd></td>
<td>szeroko<EFBFBD><EFBFBD> filmu</td></tr>
<tr><td align="center"><kbd>$y</kbd></td>
<td>wysoko<EFBFBD><EFBFBD> filmu</td></tr>
<tr><td align="center"><kbd>$C</kbd></td>
<td>nazwa u<>ytego kodeka</td></tr>
</table>
<em class="note"><b>Informacja:</b> Zmienne <kbd>$a</kbd>, <kbd>$T</kbd>,
<kbd>$p</kbd>, <kbd>$s</kbd> i <kbd>$e</kbd> maj<61> znaki kt<6B>re powinny by<62>
wy<77>wietlane jako znaki specjalne (np. "e" jest symbolem pauzy wygl<67>daj<61>cym
zazwyczaj tak <code>||</code>). Powiniene<6E> mie<69> fonty dla normalnych znak<61>w
i osobne dla znak<61>w specjalnych. Zobacz sekcj<63> <a href="#symbols">symbole</a>,
aby dowiedzie<69> si<73> wi<77>cej.</em>
</dd>
</dl>
<h3><a name="subwindow">D.2.2 Okno ekranu</a></h3>
<p>Poni<EFBFBD>ej mo<6D>esz zobaczy<7A> list<73> element<6E>w, kt<6B>re mog<6F> by<62> u<>yte w bloku
'<code>window = sub</code>' .&nbsp;.&nbsp;. '<code>end</code>'.</p>
<dl>
<dt><a name="sub.base"><b><code>base = obrazek, X, Y, szeroko<6B><6F>, wysoko<6B><6F></code></b>
</a></dt>
<dd>Obrazek kt<6B>ry ma by<62> wy<77>wietlony w tym oknie. Okno pojawi si<73> w okre<72>lonej przez
ciebie pozycji <code>X</code>,<code>Y</code> na ekranie(<code>0,0</code>
umieszcza obrazek w lewym g<>rnym rogu). Mo<4D>esz tu u<>y<EFBFBD> tak<61>e nast<73>puj<75>cych
warto<74>ci: <code>-1</code> dla wy<77>rodkowania, <code>-2</code> dla wyr<79>wnania
do prawej (dla warto<74>ci <code>X</code>) i do do<64>u (dla warto<74>ci <code>Y</code>).
Okno to b<>dzie rozmiar<61>w obrazka. <code>szeroko<EFBFBD><EFBFBD></code> i <code>wysoko<EFBFBD><EFBFBD></code>
okre<72>la rozmiar okna. Te zmienne s<> opcjonalne (je<6A>eli ich nie b<>dzie, okno b<>dzie
takich samych rozmiar<61>w jak obrazek).</dd>
<dt><a name="sub.background"><b><code>background = R, G, B</code></b></a></dt>
<dd>Pozwala ci ustali<6C> kolor t<>a. Jest to przydatne je<6A>eli obrazek jest mniejszy
od okna. <code>R</code>, <code>G</code> i <code>B</code> okre<72>laj<61> czerwon<6F>, zielon<6F>
i niebiesk<73> warto<74><6F> koloru (ka<6B>da z nich jest okre<72>lona w przedziale od 0 do 255).</dd>
</dl>
<h3><a name="skinmenu">D.2.3 Menu Sk<53>ry</a></h3>
<p>Jak wspomnianow wcze<7A>niej, menu jest wy<77>witlane przy u<>yciu dw<64>ch obrazk<7A>w.
Normalny stan menu jest brany z obrazka okre<72>lonego jako <code>base</code>,
podczas gdy zaznaczony obszar jest brany z obrazka okre<72>lonego jako
<code>selected</code>. Musisz zdefiniowa<77> pozycj<63> i rozmiar ka<6B>dego z element<6E>w
menu poprzez element <code>menu</code>.</p>
<p>Te elementy mog<6F> zosta<74> wykorzystane w bloku '<code>window = menu</code>'
.&nbsp;.&nbsp;. '<code>end</code>'.</p>
<dl>
<dt><a name="menu.base"><b><code>base = obrazek</code></b></a></dt>
<dd>Obrazek pokazuj<75>cy normalny stan menu.</dd>
<dt><a name="menu.selected"><b><code>selected = obrazek</code></b></a></dt>
<dd>Obrazek pokazuj<75>cy zaznaczony stan menu.</dd>
<dt><a name="menu.menu"><b><code>menu = X, Y, szeroko<6B><6F>, wysoko<6B><6F>, sygna<6E></code>
</b></a></dt>
<dd>Definiuje pozycj<63> <code>X,Y</code> i rozmiar poszczeg<65>lnych element<6E>w menu
w obrazku. <code>sygna<EFBFBD></code> jest sygna<6E>em, kt<6B>ry ma by<62> uaktywniony, kiedy
klikniesz t<> pozycj<63>.</dd>
</dl>
<h2><a name="fonts">D.3 Fonty</a></h2>
<p>Tak jak wspomniano w sekcji o cz<63><7A>ciach sk<73>ry, fonty s<> zdefiniowane przez
obrazek i plik opisuj<75>cy fonty. Mo<4D>esz umie<69>ci<63> znaki w dowolnym
miejscu obrazka, ale upewnij si<73>, <20>e ich pozycja i rozmiar s<> dok<6F>adnie
okre<72>lone w pliku opisuj<75>cym fonty.</p>
<p>Plik opisuj<75>cy fonty (z rozszerzeniem <code>.fnt</code>) mo<6D>e mie<69> linie komentarza
rozpocz<63>te <20>rednikiem '<code>;</code>'. Plik musi mie<69> t<> linie w formacie:</p>
<dl>
<dt><a name="font.image"><b><code>image = obrazek</code></b></a></dt>
<dd>gdzie <code>obrazek</code> jest nazw<7A> pliku w kt<6B>rym znajduj<75> si<73> fonty (nie
musisz podawa<77> rozszerzenia).</dd>
<dt><a name="font.char"><b><code>"znak" = X, Y, szeroko<6B><6F>, wysoko<6B><6F></code></b>
</a></dt>
<dd>Tutaj <code>X</code> i <code>Y</code> okre<72>laj<61> pozycj<63> <code>znaku</code>
w obrazku (<code>0,0</code> to lewy g<>rny r<>g). <code>szeroko<EFBFBD><EFBFBD></code>
i <code>wysoko<EFBFBD><EFBFBD></code> wymiary znaku w pikselach.</dd>
</dl>
<p>Poni<EFBFBD>ej mo<6D>esz zobaczy<7A> przyk<79>ad definiuj<75>cy znaki A, B, C znajduj<75>ce
si<73> w pliku <code>font.png</code>:</p>
<table width="100%" border="1">
<tr bgcolor="silver">
<td>
<pre>
; mo<6D>e by<62> "font" zamiast "font.png".
image = font.png
; Trzy znaki s<> wystarczaj<61>ce, aby zademonstrowa<77> jak to dzia<69>a. :-)
"A" = 0,0, 7,13
"B" = 7,0, 7,13
"C" = 14,0, 7,13
</pre>
</td>
</tr>
</table>
<h3><a name="symbols">D.3.1 Symbole</a></h3>
<p>Niekt<EFBFBD>re znaki maj<61> specjalne znaczenia kiedy s<> zmiennymi u<>ywanymi w
<a href="#main.dlabel">dlabel</a>. Te znaki s<> wy<77>wietlane jako symbole co oznacza, <20>e
kiedy odgrywasz strumie<69> DVD, mo<6D>esz wy<77>wietli<6C> fajne logo DVD zdefiniowane
pod znakiem 'd'.</p>
<p>Poni<EFBFBD>sza tabelka zawiera wszystkie znaki, kt<6B>re mog<6F> by<62> wykorzystane
do wy<77>wietlania symboli (i wymagaj<61> one osobnych font<6E>w).</p>
<table align="center" border="1">
<tr><th align="center">Znak</th><th align="left">Symbol</th></tr>
<tr><td align="center"><kbd>p</kbd></td>
<td align=left>odtwarzanie</td></tr>
<tr><td align="center"><kbd>s</kbd></td>
<td align=left>stop</td></tr>
<tr><td align="center"><kbd>e</kbd></td>
<td align=left>pauza</td></tr>
<tr><td align="center"><kbd>n</kbd></td>
<td align=left>bez d<>wi<77>ku</td></tr>
<tr><td align="center"><kbd>m</kbd></td>
<td align=left>d<EFBFBD>wi<EFBFBD>k mono</td></tr>
<tr><td align="center"><kbd>t</kbd></td>
<td align=left>d<EFBFBD>wi<EFBFBD>k stereo</td></tr>
<tr><td align="center"><kbd>f</kbd></td>
<td align=left>strumie<EFBFBD> jest plikiem</td></tr>
<tr><td align="center"><kbd>v</kbd></td>
<td align=left>strumie<EFBFBD> to VideoCD</td></tr>
<tr><td align="center"><kbd>d</kbd></td>
<td align=left>strumie<EFBFBD> to DVD</td></tr>
<tr><td align="center"><kbd>u</kbd></td>
<td align="left">strumie<EFBFBD> to URL</td></tr>
</table>
<h2><a name="guimessages">D.4 Sygna<6E>y GUI</a></h2>
<p>Tutaj znajduj<75> si<73> sygna<6E>y kt<6B>re mog<6F> zosta<74> wywo<77>ane przez przyciski,
potencjometry i elementy menu.</p>
<p><em class="note"><b>Informacja:</b> Niekt<6B>re z sygna<6E><61>w mog<6F> dzia<69>a<EFBFBD> nieprawid<69>owo
(albo w og<6F>le nie dzia<69>a<EFBFBD>). Jak wiesz, GUI jest ci<63>gle w fazie rozwoju.</em></p>
<h3>Opcje odgrywania:</h3>
<blockquote>
<dl>
<dt><b>evNext</b></dt>
<dd>Przeskakuje do nast<73>pnej <20>cie<69>ki z playlisty.</dd>
<dt><b>evPause</b></dt>
<dd>Wstrzymuje odgrywanie.</dd>
<dt><b>evPauseSwitchToPlay</b></dt>
<dd>Prze<EFBFBD><EFBFBD>cza mi<6D>dzy sob<6F> u<>uwaj<61>c <code>evPlaySwitchToPause</code>.
Mo<4D>e to zosta<74> wykorzystane aby utworzy<7A> jeden przycisk spe<70>niaj<61>cy
r<>wnocze<7A>nie funkcje odgrywania i pauzy. Oba sygna<6E>y powinny by<62>
przydzielone do przycisk<73>w wy<77>wietlanych w tym samym miejscu w oknie.
Ten sygna<6E> wstrzymuje odtwarzanie i wy<77>wietlany jest obrazek dla
przycisku <code>evPlaySwitchToPause</code> (aby zaznaczy<7A>, <20>e ten przycisk
mo<6D>e by<62> wci<63>ni<6E>ty, aby kontynuowa<77> odgrywanie).</dd>
<dt><b>evPlay</b></dt>
<dd>Rozpoczyna odgrywanie.</dd>
<dt><b>evPlaySwitchToPause</b></dt>
<dd>Przeciwie<EFBFBD>stwo <code>evPauseSwitchToPlay</code>. Ten sygna<6E> rozpoczyna
odgrywanie i wy<77>wietlany jest obrazek dla przycisku <code>evPauseSwitchToPlay</code>
(aby zaznaczy<7A>, <20>e ten przycisk mo<6D>e by<62> wci<63>ni<6E>ty, aby wstrzyma<6D> odgrywanie).</dd>
<dt><b>evPrev</b></dt>
<dd>Przeskakuje do poprzedniej <20>cie<69>ki z playlisty.</dd>
<dt><b>evStop</b></dt>
<dd>Zatrzymuje odgrywanie.</dd>
</dl>
</blockquote>
<h3>Przeszukiwanie:</h3>
<blockquote>
<dl>
<dt><b>evBackward10sec</b></dt>
<dt><b>evBackward1min</b></dt>
<dt><b>evBackward10min</b></dt>
<dd>Przeskakuje w ty<74> o 10 sekund / 1 minut<75> / 10 minut.</dd>
<dt><b>evForward10sec</b></dt>
<dt><b>evForward1min</b></dt>
<dt><b>evForward10min</b></dt>
<dd>Przeskakuje w prz<72>d o 10 sekund / 1 minut<75> / 10 minut.</dd>
<dt><b>evSetMoviePosition</b></dt>
<dd>Ustawia pozycj<63> (mo<6D>e by<62> zmieniane za pomoc<6F> suwaka; wykorzystywane s<>
relatywne (0-100%) warto<74>ci potencjometru).</dd>
</dl>
</blockquote>
<h3>Kontrola obrazu:</h3>
<blockquote>
<dl>
<dt><b>evDoubleSize</b></dt>
<dd>Ustawia podw<64>jny rozmiar okna z filmem.</dd>
<dt><b>evFullScreen</b></dt>
<dd>W<EFBFBD><EFBFBD>cza/wy<77><79>cza tryb pe<70>noekranowy.</dd>
<dt><b>evNormalSize</b></dt>
<dd>Ustawia oryginalny rozmiar okna z filmem.</dd>
</dl>
</blockquote>
<h3>Kontrola D<>wi<77>ku:</h3>
<blockquote>
<dl>
<dt><b>evDecAudioBufDelay</b></dt>
<dd>Zmniejsza op<6F><70>nienie buffera d<>wi<77>ku.</dd>
<dt><b>evDecBalance</b></dt>
<dd>Zmniejsza balans.</dd>
<dt><b>evDecVolume</b></dt>
<dd>Zmniejsza g<>o<EFBFBD>no<6E><6F>.</dd>
<dt><b>evIncAudioBufDelay</b></dt>
<dd>Zmniejsza op<6F><70>nienie buffera d<>wi<77>ku.</dd>
<dt><b>evIncBalance</b></dt>
<dd>Zwi<EFBFBD>ksza balans.</dd>
<dt><b>evIncVolume</b></dt>
<dd>Zwi<EFBFBD>ksza g<>o<EFBFBD>no<6E><6F>.</dd>
<dt><b>evMute</b></dt>
<dd>Wycisz/w<><77>cz d<>wi<77>k.</dd>
<dt><b>evSetBalance</b></dt>
<dd>Ustawia balans (mo<6D>e by<62> u<>ywane przez suwak; wykorzystywane s<> relatywne
(0-100%) warto<74>ci potencjometru).</dd>
<dt><b>evSetVolume</b></dt>
<dd>Ustawia g<>o<EFBFBD>no<6E><6F> (mo<6D>e by<62> u<>ywane przez suwak; wykorzystywane s<> relatywne
(0-100%) warto<74>ci potencjometru).</dd>
</dl>
</blockquote>
<h3>R<EFBFBD><EFBFBD>ne:</h3>
<blockquote>
<dl>
<dt><b>evAbout</b></dt>
<dd>Otwiera okno "o programie".</dd>
<dt><b>evDropSubtitle</b></dt>
<dd>Wy<EFBFBD><EFBFBD>cza aktualnie u<>ywane napisy.</dd>
<dt><b>evEqualizer</b></dt>
<dd>W<EFBFBD><EFBFBD>cza/wy<77><79>cza equalizer.</dd>
<dt><b>evExit</b></dt>
<dd>Zamyka program.</dd>
<dt><b>evIconify</b></dt>
<dd>Minimalizuje okno.</dd>
<dt><b>evLoad</b></dt>
<dd>Wczytuje plik (poprzez otwarcie przegl<67>darki plik<69>w, w kt<6B>rej mo<6D>esz wybra<72>
plik).</dd>
<dt><b>evLoadPlay</b></dt>
<dd>Robi dok<6F>adnie to samo co <code>evLoad</code> z tym, <20>e po wczytaniu pliku
automatycznie rozpoczyna jego odtwarzanie.</dd>
<dt><b>evLoadSubtitle</b></dt>
<dd>Wczytuje plik napis<69>w (poprzez otwarcie przegl<67>darki plik<69>w)</dd>
<dt><b>evLoadAudioFile</b></dt>
<dd>Wczytuje plik z d<>wi<77>kiem (poprzez otwarcie przegl<67>darki plik<69>w)</dd>
<dt><b>evNone</b></dt>
<dd>Pusty sygna<6E>, nic nie robi. (No mo<6D>e nie dotyczy to wersji CVS :-)).</dd>
<dt><b>evPlayList</b></dt>
<dd>Otwiera/zamyka okno playlisty.</dd>
<dt><b>evPlayDVD</b></dt>
<dd>Pr<EFBFBD>buje otworzy<7A> dysk z podanej stacji DVD-ROM.</dd>
<dt><b>evPlayVCD</b></dt>
<dd>Pr<EFBFBD>buje otworzy<7A> dysk z podanej stacji CD-ROM.</dd>
<dt><b>evPreferences</b></dt>
<dd>Otwiera okno preferencji.</dd>
<dt><b>evSetAspect</b></dt>
<dd>Ustawia stosunek obrazu (aspekt).</dd>
<dt><b>evSetURL</b></dt>
<dd>Wy<EFBFBD>wietla okno dialogowe, gdzie podaje si<73> URL.</dd>
<dt><b>evSkinBrowser</b></dt>
<dd>Otwiera okno z przegl<67>dark<72> sk<73>rek.</dd>
</dl>
</blockquote>
</body>
</html>