Update to MPlayer SVN rev 34578.
[vaapi:mplayer.git] / DOCS / xml / ru / skin.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <!-- synced with r21612 -->
3 <appendix id="skin">
4 <title>Формат скинов <application>MPlayer</application></title>
5
6 <sect1 id="skin-overview">
7 <title>Обзор</title>
8
9 <para>
10 На самом деле с форматом скинов уже нет необходимости что-либо делать, но вам
11 следует знать, что <application>MPlayer</application>
12 <emphasis role="bold">не имеет</emphasis> встроенного скина, так что
13 <emphasis role="bold">как минимум один скин должен быть установлен, для
14 возможности использовать GUI.</emphasis>
15 </para>
16
17 <!-- ********** -->
18
19 <sect2 id="skin-overview-directories">
20 <title>Каталоги</title>
21 <para>
22 Скины ищутся в следующих каталогах (по порядку):
23 <orderedlist>
24 <listitem><para>
25   <filename class="directory">$(DATADIR)/skins/</filename>
26 </para></listitem>
27 <listitem><para>
28   <filename class="directory">$(PREFIX)/share/mplayer/skins/</filename>
29 </para></listitem>
30 <listitem><para>
31   <filename class="directory">~/.mplayer/skins/</filename>
32 </para></listitem>
33 </orderedlist>
34 </para>
35
36 <para>
37 Имейте в виду, что первый путь может меняться в соответствии с конфигурацией
38 <application>MPlayer</application> (смотрите аргументы скрипта
39 <command>configure</command> <option>--prefix</option> и <option>--datadir</option>).
40 </para>
41
42 <para>
43 Каждый скин устанавливается в его собственный подкаталог, в одном из указанных выше
44 каталогов, например:
45 <screen>$(PREFIX)/share/mplayer/skins/default/</screen>
46 </para>
47 </sect2>
48
49 <!-- ********** -->
50
51 <sect2 id="skin-overview-formats">
52 <title>Форматы изображений</title>
53 <para>Изображениями должны быть truecolor (24 или 32 бит/пиксел) PNG.</para>
54 <para>
55 В главном окне и полосе воспроизведения (смотрите ниже) можно использовать
56 изображения с 'прозрачностью': Области, заполненные цветом #FF00FF (magenta) полностью
57 прозрачны при просмотре программой <application>MPlayer</application>. Это значит, что
58 если ваш X сервер поддерживает расширение XShape, вы сможете получить даже
59 окна произвольной формы.
60 </para>
61 </sect2>
62
63 <sect2 id="skin-overview-components">
64 <title>Компоненты скина</title>
65 <para>
66 Скины имеют достаточно свободный формат (в отличие,например, от скинов
67 <application>Winamp</application>/<application>XMMS</application>,
68 имеющих формат фиксированный), так что зависит исключительно от вас, выйдет ли
69 у вас что-то грандиозное.
70 </para>
71
72 <para>
73 В данный момент могут быть оформлены четыре окна:
74 <link linkend="skin-file-main">главное окно</link>,
75 <link linkend="skin-file-subwindow">вспомогательное окно</link>,
76 <link linkend="skin-file-main">полоса воспроизведения</link>, and the
77 <link linkend="skin-file-menu">меню со скинами</link> (активирующееся правым щелчком
78 мыши).
79
80 <itemizedlist>
81 <listitem>
82   <para>
83   <emphasis role="bold">Главное окно</emphasis> и/или
84   <emphasis role="bold">полоса воспроизведения</emphasis> - те, через которые вы
85   управляете <application>MPlayer</application>. Фон окна - это изображение.
86   Различные элементы могут (и должны) размещаться в окне:
87   <emphasis>кнопки</emphasis>,   <emphasis>ползунки</emphasis> и
88   <emphasis>надписи</emphasis>.
89   Для каждого элемента должен быть задан размер и положение.
90   </para>
91
92   <para>
93   <emphasis role="bold">Кнопка</emphasis> имеет три состояния (нажата, отпущена,
94   отключена), таким образом, ее изображение должно быть разделено вертикально на три части.
95   Смотрите элемент <link linkend="skin-button">кнопка</link> для подробностей.
96   </para>
97
98   <para>
99   <emphasis role="bold">Ползунок</emphasis> (в основном используется для полосы перемещения
100   и управления громкостью/балансом) может иметь любое количество положений, задаваемых делением
101   его изображения на различные части одна под другой. Смотрите
102   <link linkend="skin-hpotmeter">hpotmeter</link> и
103   <link linkend="skin-potmeter">potmeter</link> для подробностей.
104   </para>
105
106   <para>
107   <emphasis role="bold">Надписи</emphasis> чуть особеннее: Символы, необходимые для их
108   отрисовки, берутся из графического файла, и задаются
109   <link linkend="skin-fonts">файлом описания шрифта</link>.
110   Последний - это текстовый файл, указывающий x,y положения и размер каждого символа
111   в файле с изображением (файл изображения и файл описания шрифта
112   <emphasis>вместе</emphasis> формируют шрифт). Смотрите
113   <link linkend="skin-dlabel">dlabel</link>
114   и <link linkend="skin-slabel">slabel</link> для подробностей.
115   </para>
116
117   <note><para>Все изображения могут быть полностью прозрачными, как описано в разделе,
118   посвященном <link linkend="skin-overview-formats">форматам изображений</link>. Если X
119   сервер не поддерживает расширение XShape, части, помеченные как прозрачные, будут черными.
120   Если вам нравится использовать эту возможность, ширина фона главного окна должна
121   делиться на 8.
122   </para></note>
123 </listitem>
124
125 <listitem><para>
126   <emphasis role="bold">Вспомогательное окно</emphasis>  - это то, где появляется фильм.
127   Оно может отображать указанную картинку, если  никакого фильма не загружено (пустое окно
128   немного надоедает :-)) <emphasis role="bold">Замечание:</emphasis> прозрачность здесь
129   <emphasis role="bold">не допускается</emphasis>.
130 </para></listitem>
131
132 <listitem>
133   <para>
134   <emphasis role="bold">Меню со скинами</emphasis> - всего лишь способ управлять
135   <application>MPlayer</application> в понятиях элементов меню. Для меню требуются
136   два изображения: одно из них - основное, показывает меню в обычном режиме,
137   другое используется для отображения выбранных элементов. Когда появляется меню,
138   отображается первое. Если вы перемещаете мышь над элементами меню,
139   выбранный элемент копируется из второго изображения поверх элемента меню под указателем мыши
140   (второе изображение никогда не отображается целиком).
141   </para>
142   <para>
143   Элемент меню определяется его позицией и размером изображения (смотрите раздел,
144   посвященный <link linkend="skin-file-menu">меню со скинами</link> для подробностей).
145   </para>
146 </listitem>
147 </itemizedlist>
148 </para>
149
150 <para>
151 Важная вещь, не упомянутая выше: Чтобы работали кнопки, ползунки и элементы меню,
152 <application>MPlayer</application> должен знать, что делать, если на них
153 щелкнули мышью. Это делается при помощи <link linkend="skin-gui">сообщений</link>
154 (событий). Для этих элементов вы должны определить сообщения, генерируемые, когда
155 на них щелкают мышью.
156 </para>
157 </sect2>
158
159 <!-- ********** -->
160
161 <sect2 id="skin-files">
162 <title>Файлы</title>
163 <para>
164 Вам нужны следующие файлы для создания скина:
165 <itemizedlist>
166 <listitem><para>
167   Файл конфигурации, называющийся <link linkend="skin-file">skin</link> говорит
168   <application>MPlayer</application> как совместить разные части скина воедино,
169   и что делать, если производится щелчок где-нибудь в окне.
170 </para></listitem>
171 <listitem><para>
172   Фоновое изображение главного окна.
173 </para></listitem>
174 <listitem><para>
175   Изображения элементов главного окна (включая один или более файлов описания шрифтов,
176   необходимых для отрисовки надписей.
177 </para></listitem>
178 <listitem><para>
179   Изображение, показываемое во вспомогательном окне (необязательно).
180 </para></listitem>
181 <listitem><para>
182   Два изображения для меню со скинами (нужны, только если вы хотите создавать меню).
183 </para></listitem>
184 </itemizedlist>
185   Все файлы, за исключением skin, могут быть названы так, как вам захочется
186   (но заметьте, что файлы описания шрифтов должны иметь расширение
187   a <filename>.fnt</filename>).
188 </para>
189 </sect2>
190 </sect1>
191
192
193 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
194
195
196 <sect1 id="skin-file">
197 <title>Файл skin</title>
198 <para>
199 Как описано выше, это файл конфигурации скина. он строчно-орентирован:
200 строки комментариев начинаются с символа '<literal>;</literal>' в начале
201 строки (только пробелы и табуляция допускается перед символом '<literal>;</literal>').
202 </para>
203
204 <para>
205 Файл создается из разделов. Каждый описывает скин для приложения и
206 имеет следующую форму:
207 <programlisting>
208 section = <replaceable>название раздела</replaceable>
209 .
210 .
211 .
212 end
213 </programlisting>
214 </para>
215
216 <para>
217 В данный момент приложение одно, так что вам потребуется только один раздел: его название
218 <emphasis role="bold">movieplayer</emphasis>.
219 </para>
220
221 <para>
222 В пределах раздела каждое окно описывается блоком следующей структуры:
223 <programlisting>
224 window = <replaceable>название окна</replaceable>
225 .
226 .
227 .
228 end
229 </programlisting>
230 </para>
231
232 <para>
233 где  <replaceable>название окна</replaceable> может быть одной из этих строк:
234 <itemizedlist>
235 <listitem><para>
236   <emphasis role="bold">main</emphasis> - главное окно
237 </para></listitem>
238 <listitem><para>
239   <emphasis role="bold">sub</emphasis> - вспомогательное окно
240 </para></listitem>
241 <listitem><para>
242   <emphasis role="bold">menu</emphasis> - меню со скинами
243 </para></listitem>
244 <listitem><para>
245   <emphasis role="bold">playbar</emphasis> - полоса воспроизведения
246 </para></listitem>
247 </itemizedlist>
248 </para>
249
250 <para>
251 (Блоки sub и menu опциональные - необязательно создавать меню или оформлять вспомогательное
252 окно.)
253 </para>
254
255 <para>
256 В пределах блока window вы можете описать каждый элемент окна строкой в следующем формате:
257 <programlisting>item = parameter</programlisting>
258 Где <literal>item</literal> - это строка, определяющая тип элемента GUI,
259 <literal>parameter</literal> - числовое или текстовое значение (или список значений, разделенных
260 запятой).
261 </para>
262
263 <para>
264 Если собрать все вместе, файл целиком будет выглядеть примерно так:
265 <programlisting>
266 section = movieplayer
267   window = main
268   ; ... items for main window ...
269   end
270
271   window = sub
272   ; ... items for subwindow ...
273   end
274
275   window = menu
276   ; ... items for menu ...
277   end
278
279   window = playbar
280   ; ... items for playbar ...
281   end
282 end
283 </programlisting>
284 </para>
285
286 <para>
287 Название файла с изображением  должно указываться без лидирующих каталогов -
288 изображения ищутся в каталоге <filename class="directory">skins</filename>.
289 Вы можете (но не обязаны) указать расширение файла. Если файл не существует,
290 <application>MPlayer</application> пытается загрузить файл
291 <filename>&lt;filename&gt;.&lt;ext&gt;</filename>, где <literal>png</literal>
292 и <literal>PNG</literal> пробуются вместо <filename>&lt;ext&gt;</filename>
293 (в этом порядке). Будет использоваться первый найденный файл.
294 </para>
295
296 <para>
297 Вот пример, чтобы было понятнее. Предположим вы имеете изображение, называющееся
298 <filename>main.png</filename>, которое используете для главного окна:
299 <programlisting>base = main, -1, -1</programlisting>
300 <application>MPlayer</application> пытается загрузить файлы <filename>main</filename>,
301 <filename>main.png</filename>, <filename>main.PNG</filename>.
302 </para>
303
304 <para>
305 И наконец несколько слов о позиционировании. Главное и вспомогательное окна могут
306 быть размещены в разных углах экрана указанием <literal>X</literal> и
307 <literal>Y</literal> координат. <literal>0</literal> -  это верхний и левый край,
308 <literal>-1</literal> - центр и <literal>-2</literal> - правый или нижний, как
309 указано на иллюстрации:
310 <informalfigure>
311 <screen>
312 (0, 0)----(-1, 0)----(-2, 0)
313   |          |          |
314   |          |          |
315 (0,-1)----(-1,-1)----(-2,-1)
316   |          |          |
317   |          |          |
318 (0,-2)----(-1,-2)----(-2,-2)
319 </screen>
320 </informalfigure>
321 </para>
322
323 <!-- ********** -->
324
325 <sect2 id="skin-file-main">
326 <title>Главное окно и полоса воспроизведения</title>
327 <para>
328 Ниже  - список элементов, которые можно указывать в
329 '<literal>window = main</literal>' ... '<literal>end</literal>',
330 и '<literal>window = playbar</literal>' ... '<literal>end</literal>'
331 блоках.
332 </para>
333
334 <variablelist>
335 <varlistentry>
336   <term><literal>
337   <anchor id="skin-main-base"/>base = image, X, Y
338   </literal></term>
339   <listitem>
340   <para>
341   Позволяет вам указать фоновое изображение, используемое в главном окне.
342   Окно будет появляться в указанной <literal>X,Y</literal> позиции на экране и
343   иметь размер изображения.
344   </para>
345   <note><para>
346   Эти координаты пока не работают для окна отображения.
347   </para></note>
348   <warning><para>Прозрачные регионы в изображении (цвет #FF00FF) станут черными
349   на X сервере без расширения XShape. Ширина картинки должна делиться
350   на 8.</para></warning>
351   </listitem>
352 </varlistentry>
353
354 <varlistentry>
355   <term><literal>
356   <anchor id="skin-button"/>button = image, X, Y, width, height, message
357   </literal></term>
358   <listitem>
359   <para>
360   Размещает кнопку размера <literal>width</literal> * <literal>height</literal> на
361   позиции <literal>X,Y</literal>. Указанное сообщение <literal>message</literal>
362   генерируется при щелчке на кнопку. Изображение <literal>image</literal>,
363   должно иметь три части одна ниже другой (в соответствии с возможными состояниями
364   кнопки), как здесь:
365   </para>
366   <informalfigure>
367   <screen>
368 +------------+
369 |  нажата    |
370 +------------+
371 |  отпущена  |
372 +------------+
373 |  отключена |
374 +------------+<!--
375   --></screen>
376   </informalfigure>
377   </listitem>
378 </varlistentry>
379
380 <varlistentry>
381   <term><literal>
382   <anchor id="skin-decoration"/>decoration = enable|disable
383   </literal></term>
384   <listitem>
385   <para>
386   Включает или выключает декорации главного окна, осуществляемые window manager . По-умолчанию
387   <emphasis role="bold">disable</emphasis>.
388   </para>
389   <note><para>
390   Это не работает для окна отображения, в этом нет надобности.
391   </para></note>
392   </listitem>
393 </varlistentry>
394
395 <varlistentry>
396   <term><literal>
397   <anchor id="skin-hpotmeter"/>hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
398   </literal></term>
399   <listitem><para>
400   </para></listitem>
401 </varlistentry>
402
403 <varlistentry>
404   <term><literal>
405   <anchor id="skin-vpotmeter"/>vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
406   </literal></term>
407   <listitem><para>
408   Размещает горизонтальный (hpotmeter) или вертикальный (vpotmeter) ползунок размера
409   <literal>width</literal> * <literal>height</literal> на позиции
410   <literal>X,Y</literal>. Изображение может быть разделено на разные части для
411   указания различных положений ползунка (например, вы можете иметь регулятор для
412   управления громкостью звука, изменяющийся с красного на зеленый при изменении его
413   уровня с минимального на максимальный.). <literal>hpotmeter</literal> может иметь
414   кнопку, которую можно таскать горизонтально. Параметры:
415   <itemizedlist>
416   <listitem><para>
417     <literal>button</literal> - изображение, используемое для
418     кнопки (должно иметь три части одна под другой, как в случае
419     <link linkend="skin-button">кнопки</link>)
420   </para></listitem>
421   <listitem><para>
422     <literal>bwidth</literal>, <literal>bheight</literal> - размер кнопки
423   </para></listitem>
424   <listitem><para>
425     <literal>phases</literal> - изображение, используемое для
426     различных положений hpotmeter. Специальное значение <literal>NULL</literal>
427     может использоваться, если подобное изображение вам не нужно. Изображение
428     должно быть разделено вертикально на
429     <literal>numphases</literal> частей, как указано ниже:
430     <informalfigure><screen>
431 +--------------+
432 | положение #1 |
433 +--------------+
434 | положение #2 |
435 +--------------+
436      ...
437 +--------------+
438 | положение #n |
439 +--------------+<!--
440     --></screen></informalfigure>
441   </para></listitem>
442   <listitem><para>
443     <literal>numphases</literal> - количество положений в изображении
444     <literal>phases</literal>
445   </para></listitem>
446   <listitem><para>
447     <literal>default</literal> - положение hpotmeter по-умолчанию
448     (в диапазоне от <literal>0</literal> до <literal>100</literal>)
449   </para></listitem>
450   <listitem><para>
451     <literal>X</literal>, <literal>Y</literal> - позиция hpotmeter
452     </para></listitem>
453   <listitem><para>
454     <literal>width</literal>, <literal>height</literal> - ширина и высота
455     <literal>hpotmeter</literal>
456   </para></listitem>
457   <listitem><para>
458     <literal>message</literal> - сообщение, генерируемое  при изменении значения
459     <literal>hpotmeter</literal>
460   </para></listitem>
461   </itemizedlist>
462   </para></listitem>
463 </varlistentry>
464
465 <varlistentry>
466   <term><literal>
467   <anchor id="skin-potmeter"/>potmeter = phases, numphases, default, X, Y, width, height, message
468   </literal></term>
469   <listitem><para>
470   <literal>hpotmeter</literal> без кнопки.
471   (Я предполагаю, что это означает повернутый вокруг,
472   но он реагирует только на перетаскивание по горизонтали.) Для описания параметров смотрите
473   <link linkend="skin-hpotmeter">hpotmeter</link>.
474   <literal>phases</literal> может быть равен <literal>NULL</literal>, но это совершенно
475   бесполезно, поскольку вы не сможете определить в каком положении
476   находится <literal>potmeter</literal>.
477   </para></listitem>
478 </varlistentry>
479
480 <varlistentry>
481   <term><literal>
482   <anchor id="skin-font"/>font = fontfile, fontid
483   </literal></term>
484   <listitem><para>
485   Определяет шрифт. <literal>fontfile</literal> - это название файла описания шрифта
486   с расширением <filename>.fnt</filename> (не указывайте расширение здесь).
487   <literal>fontid</literal> используется для ссылки на шрифт
488   (смотрите <link linkend="skin-dlabel">dlabel</link> и
489   <link linkend="skin-slabel">slabel</link>). Может быть определено до 25 шрифтов.
490   </para></listitem>
491 </varlistentry>
492
493 <varlistentry>
494   <term><literal>
495   <anchor id="skin-slabel"/>slabel = X, Y, fontid, "text"
496   </literal></term>
497   <listitem><para>
498   Размещает  статическую метку на позиции <literal>X,Y</literal>. <literal>text</literal>
499   отображается, используя шрифт, определенный по <literal>fontid</literal>.
500   Текст - просто обычная строка (<literal>$x</literal> переменные не работают), которая должна
501   быть заключена в двойные кавычки (но символ " не может быть частью текста).
502   Метка отображается, используя шрифт определенный по <literal>fontid</literal>.
503   </para></listitem>
504 </varlistentry>
505
506 <varlistentry>
507   <term><literal>
508   <anchor id="skin-dlabel"/>dlabel = X, Y, width, align, fontid, "text"
509   </literal></term>
510   <listitem>
511   <para>
512   Размещает динамическую метку на позиции <literal>X,Y</literal>. Метка зовется
513   динамической, потому что ее текст периодически обновляется. Максимальная длина
514   метки задается параметром <literal>width</literal> (ее высота равна высоте символа).
515   Если отображаемый текст шире этого значения, он будет скроллироваться,
516   иначе он выравнивается в пределах указанного пространства в соответствии со
517   значением параметра
518   <literal>align</literal>: <literal>0</literal> - вправо,
519   <literal>1</literal> - по центру, <literal>2</literal> - влево.
520   </para>
521   <para>
522   Отображаемый текст задается параметром <literal>text</literal>: Он должен быть
523   заключен в двойные кавычки (но символ " не может быть частью текста).
524   Метка отображается, используя шрифт, определяемый по <literal>fontid</literal>.
525   Вы можете использовать следующие переменные в тексте:
526   </para>
527
528   <informaltable>
529   <tgroup cols="2">
530   <thead>
531     <row><entry>Переменная</entry><entry>Значение</entry></row>
532   </thead>
533   <tbody>
534   <row>
535     <entry>$1</entry>
536     <entry>время воспроизведения в формате <emphasis>чч:мм:сс</emphasis></entry>
537   </row>
538   <row>
539     <entry>$2</entry>
540     <entry>время воспроизведения в формате <emphasis>мммм:сс</emphasis></entry>
541   </row>
542   <row>
543     <entry>$3</entry>
544     <entry>время воспроизведения формате <emphasis>чч</emphasis>(часы)</entry>
545   </row>
546   <row>
547     <entry>$4</entry>
548     <entry>время воспроизведения в формате <emphasis>мм</emphasis>(минуты)</entry>
549   </row>
550   <row>
551     <entry>$5</entry>
552     <entry>время воспроизведения в формате <emphasis>сс</emphasis>(секунды)</entry>
553   </row>
554   <row>
555     <entry>$6</entry>
556     <entry>длительность фильма в формате <emphasis>чч:мм:сс</emphasis></entry>
557   </row>
558   <row>
559     <entry>$7</entry>
560     <entry>длительность фильма в формате <emphasis>мммм:сс</emphasis></entry>
561   </row>
562   <row>
563     <entry>$8</entry>
564     <entry>время воспроизведения формате <emphasis>ч:мм:сс</emphasis></entry>
565   </row>
566   <row>
567     <entry>$v</entry>
568     <entry>кромкость в формате <emphasis>xxx.xx</emphasis>%</entry>
569   </row>
570   <row>
571     <entry>$V</entry>
572     <entry>кромкость в формате <emphasis>xxx.xx</emphasis></entry>
573   </row>
574   <row>
575     <entry>$b</entry>
576     <entry>баланс в формате <emphasis>xxx.xx</emphasis>%</entry>
577   </row>
578   <row>
579     <entry>$B</entry>
580     <entry>баланс в формате <emphasis>xxx.xx</emphasis></entry>
581   </row>
582   <row>
583     <entry>$$</entry>
584     <entry>символ $</entry>
585   </row>
586   <row>
587     <entry>$a</entry>
588     <entry>символ ,соответствующий типу звука (нет: <literal>n</literal>,
589     моно: <literal>m</literal>, стерео: <literal>t</literal>)</entry>
590   </row>
591   <row>
592     <entry>$t</entry>
593     <entry>номер дорожки (в плейлисте)</entry>
594   </row>
595   <row>
596     <entry>$o</entry>
597     <entry>имя файла</entry>
598   </row>
599   <row>
600     <entry>$f</entry>
601     <entry>имя файла в нижнем регистре</entry>
602   </row>
603   <row>
604     <entry>$F</entry>
605     <entry>имя файла в верхнем регистре</entry>
606   </row>
607   <row>
608     <entry>$T</entry>
609     <entry>
610     символ, соответствующий типу потока (файл: <literal>f</literal>,
611     Video CD: <literal>v</literal>, DVD: <literal>d</literal>,
612     URL: <literal>u</literal>)
613     </entry>
614   </row>
615   <row>
616     <entry>$p</entry>
617     <entry>
618     символ <keycap>p</keycap> (если фильм воспроизводится и шрифт имеет
619     символ <keycap>p</keycap>)
620     </entry>
621   </row>
622   <row>
623     <entry>$s</entry>
624     <entry>
625     символ <keycap>s</keycap> (если фильм остановлен и шрифт имеет
626     символ <keycap>s</keycap>)
627     </entry>
628   </row>
629   <row>
630     <entry>$e</entry>
631     <entry>
632     символ <keycap>e</keycap> (если фильм на паузе и шрифт имеет
633     символ <keycap>e</keycap>)
634     </entry>
635   </row>
636   <row>
637     <entry>$x</entry>
638     <entry>ширина фильма</entry>
639   </row>
640   <row>
641     <entry>$y</entry>
642     <entry>высота фильма</entry>
643   </row>
644   <row>
645     <entry>$C</entry>
646     <entry>название используемого кодека</entry>
647   </row>
648   </tbody>
649   </tgroup>
650   </informaltable>
651
652   <note><para>
653   Переменные <literal>$a, $T, $p, $s</literal> и <literal>$e</literal> все
654   возвращают символы, которые должны быть отображены в качестве специальных значков
655   (например, <keycap>e</keycap> - для значка паузы, который обычно выглядит как ||).
656   Вы должны иметь шрифт для обычных символов и отличающийся шрифт для значков.
657   Смотрите раздел о <link linkend="skin-fonts-symbols">значках</link>
658   для дополнительной информации.
659   </para></note>
660   </listitem>
661 </varlistentry>
662 </variablelist>
663 </sect2>
664
665 <!-- ********** -->
666
667 <sect2 id="skin-file-subwindow">
668 <title>Вспомогательное окно</title>
669 <para>
670 Следующие элементы могут быть использованы в блоке
671 '<literal>window = sub</literal>' . . . '<literal>end</literal>' .
672 </para>
673
674 <variablelist>
675 <varlistentry>
676   <term><literal>
677   <anchor id="skin-sub-base"/>base = image, X, Y, width, height
678   </literal></term>
679   <listitem><para>
680   Изображение, отображаемое в окне. Окно будет появляться в указанной позиции
681   <literal>X,Y</literal> экрана (<literal>0,0</literal> - верхний левый угол).
682   Вы можете указать <literal>-1</literal> для центра и <literal>-2</literal>
683   для правого (<literal>X</literal>) и нижнего (<literal>Y</literal>) края.
684   Окно будет того же размера, что и изображение. <literal>width</literal> и
685   <literal>height</literal> означают размер окна; они необязательны
686   (если отсутствуют, окно будет иметь те же размеры, что и изображение).
687   </para></listitem>
688 </varlistentry>
689
690 <varlistentry>
691   <term><literal>
692   <anchor id="skin-background"/>background = R, G, B
693   </literal></term>
694   <listitem><para>
695   Позволяет указать цвет фона. Это полезно, если изображение меньше окна.
696   <literal>R</literal>, <literal>G</literal> и <literal>B</literal>
697   указывают красную, зеленую и синюю составляющие цвета (каждое из них -
698   десятичное число от 0 до 255).
699   </para></listitem>
700 </varlistentry>
701 </variablelist>
702 </sect2>
703
704 <!-- ********** -->
705
706 <sect2 id="skin-file-menu">
707 <title>Меню со скинами</title>
708 <para>
709 Как было описано выше, меню отображается при помощи двух картинок. Нормальные
710 элементы меню берутся из изображения, указанного элементом <literal>base</literal>,
711 в то время как выделенный в данный момент элемент берется  из изображения,
712 указанного элементом <literal>selected</literal>. Вы должны определить позицию и
713 размер каждого элемента меню.
714 </para>
715
716 <para>
717 Следующие элементы можно использовать в блоке
718 '<literal>window = menu</literal>'. . .'<literal>end</literal>'.
719 </para>
720
721 <variablelist>
722 <varlistentry>
723   <term><literal>
724   <anchor id="skin-menu-base"/>base = image
725   </literal></term>
726   <listitem><para>
727   Изображение для нормальных элементов меню.
728   </para></listitem>
729 </varlistentry>
730
731 <varlistentry>
732   <term><literal>
733   <anchor id="skin-selected"/>selected = image
734   </literal></term>
735   <listitem><para>
736   Изображение, показывающее меню со всеми выделенными элементами.
737   </para></listitem>
738 </varlistentry>
739
740 <varlistentry>
741   <term><literal>
742   <anchor id="skin-menu"/>menu = X, Y, width, height, message
743   </literal></term>
744   <listitem><para>
745   Определяет позицию <literal>X,Y</literal> и размер элемента меню в изображении.
746   <literal>message</literal> - это сообщение, генерируемое, когда кнопка мыши будет отпущена
747   над элементом меню.
748   </para></listitem>
749 </varlistentry>
750 </variablelist>
751 </sect2>
752 </sect1>
753
754
755 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
756
757
758 <sect1 id="skin-fonts">
759 <title>Шрифты</title>
760 <para>
761 Как описано в разделе, посвященному частям скина, шрифт определяется
762 изображением и файлом описания. Вы можете поместить символы в любое место изображения,
763 но будьте уверены, что их позиция и размер точно указаны в файле описания.
764 </para>
765
766 <para>
767 Файл описания шрифта (с расширением <filename>.fnt</filename>) может иметь комментарии,
768 начинающиеся с '<literal>;</literal>'. Файл должен иметь строку вида
769 <anchor id="skin-font-image"/>
770 <programlisting>image = <replaceable>image</replaceable></programlisting>,
771 где <literal><replaceable>image</replaceable></literal> - это название
772 файла с изображением, используемым для шрифта (расширение указывать необязательно).
773 <anchor id="skin-font-char"/>
774 <programlisting>"char" = X, Y, width, height</programlisting>
775 Здесь <literal>X</literal> и <literal>Y</literal> указывают позицию символа
776 <literal>char</literal> в изображении (<literal>0,0</literal> - верхний левый угол),
777 <literal>width</literal> и <literal>height</literal> - размеры символа в пикселах.
778 </para>
779
780 <para>
781 Этот пример определяет символы  A, B, C, используя <filename>font.png</filename>.
782 <programlisting>
783 ; Can be "font" instead of "font.png".
784 image = font.png
785
786 ; Three characters are enough for demonstration purposes :-)
787 "A" =  0,0, 7,13
788 "B" =  7,0, 7,13
789 "C" = 14,0, 7,13
790 </programlisting>
791 </para>
792
793 <!-- ********** -->
794
795 <sect2 id="skin-fonts-symbols">
796 <title>Значки</title>
797
798 <para>
799 Некоторые символы имеют специальное значение, когда возвращаются некоторыми переменными,
800 используемыми в <link linkend="skin-dlabel">dlabel</link>. Подразумевается, что эти символы
801 должны отображаться в виде значков, так для DVD потока можно отображать значок
802 красивого логотипа DVD вместо символа '<literal>d</literal>'.
803 </para>
804 <para>
805 Следующая таблица содержит список всех символов, которые могут использоваться для
806 отображения значков (и поэтому требуют другой шрифт).
807 </para>
808
809 <informaltable>
810 <tgroup cols="2">
811 <thead>
812   <row><entry>Символ</entry><entry>Значок</entry></row>
813 </thead>
814 <tbody>
815   <row><entry><keycap>p</keycap></entry><entry>воспроизведение</entry></row>
816   <row><entry><keycap>s</keycap></entry><entry>стоп</entry></row>
817   <row><entry><keycap>e</keycap></entry><entry>пауза</entry></row>
818   <row><entry><keycap>n</keycap></entry><entry>без звука</entry></row>
819   <row><entry><keycap>m</keycap></entry><entry>звук моно</entry></row>
820   <row><entry><keycap>t</keycap></entry><entry>звук стерео</entry></row>
821   <row><entry><keycap>f</keycap></entry><entry>файл</entry></row>
822   <row><entry><keycap>v</keycap></entry><entry>Video CD</entry></row>
823   <row><entry><keycap>d</keycap></entry><entry>DVD</entry></row>
824   <row><entry><keycap>u</keycap></entry><entry>URL</entry></row>
825 </tbody>
826 </tgroup>
827 </informaltable>
828 </sect2>
829 </sect1>
830
831
832 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
833
834
835 <sect1 id="skin-gui">
836 <title>GUI сообщения</title>
837 <para>
838 Это сообщения, которые могут генерироваться кнопками, ползунками и элементами меню.
839 </para>
840
841 <variablelist>
842 <varlistentry>
843   <term><emphasis role="bold">evNone</emphasis></term>
844   <listitem><para>
845   Пустое сообщение, не имеет действий (за исключением, возможно, Subversion версий :-)).
846   </para></listitem>
847 </varlistentry>
848
849 <title>Управление воспроизведением:</title>
850 <varlistentry>
851   <term><emphasis role="bold">evPlay</emphasis></term>
852   <listitem><para>
853   Старт воспроизведения.
854   </para></listitem>
855 </varlistentry>
856
857 <varlistentry>
858   <term><emphasis role="bold">evStop</emphasis></term>
859   <listitem><para>
860   Останавливает воспроизведение.
861   </para></listitem>
862 </varlistentry>
863 </variablelist>
864
865 <varlistentry>
866   <term><emphasis role="bold">evPause</emphasis></term>
867   <listitem><para>
868   </para></listitem>
869 </varlistentry>
870
871 <varlistentry>
872   <term><emphasis role="bold">evPrev</emphasis></term>
873   <listitem><para>
874   Переход к предыдущему элементу списка воспроизведения.
875   </para></listitem>
876 </varlistentry>
877
878 <varlistentry>
879   <term><emphasis role="bold">evNext</emphasis></term>
880   <listitem><para>
881   Переход к следующему элементу списка воспроизведения.
882   </para></listitem>
883 </varlistentry>
884
885 <varlistentry>
886   <term><emphasis role="bold">evLoad</emphasis></term>
887   <listitem><para>
888   Открывает файл (открывая окно навигации, в котором вы можете выбрать файл).
889   </para></listitem>
890 </varlistentry>
891
892 <varlistentry>
893   <term><emphasis role="bold">evLoadPlay</emphasis></term>
894   <listitem><para>
895   Делает то же, что и <literal>evLoad</literal>, но запускает вопроизведение файла
896   автоматически после его загрузки.
897   </para></listitem>
898 </varlistentry>
899
900 <varlistentry>
901   <term><emphasis role="bold">evLoadAudioFile</emphasis></term>
902   <listitem><para>
903   Загружает звуковой файл (с диалогом выбора файла).
904   </para></listitem>
905 </varlistentry>
906
907 <varlistentry>
908   <term><emphasis role="bold">evLoadSubtitle</emphasis></term>
909   <listitem><para>
910   Загружает файл с субтитрами (с диалогом выбора файла).
911   </para></listitem>
912 </varlistentry>
913
914 <varlistentry>
915   <term><emphasis role="bold">evDropSubtitle</emphasis></term>
916   <listitem><para>
917   Отключает субтитры, использующиеся в данный момент.
918   </para></listitem>
919 </varlistentry>
920
921 <varlistentry>
922   <term><emphasis role="bold">evPlaylist</emphasis></term>
923   <listitem><para>
924   Открывае/закрывает окно со списком воспроизведения.
925   </para></listitem>
926 </varlistentry>
927
928 <varlistentry>
929   <term><emphasis role="bold">evPlayVCD</emphasis></term>
930   <listitem><para>
931   Пытается открыть диск в указанном устройстве CD-ROM.
932   </para></listitem>
933 </varlistentry>
934
935 <varlistentry>
936   <term><emphasis role="bold">evPlayDVD</emphasis></term>
937   <listitem><para>
938   Пытается открыть диск в указанном устройстве DVD-ROM.
939   </para></listitem>
940 </varlistentry>
941
942 <varlistentry>
943   <term><emphasis role="bold">evLoadURL</emphasis></term>
944   <listitem><para>
945   Отображает диалог ввода URL.
946   </para></listitem>
947 </varlistentry>
948
949 <varlistentry>
950   <term><emphasis role="bold">evPlaySwitchToPause</emphasis></term>
951   <listitem><para>
952   Противоположность <literal>evPauseSwitchToPlay</literal>. Это сообщение
953   запускает воспроизведение и показывает изображение кнопки с
954   назначенным сообщением <literal>evPauseSwitchToPlay</literal>
955   (чтобы показать, что кнопка может быть нажата для включения паузы).
956   </para></listitem>
957 </varlistentry>
958
959 <varlistentry>
960   <term><emphasis role="bold">evPauseSwitchToPlay</emphasis></term>
961   <listitem><para>
962   Вместе с <literal>evPlaySwitchToPause</literal> формирует переключатель паузы.
963   Может быть использовано для общей кнопки воспроизведение/пауза. Оба сообщения
964   должны быть назначены кнопкам, находящимся практически в одной точке окна.
965   Это сообщение ставит воспроизведение на паузу и показывает изображение кнопки с
966   назначенным сообщением <literal>evPlaySwitchToPause</literal>
967   (чтобы показать, что кнопка может быть нажата для продолжения воспроизведения).
968   </para></listitem>
969 </varlistentry>
970
971 <variablelist>
972 <title>Перемещение:</title>
973 <varlistentry>
974   <term><emphasis role="bold">evBackward10sec</emphasis></term>
975   <listitem><para>
976   Перемещение назад на 10 секунд.
977   </para></listitem>
978 </varlistentry>
979
980 <varlistentry>
981   <term><emphasis role="bold">evBackward1min</emphasis></term>
982   <listitem><para>
983   Перемещение назад на 1 минуту.
984   </para></listitem>
985 </varlistentry>
986
987 <varlistentry>
988   <term><emphasis role="bold">evBackward10min</emphasis></term>
989   <listitem><para>
990   Перемещение назад на 10 минут.
991   </para></listitem>
992 </varlistentry>
993
994 <varlistentry>
995   <term><emphasis role="bold">evForward10sec</emphasis></term>
996   <listitem><para>
997   Перемещение вперед на 10 секунд.
998   </para></listitem>
999 </varlistentry>
1000
1001 <varlistentry>
1002   <term><emphasis role="bold">evForward1min</emphasis></term>
1003   <listitem><para>
1004   Перемещение вперед на 1 минуту.
1005   </para></listitem>
1006 </varlistentry>
1007
1008 <varlistentry>
1009   <term><emphasis role="bold">evForward10min</emphasis></term>
1010   <listitem><para>
1011   Перемещение вперед на 10 минут.
1012   </para></listitem>
1013 </varlistentry>
1014
1015 <varlistentry>
1016   <term><emphasis role="bold">evSetMoviePosition</emphasis></term>
1017   <listitem><para>
1018   Перемещается к позиции (может использоваться ползунком;
1019   используется относительное (0-100%) положение ползунка).
1020   </para></listitem>
1021 </varlistentry>
1022 </variablelist>
1023
1024 <variablelist>
1025 <title>Управление видео:</title>
1026 <varlistentry>
1027   <term><emphasis role="bold">evHalfSize</emphasis></term>
1028   <listitem><para>
1029   Установить половинный размер окна.
1030   </para></listitem>
1031 </varlistentry>
1032 <varlistentry>
1033   <term><emphasis role="bold">evDoubleSize</emphasis></term>
1034   <listitem><para>
1035   Установить двойной размер окна.
1036   </para></listitem>
1037 </varlistentry>
1038 <varlistentry>
1039   <term><emphasis role="bold">evFullScreen</emphasis></term>
1040   <listitem><para>
1041   Включить/выключить полноэкранный режим.
1042   </para></listitem>
1043 </varlistentry>
1044 <varlistentry>
1045   <term><emphasis role="bold">evNormalSize</emphasis></term>
1046   <listitem><para>
1047   Установить нормальный размер окна.
1048   </para></listitem>
1049 </varlistentry>
1050 <varlistentry>
1051   <term><emphasis role="bold">evSetAspect</emphasis></term>
1052   <listitem><para>
1053   </para></listitem>
1054 </varlistentry>
1055 </variablelist>
1056
1057 <variablelist>
1058 <title>Управление звуком:</title>
1059 <varlistentry>
1060   <term><emphasis role="bold">evDecVolume</emphasis></term>
1061   <listitem><para>
1062   Уменьшить громкость.
1063   </para></listitem>
1064 </varlistentry>
1065
1066 <varlistentry>
1067   <term><emphasis role="bold">evIncVolume</emphasis></term>
1068   <listitem><para>
1069   Увеличить громкость.
1070   </para></listitem>
1071 </varlistentry>
1072
1073 <varlistentry>
1074   <term><emphasis role="bold">evSetVolume</emphasis></term>
1075   <listitem><para>
1076   Установить громкость (может использоваться ползунком;
1077   используется относительное (0-100%) значение ползунка),
1078   </para></listitem>
1079 </varlistentry>
1080
1081 <varlistentry>
1082   <term><emphasis role="bold">evMute</emphasis></term>
1083   <listitem><para>
1084   Выключить/включить звук.
1085   </para></listitem>
1086 </varlistentry>
1087
1088 <varlistentry>
1089   <term><emphasis role="bold">evSetBalance</emphasis></term>
1090   <listitem><para>
1091   Установить баланс (может использоваться ползунком;
1092   используется относительное (0-100%) значение ползунка),
1093   </para></listitem>
1094 </varlistentry>
1095
1096 <varlistentry>
1097   <term><emphasis role="bold">evEqualizer</emphasis></term>
1098   <listitem><para>
1099   Включает/выключает эквалайзер.
1100   </para></listitem>
1101 </varlistentry>
1102 </variablelist>
1103
1104 <variablelist>
1105 <title>Разное:</title>
1106 <varlistentry>
1107   <term><emphasis role="bold">evAbout</emphasis></term>
1108   <listitem><para>
1109   Открыть окно 'О программе'.
1110   </para></listitem>
1111 </varlistentry>
1112
1113 <varlistentry>
1114   <term><emphasis role="bold">evPreferences</emphasis></term>
1115   <listitem><para>
1116   Открывает окно с настройками.
1117   </para></listitem>
1118 </varlistentry>
1119
1120 <varlistentry>
1121   <term><emphasis role="bold">evSkinBrowser</emphasis></term>
1122   <listitem><para>
1123   Открывает окно навигации по скинам.
1124   </para></listitem>
1125 </varlistentry>
1126
1127 <varlistentry>
1128   <term><emphasis role="bold">evIconify</emphasis></term>
1129   <listitem><para>
1130   Сворачивает окно в иконку.
1131   </para></listitem>
1132 </varlistentry>
1133
1134 <varlistentry>
1135   <term><emphasis role="bold">evExit</emphasis></term>
1136   <listitem><para>
1137   Выход из программы.
1138   </para></listitem>
1139 </varlistentry>
1140 </variablelist>
1141 </sect1>
1142
1143
1144 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
1145
1146
1147 <sect1 id="skin-quality">
1148 <title>Создание качественного скина</title>
1149
1150 <para>
1151 Итак, вы прочитали о создании скина для
1152 <application>MPlayer</application> GUI, прекрасно нарисовали все в
1153 <application>Gimp</application> и желаете отправить скин нам?
1154 Прочтите некоторые руководства для избежания основных ошибок и
1155 создания высококачественного скина.
1156 </para>
1157
1158 <para>
1159 Мы хотим, чтобы скины, добавляемые нами в репозиторий, удовлетворяли
1160 некоторым стандартам качества. Есть также несколько вещей,
1161 сделающих вашу жизнь проще.
1162 </para>
1163
1164 <para>
1165 В качестве примера можете посмотреть на скин <systemitem>Blue</systemitem>,
1166 начиная с версии 1.5, он удовлетворяет всем критериям, указанным ниже.
1167 </para>
1168
1169 <itemizedlist>
1170   <listitem><para>
1171   Каждый скин должна идти с файлом
1172   <filename>README</filename>, содержащим информацию о вас, авторе,
1173   правах на копирование, лицензионным уведомлением и всем другим,
1174   что вам захочется добавить. Если хотите иметь историю изменений, то
1175   этот файл - хорошее место для нее.
1176   </para></listitem>
1177
1178   <listitem><para>
1179   Должен быть файл <filename>VERSION</filename>,
1180   содержащий только номер версии скина в одной строке
1181   (например 1.0).
1182   </para></listitem>
1183
1184   <listitem><para>
1185   Горизонтальные и вертикальные элементы управления
1186   (такие как ползунки громкости или положения) должны иметь
1187   кнопку-ползунок точно отцентрированную по центру самого ползунка.
1188   Должно быть возможно двигать кнопку к обоим концам ползунка,
1189   но не выходить за них.
1190   </para></listitem>
1191
1192   <listitem><para>
1193   Элементы скина должны иметь правильные размеры,
1194   указанные в файле skin. Если это не так, вы сможете щелкнуть, например,
1195   мимо кнопки и все равно она сработает, или наоборот кликнуть на нее,
1196   не вызвав никакого действия.
1197   </para></listitem>
1198
1199   <listitem><para>
1200   Файл <filename>skin</filename> должен быть набран аккуратно
1201   и не должен содержать символов табуляции. Аккуратно набран означает,
1202   что числа должны выравниваться стройно в столбцы.
1203   </para></listitem>
1204 </itemizedlist>
1205
1206 </sect1>
1207 </appendix>