1
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>B.2. Plik skin</title><link rel="stylesheet" href="default.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="MPlayer - Odtwarzacz filmów"><link rel="up" href="skin.html" title="Dodatek B. Format skórki MPlayera"><link rel="prev" href="skin-overview.html" title="B.1. Wstęp"><link rel="next" href="skin-fonts.html" title="B.3. Czcionki"><link rel="preface" href="howtoread.html" title="Jak czytać tę dokumentację"><link rel="chapter" href="intro.html" title="Rozdział 1. Wprowadzenie"><link rel="chapter" href="install.html" title="Rozdział 2. Instalacja"><link rel="chapter" href="usage.html" title="Rozdział 3. Sposób użycia"><link rel="chapter" href="cd-dvd.html" title="Rozdział 4. Używanie CD/DVD"><link rel="chapter" href="tv.html" title="Rozdział 5. TV"><link rel="chapter" href="radio.html" title="Rozdział 6. Radio"><link rel="chapter" href="video.html" title="Rozdział 7. Urządzenia wyjścia video"><link rel="chapter" href="ports.html" title="Rozdział 8. Porty"><link rel="chapter" href="mencoder.html" title="Rozdział 9. Podstawy używania MEncodera"><link rel="chapter" href="encoding-guide.html" title="Rozdział 10. Kodowanie przy użyciu MEncodera"><link rel="chapter" href="faq.html" title="Rozdział 11. FAQ - Często Zadawane Pytania"><link rel="appendix" href="bugreports.html" title="Dodatek A. Jak zgłaszać błędy"><link rel="appendix" href="skin.html" title="Dodatek B. Format skórki MPlayera"><link rel="subsection" href="skin-file.html#skin-file-main" title="B.2.1. Okno główne i panel odtwarzania"><link rel="subsection" href="skin-file.html#skin-file-subwindow" title="B.2.2. Okno ekranu"><link rel="subsection" href="skin-file.html#skin-file-menu" title="B.2.3. Menu skórki"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">B.2. Plik skin</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="skin-overview.html">Poprzedni</a> </td><th width="60%" align="center">Dodatek B. Format skórki <span class="application">MPlayera</span></th><td width="20%" align="right"> <a accesskey="n" href="skin-fonts.html">Następny</a></td></tr></table><hr></div><div class="sect1" title="B.2. Plik skin"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="skin-file"></a>B.2. Plik skin</h2></div></div></div><p>
2
Jak zostało powiedziane wcześniej, plik ten jest plikiem konfigurującym skórkę.
3
Obsługuje różne rodzaje wierszy; komentarze zaczynają wiersz znakiem
4
'<code class="literal">;</code>' (tylko spacje i znaki tabulacji są dopuszczone przed
5
'<code class="literal">;</code>').
7
Plik podzielony jest na sekcje. Każda sekcja opisuje skórkę dla każdej
8
aplikacji i ma następującą formę:
10
</p><pre class="programlisting">
11
section = <em class="replaceable"><code>nazwa sekcji</code></em>
18
Obecnie jest tylko jedna aplikacja, a więc potrzebujesz tylko jedną sekcję
19
'section' - jej nazwa to <span class="bold"><strong>movieplayer</strong></span>.
21
Wewnątrz tej sekcji każde z okien jest opisane przez blok następującej postaci:
22
</p><pre class="programlisting">
23
window = <em class="replaceable"><code>nazwa okna</code></em>
30
gdzie <em class="replaceable"><code>nazwa okna</code></em> może być jednym z poniższych łańcuchów:
31
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="bold"><strong>main</strong></span> - dla okna głównego</p></li><li class="listitem"><p><span class="bold"><strong>sub</strong></span> - dla okna ekranu</p></li><li class="listitem"><p><span class="bold"><strong>menu</strong></span> - dla menu skórki</p></li><li class="listitem"><p><span class="bold"><strong>playbar</strong></span> - dla panelu odtwarzania</p></li></ul></div><p>
33
(Bloki sub i menu są opcjonalne - nie musisz tworzyć menu czy elementów skórki
36
Wewnątrz bloku 'window' możesz definiować każdy element okna, wpisując linijkę
37
tej postaci: </p><pre class="programlisting">item = parametr</pre><p>
38
Gdzie <code class="literal">item</code> jest łańcuchem, kóry identyfikuje typ elementu
39
GUI, <code class="literal">parametr</code> jest wartością numeryczną lub tekstową (lub
40
listą takich wartości oddzielonych od siebie znakiem przecinka).
42
Złożenie powyższych elementów razem tworzy plik, który wygląda mniej więcej tak:
43
</p><pre class="programlisting">
46
; ... elementy okna głównego ...
50
; ... elementy okna ekranu ...
54
; ... elementy menu skórki ...
58
; ... elementy panelu odtwarzania ...
63
Nazwa pliku graficznego musi zostać podana bez żadnych nazw katalogów - obrazki
64
są szukane w katalogu <tt class="filename">skins</tt>.
65
Możesz (ale nie musisz) określić rozszerzenia tego pliku. Jeśli plik taki nie
66
istnieje, <span class="application">MPlayer</span>
67
spróbuje wczytać plik <tt class="filename"><nazwa pliku>.<rozszerzenie></tt>,
68
gdzie <code class="literal">png</code> oraz <code class="literal">PNG</code> są brane jako
69
<tt class="filename"><rozszerzenie></tt> (w tej właśnie kolejności). Pierwszy
70
pasujący plik będzie użyty.
72
Na koniec kilka słów na temat pozycjonowania. Okno główne oraz okno ekranu możesz
73
umieścić w różnych narożnikach ekranu poprzez ustawienie współrzędnych
74
<code class="literal">X</code> i <code class="literal">Y</code>. <code class="literal">0</code> to góra lub
75
lewa strona, <code class="literal">-1</code> to środek, <code class="literal">-2</code> to strona
76
prawa, lub dół, tak jak przedstawiono na poniższej ilustracji:
77
</p><div class="informalfigure"><pre class="screen">
78
(0, 0)----(-1, 0)----(-2, 0)
81
(0,-1)----(-1,-1)----(-2,-1)
84
(0,-2)----(-1,-2)----(-2,-2)
86
Oto przykład wyjaśniający to lepiej. Przypuśćmy, że masz obrazek nazwany
87
<tt class="filename">main.png</tt>, który został użyty dla okna głównego:
88
</p><pre class="programlisting">base = main, -1, -1</pre><p>
89
<span class="application">MPlayer</span> spróbuje wczytać pliki
90
<tt class="filename">main</tt>, <tt class="filename">main.png</tt>,
91
<tt class="filename">main.PNG</tt>.
92
</p><div class="sect2" title="B.2.1. Okno główne i panel odtwarzania"><div class="titlepage"><div><div><h3 class="title"><a name="skin-file-main"></a>B.2.1. Okno główne i panel odtwarzania</h3></div></div></div><p>
93
Poniżej znajduje się lista wpisów, które mogą być użyte w blokach
94
'<code class="literal">window = main</code>'...'<code class="literal">end</code>'
95
oraz '<code class="literal">window = playbar</code>' ... '<code class="literal">end</code>'.
96
</p><div class="variablelist"><dl><dt><span class="term"><code class="literal">
97
<a name="skin-main-base"></a>base = obrazek, X, Y
98
</code></span></dt><dd><p>
99
Możesz określić obrazek tła, który będzie używany w oknie głównym.
100
Okno będzie widoczne na ekranie na współrzędnych <code class="literal">X, Y</code>. Okno
101
będzie wielkości tego obrazka.
102
</p><div class="note" title="Informacja" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Informacja</h3><p>Współrzędne te nie działają na razie dla okna ekranu.</p></div><div class="warning" title="Ostrzeżenie" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Ostrzeżenie</h3><p>Obszary przezroczystości obrazka (kolor #FF00FF) będą
103
widoczne jako czarne pod X serwerami niemającymi rozszerzenia
104
XShape. Szerokość obrazka musi być podzielna przez 8.</p></div></dd><dt><span class="term"><code class="literal">
105
<a name="skin-button"></a>button = obrazek, X, Y, szerokość, wysokość, sygnał
106
</code></span></dt><dd><p>
107
Umieści przycisk o rozmiarze <code class="literal">szerokość</code> *
108
<code class="literal">wysokość</code> na pozycji <code class="literal">X</code>,
109
<code class="literal">Y</code>. Określony <code class="literal">sygnał</code> jest generowany
110
podczas kliknięcia na przycisk. Obrazek ten opisany przez
111
<code class="literal">obrazek</code> musi składać się z trzech części jedna pod drugą
112
(stosownie do możliwych stanów przycisku), w ten oto sposób:
113
</p><div class="informalfigure"><pre class="screen">
121
</pre></div></dd><dt><span class="term"><code class="literal">
122
<a name="skin-decoration"></a>decoration = enable|disable (włączona|wyłączona)
123
</code></span></dt><dd><p>
124
Włącza lub wyłącza dekorację menedżera okna w oknie głównym.
125
Domyślnie jest <span class="bold"><strong>wyłączona</strong></span>.
126
</p><div class="note" title="Informacja" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Informacja</h3><p>Nie działa to w oknie ekranu, gdyż nie ma takiej potrzeby.</p></div></dd><dt><span class="term"><code class="literal">
127
<a name="skin-hpotmeter"></a>hpotmeter = przycisk, szer_przycisku, wys_przycisku, faza, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał
128
</code></span></dt><dd><p>
130
</p></dd><dt><span class="term"><code class="literal">
131
<a name="skin-vpotmeter"></a>vpotmeter = przycisk, szer_przycisku, wys_przycisku, fazy, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał
132
</code></span></dt><dd><p>
133
Umieszcza poziomo (hpotmeter) lub pionowo (vpotmeter) suwak o rozmiarze
134
<code class="literal">szerokość</code> * <code class="literal">wysokość</code> i pozycji
135
<code class="literal">X,Y</code>. Obrazek może być podzielony na różne części dla różnych
136
faz suwaka (np. możesz mieć suwak głośności, który w zależności od położenia
137
zmienia kolor z zielonego (minimum) na czerwony (maksimum)).
138
<code class="literal">hpotmeter</code> może być przyciskiem umieszczonym poziomo.
140
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">przycisk</code> - obrazek użyty do przycisku
141
(musi posiadać trzy części jedna pod drugą tak, jak w przypadku
142
<a class="link" href="skin-file.html#skin-button">przycisku</a>)
143
</p></li><li class="listitem"><p><code class="literal">szer_przycisku</code>,<code class="literal">wys_przycisku</code> - wielkość przycisku
144
</p></li><li class="listitem"><p><code class="literal">fazy</code> - obrazek używany do określenie faz
145
dla hpotmeter. Wartość specjalna <code class="literal">NULL</code> może być użyta,
146
jeśli nie chcesz żadnego obrazka. Obrazek musi być podzielony w pionie
147
na fragmenty <code class="literal">poszczególnych faz</code> tak, jak poniżej:
148
</p><div class="informalfigure"><pre class="screen">
158
</pre></div></li><li class="listitem"><p><code class="literal">liczba_faz</code> - liczba faz znajdująca się na obrazku z <code class="literal">fazami</code>
159
</p></li><li class="listitem"><p><code class="literal">domyślny</code> - domyślne ustawienie dla hpotmeter
160
(zakres od <code class="literal">0</code> do <code class="literal">100</code>)
161
</p></li><li class="listitem"><p><code class="literal">X</code>,<code class="literal">Y</code> - pozycja dla hpotmeter
162
</p></li><li class="listitem"><p><code class="literal">szerokość</code>,<code class="literal">wysokość</code> - szerokość i wysokość dla
163
<code class="literal">hpotmeter</code>
164
</p></li><li class="listitem"><p><code class="literal">sygnał</code> - sygnał generowany podczas zmiany wartości <code class="literal">hpotmeter</code>
165
</p></li></ul></div></dd><dt><span class="term"><code class="literal">
166
<a name="skin-potmeter"></a>potmeter = fazy, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał
167
</code></span></dt><dd><p>
168
<code class="literal">hpotmeter</code> bez przycisku. (domyślam się, że chodzi o to, aby
169
nim kręcić, ale reaguje on tylko na poziome przesuwanie). Opis parametrów znajdziesz w części o
170
<a class="link" href="skin-file.html#skin-hpotmeter">hpotmeter</a>.
171
Parametr <code class="literal">fazy</code> może mieć wartość <code class="literal">NULL</code>, ale
172
jest to zupełnie bezużyteczne, gdyż nie widać wtedy położenia potencjometru.
173
</p></dd><dt><span class="term"><code class="literal">
174
<a name="skin-font"></a>font = plik_czcionek, id_czcionki
175
</code></span></dt><dd><p>
176
Definiuje czcionkę. <code class="literal">plik_czcionek</code> jest nazwą pliku opisu
177
czcionki z rozszerzeniem <tt class="filename">.fnt</tt> (nie podawaj rozszerzenia w
178
tym miejscu). <code class="literal">id_czcionki</code> jest używany do wskazywania
179
konkretnej czcionki (zobacz <a class="link" href="skin-file.html#skin-dlabel">dlabel</a>
180
oraz <a class="link" href="skin-file.html#skin-slabel">slabel</a>). Można zdefiniować do 25
182
</p></dd><dt><span class="term"><code class="literal">
183
<a name="skin-slabel"></a>slabel = X, Y, id_czcionki, "tekst"
184
</code></span></dt><dd><p>
185
Umieszcza statyczną etykietę w pozycji <code class="literal">X,Y</code>.
186
<code class="literal">tekst</code> jest wyświetlany za pomocą czcionki wskazywanych przez
187
<code class="literal">id_czcionki</code>. Tekst jest po prostu zwykłym łańcuchem znaków
188
(zmienne <code class="literal">$x</code> nie działają), któru musi być umieszczony
189
pomiędzy podwójnym cudzysłowem (znak " nie może być częścią tekstu).
190
Etykieta wyświetlana jest za pomocą czcionki, na którą wskazuje
191
<code class="literal">id_czcionki</code>.
192
</p></dd><dt><span class="term"><code class="literal">
193
<a name="skin-dlabel"></a>dlabel = X, Y, długość, wyrównanie, id_czcionki, "tekst"
194
</code></span></dt><dd><p>
195
Umieszcza dynamiczną etykietę w pozycji <code class="literal">X,Y</code>. Etykieta jest
196
nazywana dynamiczną, ponieważ jej tekst jest cyklicznie odświeżany. Maksymalną
197
długość etykiety określa parametr <code class="literal">długość</code> (jej wysokość
198
określa wysokość czcionki). Jeśli tekst jest szerszy niż zdefiniowana długość,
199
będzie on przewijany, w przeciwnym wypadku będzie wyrównany w miejscu określonym
200
przez wartość parametru <code class="literal">wyrównanie</code>: <code class="literal">0</code>
201
oznacza do prawej, <code class="literal">1</code> to wyśrodkowanie, <code class="literal">2</code>
202
to wyrównanie do lewej.
204
Wyświetlany tekst jest określony przez zmienną <code class="literal">tekst</code>: musi
205
być zawarty pomiędzy podwójnymi cudzysłowami (znak " nie może być częścią
206
tekstu). Etykieta wyświetlana jest za pomocą czcionki, na którą wskazuje
207
parametr <code class="literal">id_czcionki</code>. Możesz użyć następujących zmiennych w
209
</p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Zmienna</th><th>Znaczenie</th></tr></thead><tbody><tr><td>$1</td><td>czas odtwarzania w formacie <span class="emphasis"><em>hh:mm:ss</em></span></td></tr><tr><td>$2</td><td>czas odtwarzania w formacie <span class="emphasis"><em>mmmm:ss</em></span></td></tr><tr><td>$3</td><td>czas odtwarzania w formacie (godziny) <span class="emphasis"><em>hh</em></span></td></tr><tr><td>$4</td><td>czas odtwarzania w formacie (minuty) <span class="emphasis"><em>mm</em></span></td></tr><tr><td>$5</td><td>czas odtwarzania w formacie (sekundy) <span class="emphasis"><em>ss</em></span></td></tr><tr><td>$6</td><td>długość filmu w formacie <span class="emphasis"><em>hh:mm:ss</em></span></td></tr><tr><td>$7</td><td>długość filmu w formacie <span class="emphasis"><em>mmmm:ss</em></span></td></tr><tr><td>$8</td><td>długość filmu w formacie<span class="emphasis"><em>h:mm:ss</em></span></td></tr><tr><td>$v</td><td>format głośności w %<span class="emphasis"><em>xxx.xx</em></span></td></tr><tr><td>$V</td><td>format głośności <span class="emphasis"><em>xxx.xx</em></span> format</td></tr><tr><td>$b</td><td>format balansu w %<span class="emphasis"><em>xxx.xx</em></span></td></tr><tr><td>$B</td><td>format balansu <span class="emphasis"><em>xxx.xx</em></span></td></tr><tr><td>$$</td><td>znak $</td></tr><tr><td>$a</td><td>oznaczenie zgodne z rodzajem typu pliku audio (nic: <code class="literal">n</code>,
210
mono: <code class="literal">m</code>, stereo: <code class="literal">t</code>)</td></tr><tr><td>$t</td><td>numer ścieżki (na liście odtwarzania)</td></tr><tr><td>$o</td><td>nazwa pliku</td></tr><tr><td>$f</td><td>nazwa pliku pisana małymi literami</td></tr><tr><td>$F</td><td>nazwa pliku pisana wielkimi literami</td></tr><tr><td>$T</td><td>oznaczenie zgodne z rodzajem strumienia (plik: <code class="literal">f</code>,
211
Video CD: <code class="literal">v</code>, DVD: <code class="literal">d</code>, URL: <code class="literal">u</code>)</td></tr><tr><td>$p</td><td>znak <span class="keycap"><b>p</b></span> (gdy film jest odtwarzany i czcionka ma znak <span class="keycap"><b>p</b></span>)</td></tr><tr><td>$s</td><td>znak <span class="keycap"><b>s</b></span> (gdy film jest zatrzymany i czcionka ma znak <span class="keycap"><b>s</b></span>)</td></tr><tr><td>$e</td><td>znak <span class="keycap"><b>e</b></span> (gdy film jest wstrzymany (pauza) i czcionka ma znak <span class="keycap"><b>e</b></span>)
212
</td></tr><tr><td>$x</td><td>rozdzielczość filmu (szerokość)</td></tr><tr><td>$y</td><td>rozdzielczość filmu (wysokość)</td></tr><tr><td>$C</td><td>nazwa używanego kodeka</td></tr></tbody></table></div></dd></dl></div><div class="note" title="Informacja" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Informacja</h3><p>
213
Zmienne <code class="literal">$a, $T, $p, $s</code> oraz <code class="literal">$e</code>
214
zwracają znaki, które powinny być wyświetlane jako znaki specjalne (na przykład
215
<span class="keycap"><b>e</b></span> jest symbolem pauzy, która z reguły wygląda mniej więcej tak
216
||). Powinieneś mieć czcionkę dla zwykłych znaków oraz osobną czcionkę dla symboli.
217
Zobacz sekcję na temat <a class="link" href="skin-fonts.html#skin-fonts-symbols" title="B.3.1. Znaki specjalne (symbole)">symboli</a>,
218
by dowiedzieć się więcej.
219
</p></div></div><div class="sect2" title="B.2.2. Okno ekranu"><div class="titlepage"><div><div><h3 class="title"><a name="skin-file-subwindow"></a>B.2.2. Okno ekranu</h3></div></div></div><p>
220
Poniższe wpisy mogą być użyte w bloku
221
'<code class="literal">window = sub</code>' . . . '<code class="literal">end</code>' .
222
</p><div class="variablelist"><dl><dt><span class="term"><code class="literal">
223
<a name="skin-sub-base"></a>base = obrazek, X, Y, szerokość, wysokość
224
</code></span></dt><dd><p>
225
Wyświetla obrazek w oknie. Okno będzie widoczne na ekranie w miejscu oznaczonym
226
przez współrzędne <code class="literal">X</code>, <code class="literal">Y</code>
227
(<code class="literal">0,0</code> to lewy górny narożnik). Możesz użyć
228
<code class="literal">-1</code> dla środka, <code class="literal">-2</code> dla prawej strony
229
(<code class="literal">X</code>) i dołu (<code class="literal">Y</code>). Okno będzie mieć wielkość
230
obrazka. <code class="literal">szerokość</code> oraz <code class="literal">wysokość</code> oznaczają
231
wielkość okna; są one opcjonalne (jeśli nie są określone, okno będzie wielkości
232
takiej, jak obrazek).</p></dd><dt><span class="term"><code class="literal">
233
<a name="skin-background"></a>background = R, G, B
234
</code></span></dt><dd><p>
235
Pozwala ustawić kolor tła. Jest to użyteczne jeśli obrazek jest mniejszy niż
236
okno. <code class="literal">R</code>, <code class="literal">G</code> oraz <code class="literal">B</code>
237
określają składniki kolorów czerwonego, zielonego i niebieskiego (każdy z nich
238
jest reprezentowany przez liczbę dziesiętną w zakresie od 0 do
239
255).</p></dd></dl></div></div><div class="sect2" title="B.2.3. Menu skórki"><div class="titlepage"><div><div><h3 class="title"><a name="skin-file-menu"></a>B.2.3. Menu skórki</h3></div></div></div><p>
240
Jak wspomniano wcześniej, menu jest wyświetlane przy użyciu dwóch obrazków.
241
Zwykłe obszary menu są pobierane z obrazka określonego przez element
242
<code class="literal">base</code>, podczas gdy obszary zaznaczone są pobierane z obrazka
243
wskazywanego przez element <code class="literal">selected</code>. Musisz zdefiniować
244
pozycję i rozmiar każdego obszaru menu poprzez element menu.
246
Poniższe wpisy mogą być użyte w bloku:
247
'<code class="literal">window = menu</code>'. . .'<code class="literal">end</code>' .
248
</p><div class="variablelist"><dl><dt><span class="term"><code class="literal">
249
<a name="skin-menu-base"></a>base = obrazek
250
</code></span></dt><dd><p>
251
Obrazek dla zwykłych obszarów menu.
252
</p></dd><dt><span class="term"><code class="literal">
253
<a name="skin-selected"></a>selected = obrazek
254
</code></span></dt><dd><p>
255
Obrazek pokazujący w menu wszystkie zaznaczone obszary.
256
</p></dd><dt><span class="term"><code class="literal">
257
<a name="skin-menu"></a>menu = X, Y, szerokość, wysokość, sygnał
258
</code></span></dt><dd><p>
259
Definiuje pozycję i rozmiar obszarów menu na obrazku przy pomocy
260
<code class="literal">X,Y</code>. <code class="literal">sygnał</code> to zdarzenie wygenerowane
261
podczas zwolnienia przycisku myszy nad obszarem.
262
</p></dd></dl></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="skin-overview.html">Poprzedni</a> </td><td width="20%" align="center"><a accesskey="u" href="skin.html">Początek rozdziału</a></td><td width="40%" align="right"> <a accesskey="n" href="skin-fonts.html">Następny</a></td></tr><tr><td width="40%" align="left" valign="top">B.1. Wstęp </td><td width="20%" align="center"><a accesskey="h" href="index.html">Spis treści</a></td><td width="40%" align="right" valign="top"> B.3. Czcionki</td></tr></table></div></body></html>