C.2. Файл skin
Пред. | Приложение C. Формат скинов MPlayer | След.

## C.2. Файл skin

Как описано выше, это файл конфигурации скина. он строчно-орентирован: строки комментариев начинаются с символа '`;`' в начале строки (только пробелы и табуляция допускается перед символом '`;`').

Файл создается из разделов. Каждый описывает скин для приложения и имеет следующую форму:

    section = название раздела
    .
    .
    .
    end

В данный момент приложение одно, так что вам потребуется только один раздел: его название movieplayer.

В пределах раздела каждое окно описывается блоком следующей структуры:

    window = название окна
    .
    .
    .
    end

где `название окна` может быть одной из этих строк:

- main - главное окно

- sub - вспомогательное окно

- menu - меню со скинами

- playbar - полоса воспроизведения

(Блоки sub и menu опциональные - необязательно создавать меню или оформлять вспомогательное окно.)

В пределах блока window вы можете описать каждый элемент окна строкой в следующем формате:

    item = parameter

Где `item` - это строка, определяющая тип элемента GUI, `parameter` - числовое или текстовое значение (или список значений, разделенных запятой).

Если собрать все вместе, файл целиком будет выглядеть примерно так:

    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

Название файла с изображением должно указываться без лидирующих каталогов - изображения ищутся в каталоге `skins`. Вы можете (но не обязаны) указать расширение файла. Если файл не существует, MPlayer пытается загрузить файл `<filename>.<ext>`, где `png` и `PNG` пробуются вместо `<ext>` (в этом порядке). Будет использоваться первый найденный файл.

Вот пример, чтобы было понятнее. Предположим вы имеете изображение, называющееся `main.png`, которое используете для главного окна:

    base = main, -1, -1

MPlayer пытается загрузить файлы `main`, `main.png`, `main.PNG`.

И наконец несколько слов о позиционировании. Главное и вспомогательное окна могут быть размещены в разных углах экрана указанием `X` и `Y` координат. `0` - это верхний и левый край, `-1` - центр и `-2` - правый или нижний, как указано на иллюстрации:

    (0, 0)----(-1, 0)----(-2, 0)
      |          |          |
      |          |          |
    (0,-1)----(-1,-1)----(-2,-1)
      |          |          |
      |          |          |
    (0,-2)----(-1,-2)----(-2,-2)

### C.2.1. Главное окно и полоса воспроизведения

Ниже - список элементов, которые можно указывать в '`window = main`' ... '`end`', и '`window = playbar`' ... '`end`' блоках.

`base = image, X, Y`

  Позволяет вам указать фоновое изображение, используемое в главном окне. Окно будет появляться в указанной `X,Y` позиции на экране и иметь размер изображения.

  ### Замечание

  Эти координаты пока не работают для окна отображения.

  ### Внимание

  Прозрачные регионы в изображении (цвет #FF00FF) станут черными на X сервере без расширения XShape. Ширина картинки должна делиться на 8.

`button = image, X, Y, width, height, message`

  Размещает кнопку размера `width` * `height` на позиции `X,Y`. Указанное сообщение `message` генерируется при щелчке на кнопку. Изображение `image`, должно иметь три части одна ниже другой (в соответствии с возможными состояниями кнопки), как здесь:

      +------------+
      |  нажата    |
      +------------+
      |  отпущена  |
      +------------+
      |  отключена |
      +------------+

`decoration = enable|disable`

  Включает или выключает декорации главного окна, осуществляемые window manager . По-умолчанию disable.

  ### Замечание

  Это не работает для окна отображения, в этом нет надобности.

`hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message`

`vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message`

  Размещает горизонтальный (hpotmeter) или вертикальный (vpotmeter) ползунок размера `width` * `height` на позиции `X,Y`. Изображение может быть разделено на разные части для указания различных положений ползунка (например, вы можете иметь регулятор для управления громкостью звука, изменяющийся с красного на зеленый при изменении его уровня с минимального на максимальный.). `hpotmeter` может иметь кнопку, которую можно таскать горизонтально. Параметры:

  - `button` - изображение, используемое для кнопки (должно иметь три части одна под другой, как в случае кнопки)

  - `bwidth`, `bheight` - размер кнопки

  - `phases` - изображение, используемое для различных положений hpotmeter. Специальное значение `NULL` может использоваться, если подобное изображение вам не нужно. Изображение должно быть разделено вертикально на `numphases` частей, как указано ниже:

        +--------------+
        | положение #1 |
        +--------------+
        | положение #2 |
        +--------------+
             ...
        +--------------+
        | положение #n |
        +--------------+

  - `numphases` - количество положений в изображении `phases`

  - `default` - положение hpotmeter по-умолчанию (в диапазоне от `0` до `100`)

  - `X`, `Y` - позиция hpotmeter

  - `width`, `height` - ширина и высота `hpotmeter`

  - `message` - сообщение, генерируемое при изменении значения `hpotmeter`

`potmeter = phases, numphases, default, X, Y, width, height, message`

  `hpotmeter` без кнопки. (Я предполагаю, что это означает повернутый вокруг, но он реагирует только на перетаскивание по горизонтали.) Для описания параметров смотрите hpotmeter. `phases` может быть равен `NULL`, но это совершенно бесполезно, поскольку вы не сможете определить в каком положении находится `potmeter`.

`font = fontfile, fontid`

  Определяет шрифт. `fontfile` - это название файла описания шрифта с расширением `.fnt` (не указывайте расширение здесь). `fontid` используется для ссылки на шрифт (смотрите dlabel и slabel). Может быть определено до 25 шрифтов.

`slabel = X, Y, fontid, "text"`

  Размещает статическую метку на позиции `X,Y`. `text` отображается, используя шрифт, определенный по `fontid`. Текст - просто обычная строка (`$x` переменные не работают), которая должна быть заключена в двойные кавычки (но символ " не может быть частью текста). Метка отображается, используя шрифт определенный по `fontid`.

`dlabel = X, Y, length, align, fontid, "text"`

  Размещает динамическую метку на позиции `X,Y`. Метка зовется динамической, потому что ее текст периодически обновляется. Максимальная длина метки задается параметром `length` (ее высота равна высоте символа). Если отображаемый текст шире этого значения, он будет скроллироваться, иначе он выравнивается в пределах указанного пространства в соответствии со значением параметра `align`: `0` - вправо, `1` - по центру, `2` - влево.

  Отображаемый текст задается параметром `text`: Он должен быть заключен в двойные кавычки (но символ " не может быть частью текста). Метка отображается, используя шрифт, определяемый по `fontid`. Вы можете использовать следующие переменные в тексте:

  Переменная | Значение
  --- | ---
  $1 | время воспроизведения в формате чч:мм:сс
  $2 | время воспроизведения в формате мммм:сс
  $3 | время воспроизведения формате чч(часы)
  $4 | время воспроизведения в формате мм(минуты)
  $5 | время воспроизведения в формате сс(секунды)
  $6 | длительность фильма в формате чч:мм:сс
  $7 | длительность фильма в формате мммм:сс
  $8 | время воспроизведения формате ч:мм:сс
  $v | кромкость в формате xxx.xx%
  $V | кромкость в формате xxx.xx
  $b | баланс в формате xxx.xx%
  $B | баланс в формате xxx.xx
  $$ | символ $
  $a | символ ,соответствующий типу звука (нет: `n`, моно: `m`, стерео: `t`)
  $t | номер дорожки (в плейлисте)
  $o | имя файла
  $f | имя файла в нижнем регистре
  $F | имя файла в верхнем регистре
  $T | символ, соответствующий типу потока (файл: `f`, Video CD: `v`, DVD: `d`, URL: `u`)
  $p | символ p (если фильм воспроизводится и шрифт имеет символ p)
  $s | символ s (если фильм остановлен и шрифт имеет символ s)
  $e | символ e (если фильм на паузе и шрифт имеет символ e)
  $x | ширина фильма
  $y | высота фильма
  $C | название используемого кодека

  ### Замечание

  Переменные `$a, $T, $p, $s` и `$e` все возвращают символы, которые должны быть отображены в качестве специальных значков (например, e - для значка паузы, который обычно выглядит как ||). Вы должны иметь шрифт для обычных символов и отличающийся шрифт для значков. Смотрите раздел о значках для дополнительной информации.

### C.2.2. Вспомогательное окно

Следующие элементы могут быть использованы в блоке '`window = sub`' . . . '`end`' .

`base = image, X, Y, width, height`

  Изображение, отображаемое в окне. Окно будет появляться в указанной позиции `X,Y` экрана (`0,0` - верхний левый угол). Вы можете указать `-1` для центра и `-2` для правого (`X`) и нижнего (`Y`) края. Окно будет того же размера, что и изображение. `width` и `height` означают размер окна; они необязательны (если отсутствуют, окно будет иметь те же размеры, что и изображение).

`background = R, G, B`

  Позволяет указать цвет фона. Это полезно, если изображение меньше окна. `R`, `G` и `B` указывают красную, зеленую и синюю составляющие цвета (каждое из них - десятичное число от 0 до 255).

### C.2.3. Меню со скинами

Как было описано выше, меню отображается при помощи двух картинок. Нормальные элементы меню берутся из изображения, указанного элементом `base`, в то время как выделенный в данный момент элемент берется из изображения, указанного элементом `selected`. Вы должны определить позицию и размер каждого элемента меню.

Следующие элементы можно использовать в блоке '`window = menu`'. . .'`end`'.

`base = image`

  Изображение для нормальных элементов меню.

`selected = image`

  Изображение, показывающее меню со всеми выделенными элементами.

`menu = X, Y, width, height, message`

  Определяет позицию `X,Y` и размер элемента меню в изображении. `message` - это сообщение, генерируемое, когда кнопка мыши будет отпущена над элементом меню.

Пред. | Уровень выше | След.
C.1. Обзор | Начало | C.3. Шрифты