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