Mercurial > mplayer.hg
changeset 19864:b7314f750a02
translation by Vladimir Voroshilov, voroshil gmail com
author | voroshil |
---|---|
date | Sun, 17 Sep 2006 12:06:02 +0000 |
parents | 4fce64943ac0 |
children | 85f9fdd032b3 |
files | DOCS/xml/ru/skin.xml |
diffstat | 1 files changed, 1156 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/xml/ru/skin.xml Sun Sep 17 12:06:02 2006 +0000 @@ -0,0 +1,1156 @@ +<?xml version="1.0" encoding="koi8-r"?> +<!-- synced with r19081 --> +<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> +И наконец несколько слов о позиционировании. Главное и вспомогательное окна могут +быть размещены в разных углах экрана указанием <literal>X</literal> и +<literal>Y</literal> координат. <literal>0</literal> - это верхний и левый край, +<literal>-1</literal> - центр и <literal>-2</literal> - правый или нижний, как +указано на иллюстрации: +</para> +<informalfigure> +<screen> +(0, 0)----(-1, 0)----(-2, 0) + | | | + | | | +(0,-1)----(-1,-1)----(-2,-1) + | | | + | | | +(0,-2)----(-1,-2)----(-2,-2) +</screen> +</informalfigure> + +<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> + +<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> может иметь +кнопку, которую можно таскать горизонтально. Параметры: + </para> + <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> частей, как указано ниже: + </para> +<informalfigure> +<screen> ++--------------+ +| положение #1 | ++--------------+ +| положение #2 | ++--------------+ + ... ++--------------+ +| положение #n | ++--------------+ +</screen> +</informalfigure> + </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> + + </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> без кнопки. +<!-- FIXME need correct translation +(I guess it is meant to be +turned around, but it reacts to horizontal dragging only.) +--> +(Я предполагаю, что это означает повернутый вокруг, +но он реагирует только на горизонтальное перетаскивание.) Для описания параметров смотрите +<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> +</listitem> + +</varlistentry> +</variablelist> + +<note><para> +Переменные <literal>$a, $T, $p, $s</literal> и <literal>$e</literal> все +возвращают символы, которые должны быть отображены в качестве специальных значков +(например, <keycap>e</keycap> - для значка паузы, который обычно выглядит как ||). +Вы должны иметь шрифт для обычных символов и отличающийся шрифт для значков. +Смотрите раздел о <link linkend="skin-fonts-symbols">значках</link> +для дополнительной информации. +</para></note> +</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>