mirror of
https://github.com/mpv-player/mpv
synced 2024-12-27 09:32:40 +00:00
6e9cbdc104
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29305 b3059339-0415-0410-9bf9-f77b7e298cf2
1232 lines
51 KiB
XML
1232 lines
51 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- synced with r21612 -->
|
||
<appendix id="skin">
|
||
<title>Формат скинов <application>MPlayer</application></title>
|
||
|
||
<sect1 id="skin-overview">
|
||
<title>Обзор</title>
|
||
|
||
<para>
|
||
На самом деле с форматом скинов уже нет необходимости что-либо делать, но вам
|
||
следует знать, что <application>MPlayer</application>
|
||
<emphasis role="bold">не имеет</emphasis> встроенного скина, так что
|
||
<emphasis role="bold">как минимум один скин должен быть установлен, для
|
||
возможности использовать GUI.</emphasis>
|
||
</para>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="skin-overview-directories">
|
||
<title>Каталоги</title>
|
||
<para>
|
||
Скины ищутся в следующих каталогах (по порядку):
|
||
<orderedlist>
|
||
<listitem><para>
|
||
<filename class="directory">$(DATADIR)/skins/</filename>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<filename class="directory">$(PREFIX)/share/mplayer/skins/</filename>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<filename class="directory">~/.mplayer/skins/</filename>
|
||
</para></listitem>
|
||
</orderedlist>
|
||
</para>
|
||
|
||
<para>
|
||
Имейте в виду, что первый путь может меняться в соответствии с конфигурацией
|
||
<application>MPlayer</application> (смотрите аргументы скрипта
|
||
<command>configure</command> <option>--prefix</option> и <option>--datadir</option>).
|
||
</para>
|
||
|
||
<para>
|
||
Каждый скин устанавливается в его собственный подкаталог, в одном из указанных выше
|
||
каталогов, например:
|
||
<screen>$(PREFIX)/share/mplayer/skins/default/</screen>
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="skin-overview-formats">
|
||
<title>Форматы изображений</title>
|
||
<para>Изображениями должны быть truecolor (24 или 32 бит/пиксел) PNG.</para>
|
||
<para>
|
||
В главном окне и полосе воспроизведения (смотрите ниже) можно использовать
|
||
изображения с 'прозрачностью': Области, заполненные цветом #FF00FF (magenta) полностью
|
||
прозрачны при просмотре программой <application>MPlayer</application>. Это значит, что
|
||
если ваш X сервер поддерживает расширение XShape, вы сможете получить даже
|
||
окна произвольной формы.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 id="skin-overview-components">
|
||
<title>Компоненты скина</title>
|
||
<para>
|
||
Скины имеют достаточно свободный формат (в отличие,например, от скинов
|
||
<application>Winamp</application>/<application>XMMS</application>,
|
||
имеющих формат фиксированный), так что зависит исключительно от вас, выйдет ли
|
||
у вас что-то грандиозное.
|
||
</para>
|
||
|
||
<para>
|
||
В данный момент могут быть оформлены четыре окна:
|
||
<link linkend="skin-file-main">главное окно</link>,
|
||
<link linkend="skin-file-subwindow">вспомогательное окно</link>,
|
||
<link linkend="skin-file-main">полоса воспроизведения</link>, and the
|
||
<link linkend="skin-file-menu">меню со скинами</link> (активирующееся правым щелчком
|
||
мыши).
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
<emphasis role="bold">Главное окно</emphasis> и/или
|
||
<emphasis role="bold">полоса воспроизведения</emphasis> - те, через которые вы
|
||
управляете <application>MPlayer</application>. Фон окна - это изображение.
|
||
Различные элементы могут (и должны) размещаться в окне:
|
||
<emphasis>кнопки</emphasis>, <emphasis>ползунки</emphasis> и
|
||
<emphasis>надписи</emphasis>.
|
||
Для каждого элемента должен быть задан размер и положение.
|
||
</para>
|
||
|
||
<para>
|
||
<emphasis role="bold">Кнопка</emphasis> имеет три состояния (нажата, отпущена,
|
||
отключена), таким образом, ее изображение должно быть разделено вертикально на три части.
|
||
Смотрите элемент <link linkend="skin-button">кнопка</link> для подробностей.
|
||
</para>
|
||
|
||
<para>
|
||
<emphasis role="bold">Ползунок</emphasis> (в основном используется для полосы перемещения
|
||
и управления громкостью/балансом) может иметь любое количество положений, задаваемых делением
|
||
его изображения на различные части одна под другой. Смотрите
|
||
<link linkend="skin-hpotmeter">hpotmeter</link> и
|
||
<link linkend="skin-potmeter">potmeter</link> для подробностей.
|
||
</para>
|
||
|
||
<para>
|
||
<emphasis role="bold">Надписи</emphasis> чуть особеннее: Символы, необходимые для их
|
||
отрисовки, берутся из графического файла, и задаются
|
||
<link linkend="skin-fonts">файлом описания шрифта</link>.
|
||
Последний - это текстовый файл, указывающий x,y положения и размер каждого символа
|
||
в файле с изображением (файл изображения и файл описания шрифта
|
||
<emphasis>вместе</emphasis> формируют шрифт). Смотрите
|
||
<link linkend="skin-dlabel">dlabel</link>
|
||
и <link linkend="skin-slabel">slabel</link> для подробностей.
|
||
</para>
|
||
|
||
<note><para>Все изображения могут быть полностью прозрачными, как описано в разделе,
|
||
посвященном <link linkend="skin-overview-formats">форматам изображений</link>. Если X
|
||
сервер не поддерживает расширение XShape, части, помеченные как прозрачные, будут черными.
|
||
Если вам нравится использовать эту возможность, ширина фона главного окна должна
|
||
делиться на 8.
|
||
</para></note>
|
||
</listitem>
|
||
|
||
<listitem><para>
|
||
<emphasis role="bold">Вспомогательное окно</emphasis> - это то, где появляется фильм.
|
||
Оно может отображать указанную картинку, если никакого фильма не загружено (пустое окно
|
||
немного надоедает :-)) <emphasis role="bold">Замечание:</emphasis> прозрачность здесь
|
||
<emphasis role="bold">не допускается</emphasis>.
|
||
</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<emphasis role="bold">Меню со скинами</emphasis> - всего лишь способ управлять
|
||
<application>MPlayer</application> в понятиях элементов меню. Для меню требуются
|
||
два изображения: одно из них - основное, показывает меню в обычном режиме,
|
||
другое используется для отображения выбранных элементов. Когда появляется меню,
|
||
отображается первое. Если вы перемещаете мышь над элементами меню,
|
||
выбранный элемент копируется из второго изображения поверх элемента меню под указателем мыши
|
||
(второе изображение никогда не отображается целиком).
|
||
</para>
|
||
<para>
|
||
Элемент меню определяется его позицией и размером изображения (смотрите раздел,
|
||
посвященный <link linkend="skin-file-menu">меню со скинами</link> для подробностей).
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
|
||
<para>
|
||
Важная вещь, не упомянутая выше: Чтобы работали кнопки, ползунки и элементы меню,
|
||
<application>MPlayer</application> должен знать, что делать, если на них
|
||
щелкнули мышью. Это делается при помощи <link linkend="skin-gui">сообщений</link>
|
||
(событий). Для этих элементов вы должны определить сообщения, генерируемые, когда
|
||
на них щелкают мышью.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="skin-files">
|
||
<title>Файлы</title>
|
||
<para>
|
||
Вам нужны следующие файлы для создания скина:
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
Файл конфигурации, называющийся <link linkend="skin-file">skin</link> говорит
|
||
<application>MPlayer</application> как совместить разные части скина воедино,
|
||
и что делать, если производится щелчок где-нибудь в окне.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Фоновое изображение главного окна.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Изображения элементов главного окна (включая один или более файлов описания шрифтов,
|
||
необходимых для отрисовки надписей.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Изображение, показываемое во вспомогательном окне (необязательно).
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Два изображения для меню со скинами (нужны, только если вы хотите создавать меню).
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
Все файлы, за исключением skin, могут быть названы так, как вам захочется
|
||
(но заметьте, что файлы описания шрифтов должны иметь расширение
|
||
a <filename>.fnt</filename>).
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="skin-file">
|
||
<title>Файл skin</title>
|
||
<para>
|
||
Как описано выше, это файл конфигурации скина. он строчно-орентирован:
|
||
строки комментариев начинаются с символа '<literal>;</literal>' в начале
|
||
строки (только пробелы и табуляция допускается перед символом '<literal>;</literal>').
|
||
</para>
|
||
|
||
<para>
|
||
Файл создается из разделов. Каждый описывает скин для приложения и
|
||
имеет следующую форму:
|
||
<programlisting>
|
||
section = <replaceable>название раздела</replaceable>
|
||
.
|
||
.
|
||
.
|
||
end
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
В данный момент приложение одно, так что вам потребуется только один раздел: его название
|
||
<emphasis role="bold">movieplayer</emphasis>.
|
||
</para>
|
||
|
||
<para>
|
||
В пределах раздела каждое окно описывается блоком следующей структуры:
|
||
<programlisting>
|
||
window = <replaceable>название окна</replaceable>
|
||
.
|
||
.
|
||
.
|
||
end
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
где <replaceable>название окна</replaceable> может быть одной из этих строк:
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
<emphasis role="bold">main</emphasis> - главное окно
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">sub</emphasis> - вспомогательное окно
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">menu</emphasis> - меню со скинами
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">playbar</emphasis> - полоса воспроизведения
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
|
||
<para>
|
||
(Блоки sub и menu опциональные - необязательно создавать меню или оформлять вспомогательное
|
||
окно.)
|
||
</para>
|
||
|
||
<para>
|
||
В пределах блока window вы можете описать каждый элемент окна строкой в следующем формате:
|
||
<programlisting>item = parameter</programlisting>
|
||
Где <literal>item</literal> - это строка, определяющая тип элемента GUI,
|
||
<literal>parameter</literal> - числовое или текстовое значение (или список значений, разделенных
|
||
запятой).
|
||
</para>
|
||
|
||
<para>
|
||
Если собрать все вместе, файл целиком будет выглядеть примерно так:
|
||
<programlisting>
|
||
section = movieplayer
|
||
window = main
|
||
; ... items for main window ...
|
||
end
|
||
|
||
window = sub
|
||
; ... items for subwindow ...
|
||
end
|
||
|
||
window = menu
|
||
; ... items for menu ...
|
||
end
|
||
|
||
window = playbar
|
||
; ... items for playbar ...
|
||
end
|
||
end
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
Название файла с изображением должно указываться без лидирующих каталогов -
|
||
изображения ищутся в каталоге <filename class="directory">skins</filename>.
|
||
Вы можете (но не обязаны) указать расширение файла. Если файл не существует,
|
||
<application>MPlayer</application> пытается загрузить файл
|
||
<filename><filename>.<ext></filename>, где <literal>png</literal>
|
||
и <literal>PNG</literal> пробуются вместо <filename><ext></filename>
|
||
(в этом порядке). Будет использоваться первый найденный файл.
|
||
</para>
|
||
|
||
<para>
|
||
Вот пример, чтобы было понятнее. Предположим вы имеете изображение, называющееся
|
||
<filename>main.png</filename>, которое используете для главного окна:
|
||
<programlisting>base = main, -1, -1</programlisting>
|
||
<application>MPlayer</application> пытается загрузить файлы <filename>main</filename>,
|
||
<filename>main.png</filename>, <filename>main.PNG</filename>.
|
||
</para>
|
||
|
||
<para>
|
||
И наконец несколько слов о позиционировании. Главное и вспомогательное окна могут
|
||
быть размещены в разных углах экрана указанием <literal>X</literal> и
|
||
<literal>Y</literal> координат. <literal>0</literal> - это верхний и левый край,
|
||
<literal>-1</literal> - центр и <literal>-2</literal> - правый или нижний, как
|
||
указано на иллюстрации:
|
||
<informalfigure>
|
||
<screen>
|
||
(0, 0)----(-1, 0)----(-2, 0)
|
||
| | |
|
||
| | |
|
||
(0,-1)----(-1,-1)----(-2,-1)
|
||
| | |
|
||
| | |
|
||
(0,-2)----(-1,-2)----(-2,-2)
|
||
</screen>
|
||
</informalfigure>
|
||
</para>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="skin-file-main">
|
||
<title>Главное окно и полоса воспроизведения</title>
|
||
<para>
|
||
Ниже - список элементов, которые можно указывать в
|
||
'<literal>window = main</literal>' ... '<literal>end</literal>',
|
||
и '<literal>window = playbar</literal>' ... '<literal>end</literal>'
|
||
блоках.
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-main-base"/>base = image, X, Y
|
||
</literal></term>
|
||
<listitem>
|
||
<para>
|
||
Позволяет вам указать фоновое изображение, используемое в главном окне.
|
||
Окно будет появляться в указанной <literal>X,Y</literal> позиции на экране и
|
||
иметь размер изображения.
|
||
</para>
|
||
<note><para>
|
||
Эти координаты пока не работают для окна отображения.
|
||
</para></note>
|
||
<warning><para>Прозрачные регионы в изображении (цвет #FF00FF) станут черными
|
||
на X сервере без расширения XShape. Ширина картинки должна делиться
|
||
на 8.</para></warning>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-button"/>button = image, X, Y, width, height, message
|
||
</literal></term>
|
||
<listitem>
|
||
<para>
|
||
Размещает кнопку размера <literal>width</literal> * <literal>height</literal> на
|
||
позиции <literal>X,Y</literal>. Указанное сообщение <literal>message</literal>
|
||
генерируется при щелчке на кнопку. Изображение <literal>image</literal>,
|
||
должно иметь три части одна ниже другой (в соответствии с возможными состояниями
|
||
кнопки), как здесь:
|
||
</para>
|
||
<informalfigure>
|
||
<screen>
|
||
+------------+
|
||
| нажата |
|
||
+------------+
|
||
| отпущена |
|
||
+------------+
|
||
| отключена |
|
||
+------------+<!--
|
||
--></screen>
|
||
</informalfigure>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-decoration"/>decoration = enable|disable
|
||
</literal></term>
|
||
<listitem>
|
||
<para>
|
||
Включает или выключает декорации главного окна, осуществляемые window manager . По-умолчанию
|
||
<emphasis role="bold">disable</emphasis>.
|
||
</para>
|
||
<note><para>
|
||
Это не работает для окна отображения, в этом нет надобности.
|
||
</para></note>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-hpotmeter"/>hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
|
||
</literal></term>
|
||
<listitem><para>
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-vpotmeter"/>vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
|
||
</literal></term>
|
||
<listitem><para>
|
||
Размещает горизонтальный (hpotmeter) или вертикальный (vpotmeter) ползунок размера
|
||
<literal>width</literal> * <literal>height</literal> на позиции
|
||
<literal>X,Y</literal>. Изображение может быть разделено на разные части для
|
||
указания различных положений ползунка (например, вы можете иметь регулятор для
|
||
управления громкостью звука, изменяющийся с красного на зеленый при изменении его
|
||
уровня с минимального на максимальный.). <literal>hpotmeter</literal> может иметь
|
||
кнопку, которую можно таскать горизонтально. Параметры:
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
<literal>button</literal> - изображение, используемое для
|
||
кнопки (должно иметь три части одна под другой, как в случае
|
||
<link linkend="skin-button">кнопки</link>)
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<literal>bwidth</literal>, <literal>bheight</literal> - размер кнопки
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<literal>phases</literal> - изображение, используемое для
|
||
различных положений hpotmeter. Специальное значение <literal>NULL</literal>
|
||
может использоваться, если подобное изображение вам не нужно. Изображение
|
||
должно быть разделено вертикально на
|
||
<literal>numphases</literal> частей, как указано ниже:
|
||
<informalfigure><screen>
|
||
+--------------+
|
||
| положение #1 |
|
||
+--------------+
|
||
| положение #2 |
|
||
+--------------+
|
||
...
|
||
+--------------+
|
||
| положение #n |
|
||
+--------------+<!--
|
||
--></screen></informalfigure>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<literal>numphases</literal> - количество положений в изображении
|
||
<literal>phases</literal>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<literal>default</literal> - положение hpotmeter по-умолчанию
|
||
(в диапазоне от <literal>0</literal> до <literal>100</literal>)
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<literal>X</literal>, <literal>Y</literal> - позиция hpotmeter
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<literal>width</literal>, <literal>height</literal> - ширина и высота
|
||
<literal>hpotmeter</literal>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<literal>message</literal> - сообщение, генерируемое при изменении значения
|
||
<literal>hpotmeter</literal>
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-potmeter"/>potmeter = phases, numphases, default, X, Y, width, height, message
|
||
</literal></term>
|
||
<listitem><para>
|
||
<literal>hpotmeter</literal> без кнопки.
|
||
(Я предполагаю, что это означает повернутый вокруг,
|
||
но он реагирует только на перетаскивание по горизонтали.) Для описания параметров смотрите
|
||
<link linkend="skin-hpotmeter">hpotmeter</link>.
|
||
<literal>phases</literal> может быть равен <literal>NULL</literal>, но это совершенно
|
||
бесполезно, поскольку вы не сможете определить в каком положении
|
||
находится <literal>potmeter</literal>.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-font"/>font = fontfile, fontid
|
||
</literal></term>
|
||
<listitem><para>
|
||
Определяет шрифт. <literal>fontfile</literal> - это название файла описания шрифта
|
||
с расширением <filename>.fnt</filename> (не указывайте расширение здесь).
|
||
<literal>fontid</literal> используется для ссылки на шрифт
|
||
(смотрите <link linkend="skin-dlabel">dlabel</link> и
|
||
<link linkend="skin-slabel">slabel</link>). Может быть определено до 25 шрифтов.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-slabel"/>slabel = X, Y, fontid, "text"
|
||
</literal></term>
|
||
<listitem><para>
|
||
Размещает статическую метку на позиции <literal>X,Y</literal>. <literal>text</literal>
|
||
отображается, используя шрифт, определенный по <literal>fontid</literal>.
|
||
Текст - просто обычная строка (<literal>$x</literal> переменные не работают), которая должна
|
||
быть заключена в двойные кавычки (но символ " не может быть частью текста).
|
||
Метка отображается, используя шрифт определенный по <literal>fontid</literal>.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-dlabel"/>dlabel = X, Y, length, align, fontid, "text"
|
||
</literal></term>
|
||
<listitem>
|
||
<para>
|
||
Размещает динамическую метку на позиции <literal>X,Y</literal>. Метка зовется
|
||
динамической, потому что ее текст периодически обновляется. Максимальная длина
|
||
метки задается параметром <literal>length</literal> (ее высота равна высоте символа).
|
||
Если отображаемый текст шире этого значения, он будет скроллироваться,
|
||
иначе он выравнивается в пределах указанного пространства в соответствии со
|
||
значением параметра
|
||
<literal>align</literal>: <literal>0</literal> - вправо,
|
||
<literal>1</literal> - по центру, <literal>2</literal> - влево.
|
||
</para>
|
||
<para>
|
||
Отображаемый текст задается параметром <literal>text</literal>: Он должен быть
|
||
заключен в двойные кавычки (но символ " не может быть частью текста).
|
||
Метка отображается, используя шрифт, определяемый по <literal>fontid</literal>.
|
||
Вы можете использовать следующие переменные в тексте:
|
||
</para>
|
||
|
||
<informaltable>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row><entry>Переменная</entry><entry>Значение</entry></row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>$1</entry>
|
||
<entry>время воспроизведения в формате <emphasis>чч:мм:сс</emphasis></entry>
|
||
</row>
|
||
<row>
|
||
<entry>$2</entry>
|
||
<entry>время воспроизведения в формате <emphasis>мммм:сс</emphasis></entry>
|
||
</row>
|
||
<row>
|
||
<entry>$3</entry>
|
||
<entry>время воспроизведения формате <emphasis>чч</emphasis>(часы)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$4</entry>
|
||
<entry>время воспроизведения в формате <emphasis>мм</emphasis>(минуты)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$5</entry>
|
||
<entry>время воспроизведения в формате <emphasis>сс</emphasis>(секунды)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$6</entry>
|
||
<entry>длительность фильма в формате <emphasis>чч:мм:сс</emphasis></entry>
|
||
</row>
|
||
<row>
|
||
<entry>$7</entry>
|
||
<entry>длительность фильма в формате <emphasis>мммм:сс</emphasis></entry>
|
||
</row>
|
||
<row>
|
||
<entry>$8</entry>
|
||
<entry>время воспроизведения формате <emphasis>ч:мм:сс</emphasis></entry>
|
||
</row>
|
||
<row>
|
||
<entry>$v</entry>
|
||
<entry>кромкость в формате <emphasis>xxx.xx</emphasis>%</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$V</entry>
|
||
<entry>кромкость в формате <emphasis>xxx.xx</emphasis></entry>
|
||
</row>
|
||
<row>
|
||
<entry>$b</entry>
|
||
<entry>баланс в формате <emphasis>xxx.xx</emphasis>%</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$B</entry>
|
||
<entry>баланс в формате <emphasis>xxx.xx</emphasis></entry>
|
||
</row>
|
||
<row>
|
||
<entry>$$</entry>
|
||
<entry>символ $</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$a</entry>
|
||
<entry>символ ,соответствующий типу звука (нет: <literal>n</literal>,
|
||
моно: <literal>m</literal>, стерео: <literal>t</literal>)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$t</entry>
|
||
<entry>номер дорожки (в плейлисте)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$o</entry>
|
||
<entry>имя файла</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$f</entry>
|
||
<entry>имя файла в нижнем регистре</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$F</entry>
|
||
<entry>имя файла в верхнем регистре</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$T</entry>
|
||
<entry>
|
||
символ, соответствующий типу потока (файл: <literal>f</literal>,
|
||
Video CD: <literal>v</literal>, DVD: <literal>d</literal>,
|
||
URL: <literal>u</literal>)
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$p</entry>
|
||
<entry>
|
||
символ <keycap>p</keycap> (если фильм воспроизводится и шрифт имеет
|
||
символ <keycap>p</keycap>)
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$s</entry>
|
||
<entry>
|
||
символ <keycap>s</keycap> (если фильм остановлен и шрифт имеет
|
||
символ <keycap>s</keycap>)
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$e</entry>
|
||
<entry>
|
||
символ <keycap>e</keycap> (если фильм на паузе и шрифт имеет
|
||
символ <keycap>e</keycap>)
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$x</entry>
|
||
<entry>ширина фильма</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$y</entry>
|
||
<entry>высота фильма</entry>
|
||
</row>
|
||
<row>
|
||
<entry>$C</entry>
|
||
<entry>название используемого кодека</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<note><para>
|
||
Переменные <literal>$a, $T, $p, $s</literal> и <literal>$e</literal> все
|
||
возвращают символы, которые должны быть отображены в качестве специальных значков
|
||
(например, <keycap>e</keycap> - для значка паузы, который обычно выглядит как ||).
|
||
Вы должны иметь шрифт для обычных символов и отличающийся шрифт для значков.
|
||
Смотрите раздел о <link linkend="skin-fonts-symbols">значках</link>
|
||
для дополнительной информации.
|
||
</para></note>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="skin-file-subwindow">
|
||
<title>Вспомогательное окно</title>
|
||
<para>
|
||
Следующие элементы могут быть использованы в блоке
|
||
'<literal>window = sub</literal>' . . . '<literal>end</literal>' .
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-sub-base"/>base = image, X, Y, width, height
|
||
</literal></term>
|
||
<listitem><para>
|
||
Изображение, отображаемое в окне. Окно будет появляться в указанной позиции
|
||
<literal>X,Y</literal> экрана (<literal>0,0</literal> - верхний левый угол).
|
||
Вы можете указать <literal>-1</literal> для центра и <literal>-2</literal>
|
||
для правого (<literal>X</literal>) и нижнего (<literal>Y</literal>) края.
|
||
Окно будет того же размера, что и изображение. <literal>width</literal> и
|
||
<literal>height</literal> означают размер окна; они необязательны
|
||
(если отсутствуют, окно будет иметь те же размеры, что и изображение).
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-background"/>background = R, G, B
|
||
</literal></term>
|
||
<listitem><para>
|
||
Позволяет указать цвет фона. Это полезно, если изображение меньше окна.
|
||
<literal>R</literal>, <literal>G</literal> и <literal>B</literal>
|
||
указывают красную, зеленую и синюю составляющие цвета (каждое из них -
|
||
десятичное число от 0 до 255).
|
||
</para></listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="skin-file-menu">
|
||
<title>Меню со скинами</title>
|
||
<para>
|
||
Как было описано выше, меню отображается при помощи двух картинок. Нормальные
|
||
элементы меню берутся из изображения, указанного элементом <literal>base</literal>,
|
||
в то время как выделенный в данный момент элемент берется из изображения,
|
||
указанного элементом <literal>selected</literal>. Вы должны определить позицию и
|
||
размер каждого элемента меню.
|
||
</para>
|
||
|
||
<para>
|
||
Следующие элементы можно использовать в блоке
|
||
'<literal>window = menu</literal>'. . .'<literal>end</literal>'.
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-menu-base"/>base = image
|
||
</literal></term>
|
||
<listitem><para>
|
||
Изображение для нормальных элементов меню.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-selected"/>selected = image
|
||
</literal></term>
|
||
<listitem><para>
|
||
Изображение, показывающее меню со всеми выделенными элементами.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>
|
||
<anchor id="skin-menu"/>menu = X, Y, width, height, message
|
||
</literal></term>
|
||
<listitem><para>
|
||
Определяет позицию <literal>X,Y</literal> и размер элемента меню в изображении.
|
||
<literal>message</literal> - это сообщение, генерируемое, когда кнопка мыши будет отпущена
|
||
над элементом меню.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="skin-fonts">
|
||
<title>Шрифты</title>
|
||
<para>
|
||
Как описано в разделе, посвященному частям скина, шрифт определяется
|
||
изображением и файлом описания. Вы можете поместить символы в любое место изображения,
|
||
но будьте уверены, что их позиция и размер точно указаны в файле описания.
|
||
</para>
|
||
|
||
<para>
|
||
Файл описания шрифта (с расширением <filename>.fnt</filename>) может иметь комментарии,
|
||
начинающиеся с '<literal>;</literal>'. Файл должен иметь строку вида
|
||
<anchor id="skin-font-image"/>
|
||
<programlisting>image = <replaceable>image</replaceable></programlisting>,
|
||
где <literal><replaceable>image</replaceable></literal> - это название
|
||
файла с изображением, используемым для шрифта (расширение указывать необязательно).
|
||
<anchor id="skin-font-char"/>
|
||
<programlisting>"char" = X, Y, width, height</programlisting>
|
||
Здесь <literal>X</literal> и <literal>Y</literal> указывают позицию символа
|
||
<literal>char</literal> в изображении (<literal>0,0</literal> - верхний левый угол),
|
||
<literal>width</literal> и <literal>height</literal> - размеры символа в пикселах.
|
||
</para>
|
||
|
||
<para>
|
||
Этот пример определяет символы A, B, C, используя <filename>font.png</filename>.
|
||
<programlisting>
|
||
; Can be "font" instead of "font.png".
|
||
image = font.png
|
||
|
||
; Three characters are enough for demonstration purposes :-)
|
||
"A" = 0,0, 7,13
|
||
"B" = 7,0, 7,13
|
||
"C" = 14,0, 7,13
|
||
</programlisting>
|
||
</para>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="skin-fonts-symbols">
|
||
<title>Значки</title>
|
||
|
||
<para>
|
||
Некоторые символы имеют специальное значение, когда возвращаются некоторыми переменными,
|
||
используемыми в <link linkend="skin-dlabel">dlabel</link>. Подразумевается, что эти символы
|
||
должны отображаться в виде значков, так для DVD потока можно отображать значок
|
||
красивого логотипа DVD вместо символа '<literal>d</literal>'.
|
||
</para>
|
||
<para>
|
||
Следующая таблица содержит список всех символов, которые могут использоваться для
|
||
отображения значков (и поэтому требуют другой шрифт).
|
||
</para>
|
||
|
||
<informaltable>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row><entry>Символ</entry><entry>Значок</entry></row>
|
||
</thead>
|
||
<tbody>
|
||
<row><entry><keycap>p</keycap></entry><entry>воспроизведение</entry></row>
|
||
<row><entry><keycap>s</keycap></entry><entry>стоп</entry></row>
|
||
<row><entry><keycap>e</keycap></entry><entry>пауза</entry></row>
|
||
<row><entry><keycap>n</keycap></entry><entry>без звука</entry></row>
|
||
<row><entry><keycap>m</keycap></entry><entry>звук моно</entry></row>
|
||
<row><entry><keycap>t</keycap></entry><entry>звук стерео</entry></row>
|
||
<row><entry><keycap>f</keycap></entry><entry>файл</entry></row>
|
||
<row><entry><keycap>v</keycap></entry><entry>Video CD</entry></row>
|
||
<row><entry><keycap>d</keycap></entry><entry>DVD</entry></row>
|
||
<row><entry><keycap>u</keycap></entry><entry>URL</entry></row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="skin-gui">
|
||
<title>GUI сообщения</title>
|
||
<para>
|
||
Это сообщения, которые могут генерироваться кнопками, ползунками и элементами меню.
|
||
</para>
|
||
|
||
<variablelist>
|
||
<title>Управление воспроизведением:</title>
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evNext</emphasis></term>
|
||
<listitem><para>
|
||
Переход к следующему элементу списка воспроизведения.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evPause</emphasis></term>
|
||
<listitem><para>
|
||
Вместе с <literal>evPlaySwitchToPause</literal> формирует переключатель паузы.
|
||
Может быть использовано для общей кнопки воспроизведение/пауза. Оба сообщения
|
||
должны быть назначены кнопкам, находящимся практически в одной точке окна.
|
||
Это сообщение ставит воспроизведение на паузу и показывает изображение кнопки с
|
||
назначенным сообщением <literal>evPlaySwitchToPause</literal>
|
||
(чтобы показать, что кнопка может быть нажата для продолжения воспроизведения).
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evPlay</emphasis></term>
|
||
<listitem><para>
|
||
Старт воспроизведения.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evPlaySwitchToPause</emphasis></term>
|
||
<listitem><para>
|
||
Противоположность <literal>evPauseSwitchToPlay</literal>. Это сообщение
|
||
запускает воспроизведение и показывает изображение кнопки с
|
||
назначенным сообщением <literal>evPauseSwitchToPlay</literal>
|
||
(чтобы показать, что кнопка может быть нажата для включения паузы).
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evPrev</emphasis></term>
|
||
<listitem><para>
|
||
Переход к предыдущему элементу списка воспроизведения.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evStop</emphasis></term>
|
||
<listitem><para>
|
||
Останавливает воспроизведение.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<variablelist>
|
||
<title>Перемещение:</title>
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evBackward10sec</emphasis></term>
|
||
<listitem><para>
|
||
Перемещение назад на 10 секунд.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evBackward1min</emphasis></term>
|
||
<listitem><para>
|
||
Перемещение назад на 1 минуту.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evBackward10min</emphasis></term>
|
||
<listitem><para>
|
||
Перемещение назад на 10 минут.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evForward10sec</emphasis></term>
|
||
<listitem><para>
|
||
Перемещение вперед на 10 секунд.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evForward1min</emphasis></term>
|
||
<listitem><para>
|
||
Перемещение вперед на 1 минуту.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evForward10min</emphasis></term>
|
||
<listitem><para>
|
||
Перемещение вперед на 10 минут.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evSetMoviePosition</emphasis></term>
|
||
<listitem><para>
|
||
Перемещается к позиции (может использоваться ползунком;
|
||
используется относительное (0-100%) положение ползунка).
|
||
</para></listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<variablelist>
|
||
<title>Управление видео:</title>
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evHalfSize</emphasis></term>
|
||
<listitem><para>
|
||
Установить половинный размер окна.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evDoubleSize</emphasis></term>
|
||
<listitem><para>
|
||
Установить двойной размер окна.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evFullScreen</emphasis></term>
|
||
<listitem><para>
|
||
Включить/выключить полноэкранный режим.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evNormalSize</emphasis></term>
|
||
<listitem><para>
|
||
Установить нормальный размер окна.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<variablelist>
|
||
<title>Управление звуком:</title>
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evDecAudioBufDelay</emphasis></term>
|
||
<listitem><para>
|
||
Уменьшить задержку буфера звука.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evDecBalance</emphasis></term>
|
||
<listitem><para>
|
||
Уменьшить баланс.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evDecVolume</emphasis></term>
|
||
<listitem><para>
|
||
Уменьшить громкость.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evIncAudioBufDelay</emphasis></term>
|
||
<listitem><para>
|
||
Увеличить задержку буфера звука.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evIncBalance</emphasis></term>
|
||
<listitem><para>
|
||
Увеличить баланс.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evIncVolume</emphasis></term>
|
||
<listitem><para>
|
||
Увеличить громкость.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evMute</emphasis></term>
|
||
<listitem><para>
|
||
Выключить/включить звук.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evSetBalance</emphasis></term>
|
||
<listitem><para>
|
||
Установить баланс (может использоваться ползунком;
|
||
используется относительное (0-100%) значение ползунка),
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evSetVolume</emphasis></term>
|
||
<listitem><para>
|
||
Установить громкость (может использоваться ползунком;
|
||
используется относительное (0-100%) значение ползунка),
|
||
</para></listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<variablelist>
|
||
<title>Разное:</title>
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evAbout</emphasis></term>
|
||
<listitem><para>
|
||
Открыть окно 'О программе'.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evDropSubtitle</emphasis></term>
|
||
<listitem><para>
|
||
Отключает субтитры, использующиеся в данный момент.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evEqualizer</emphasis></term>
|
||
<listitem><para>
|
||
Включает/выключает эквалайзер.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evExit</emphasis></term>
|
||
<listitem><para>
|
||
Выход из программы.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evIconify</emphasis></term>
|
||
<listitem><para>
|
||
Сворачивает окно в иконку.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evLoad</emphasis></term>
|
||
<listitem><para>
|
||
Открывает файл (открывая окно навигации, в котором вы можете выбрать файл).
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evLoadPlay</emphasis></term>
|
||
<listitem><para>
|
||
Делает то же, что и <literal>evLoad</literal>, но запускает вопроизведение файла
|
||
автоматически после его загрузки.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evLoadSubtitle</emphasis></term>
|
||
<listitem><para>
|
||
Загружает файл с субтитрами (с диалогом выбора файла).
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evLoadAudioFile</emphasis></term>
|
||
<listitem><para>
|
||
Загружает звуковой файл (с диалогом выбора файла).
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evNone</emphasis></term>
|
||
<listitem><para>
|
||
Пустое сообщение, не имеет действий (за исключением, возможно, Subversion версий :-)).
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evPlaylist</emphasis></term>
|
||
<listitem><para>
|
||
Открывае/закрывает окно со списком воспроизведения.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evPlayDVD</emphasis></term>
|
||
<listitem><para>
|
||
Пытается открыть диск в указанном устройстве DVD-ROM.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evPlayVCD</emphasis></term>
|
||
<listitem><para>
|
||
Пытается открыть диск в указанном устройстве CD-ROM.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evPreferences</emphasis></term>
|
||
<listitem><para>
|
||
Открывает окно с настройками.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evSetAspect</emphasis></term>
|
||
<listitem><para>
|
||
Включает показ пропорций изображения.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evSetURL</emphasis></term>
|
||
<listitem><para>
|
||
Отображает диалог ввода URL.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><emphasis role="bold">evSkinBrowser</emphasis></term>
|
||
<listitem><para>
|
||
Открывает окно навигации по скинам.
|
||
</para></listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="skin-quality">
|
||
<title>Создание качественного скина</title>
|
||
|
||
<para>
|
||
Итак, вы прочитали о создании скина для
|
||
<application>MPlayer</application> GUI, прекрасно нарисовали все в
|
||
<application>Gimp</application> и желаете отправить скин нам?
|
||
Прочтите некоторые руководства для избежания основных ошибок и
|
||
создания высококачественного скина.
|
||
</para>
|
||
|
||
<para>
|
||
Мы хотим, чтобы скины, добавляемые нами в репозиторий, удовлетворяли
|
||
некоторым стандартам качества. Есть также несколько вещей,
|
||
сделающих вашу жизнь проще.
|
||
</para>
|
||
|
||
<para>
|
||
В качестве примера можете посмотреть на скин <systemitem>Blue</systemitem>,
|
||
начиная с версии 1.5, он удовлетворяет всем критериям, указанным ниже.
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
Каждый скин должна идти с файлом
|
||
<filename>README</filename>, содержащим информацию о вас, авторе,
|
||
правах на копирование, лицензионным уведомлением и всем другим,
|
||
что вам захочется добавить. Если хотите иметь историю изменений, то
|
||
этот файл - хорошее место для нее.
|
||
</para></listitem>
|
||
|
||
<listitem><para>
|
||
Должен быть файл <filename>VERSION</filename>,
|
||
содержащий только номер версии скина в одной строке
|
||
(например 1.0).
|
||
</para></listitem>
|
||
|
||
<listitem><para>
|
||
Горизонтальные и вертикальные элементы управления
|
||
(такие как ползунки громкости или положения) должны иметь
|
||
кнопку-ползунок точно отцентрированную по центру самого ползунка.
|
||
Должно быть возможно двигать кнопку к обоим концам ползунка,
|
||
но не выходить за них.
|
||
</para></listitem>
|
||
|
||
<listitem><para>
|
||
Элементы скина должны иметь правильные размеры,
|
||
указанные в файле skin. Если это не так, вы сможете щелкнуть, например,
|
||
мимо кнопки и все равно она сработает, или наоборот кликнуть на нее,
|
||
не вызвав никакого действия.
|
||
</para></listitem>
|
||
|
||
<listitem><para>
|
||
Файл <filename>skin</filename> должен быть набран аккуратно
|
||
и не должен содержать символов табуляции. Аккуратно набран означает,
|
||
что числа должны выравниваться стройно в столбцы.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect1>
|
||
</appendix>
|