# Шкурки. Теория - Справка Light Alloy

Как известно, внешний вид Light Alloy определяется шкурками. Шкурки позволяют определить внешний вид таких элементов:

- главное окно с хинтами к нему;
- контекстные меню;
- полноэкранные окна открытия/добавления файлов/субтитров

## Формат шкурки

Шкурка представляет собой файл с расширением LAS, расположенный в программной папке Light Alloy \ Skins. Фактически, это ZIP-архив с изменённым расширением. Это позволяет избегать вопросов пользователя о том, что делать с выкачанным архивом и куда класть распакованные файлы.

Стоит заметить, что в процессе разработки использовать ZIP-архив, да ещё и переименованный, неудобно. Поэтому Light Alloy способен работать и с другими форматами шкурок:

- архив с расширением .zip;
- распакованная шкурка.

Архив с расширением .zip - это обычная шкурка, у которой просто сохранили оригинальное расширение архива. Такой вариант шкурки удобен, когда надо оперативно отправить кому-либо шкурку на анализ или оценку.

Распакованная шкурка - это просто папка с содержимым. Шкурка в таком виде отлично подходит для активной разработки, поскольку есть быстрый и прямой доступ ко всем файлам шкурки. Кроме того, помимо файлов в папке можно хранить также исходники и образцы. В меню настроек распакованные шкурки легко узнать: их название берётся в [квадратные скобки].

## Состав файла шкурки

Внутри шкурки находятся такие файлы:

- Preview.png
- SkinInfo.txt
- Interface.xml
- Skin.png (.bmp)

Пройдёмся по этим файлам подробнее.

### Preview.png

Этот файл предпросмотра. Он служит для представления шкурки в настройках:

Параметры этого файла:

- имя файла: "Preview.png" (менять нельзя);
- размеры: 200х150 пикс. (любые другие размеры будут подогнаны под этот интерполяцией по соседним пикселям);
- глубина цвета: любая;
- поддержка прозрачности: полная;
- параметры сжатия: любые.

Что изображают в файле предпросмотра? В общем и целом, это остаётся на усмотрение автора, но основные направления этого изображения, обычно, таковы:

1. Этот рисунок - визитка. Тут должно быть изображение, которое демонстрирует основную идею шкурки.
2. Как правило, цветовая гамма предпросмотра перекликается с гаммой окна проигрывателя в этой шкурке.
3. В большинстве случаев в предпросмотре изображается стилизованное название шкурки.
4. Довольно часто изображается стилизованный логотип проигрывателя.

Обратите внимание: нет смысла изображать предпросмотр шкурки, поскольку двойной щелчок её примеривает на сам проигрыватель. А на нём, как очевидно, "предпросмотреть" шкурку намного удобнее и нагляднее.

### SkinInfo.txt

Этот файл работает в паре с предыдущим. Он, в дополнение к Preview.png, представляет шкурку в настройках. Но уже текстовую часть.

Параметры этого файла:

- имя файла: "skinInfo.txt" (менять нельзя);
- кодировка: UTF-8 with signature (она же - UTF-8 BOM);
- язык заполнения: как правило, английский (по крайней мере буквы должны быть английскими).

Внутри skinInfo.txt выглядит примерно так:

SkinTitle=Dub SkinAuthor=Dvigok, Gilorn SkinVer=4.7.3 SkinWWW=http://www.light-alloy.ru/forum/skins/dub/ SkinCmt=Official skin SkinAudio=0

Обратите внимание: значение идёт сразу после знака "=". Пробел сразу после "=" недопустим, поскольку он может привести к некорректному отображению информации в проигрывателе. Но уже внутри значения пробелы использовать можно без ограничений.

Параметр | Значение
--- | ---
SkinTitle | Пишется название шкурки. Рекомендуется не использовать в названии [квадратные скобки], поскольку такими скобками обозначается распакованная шкурка.
SkinAuthor | Указывается автор шкурки. Или несколько авторов. Здесь не указываются реставраторы шкурки (не касается расширенных портов и альтернативных версий шкурки; в таких случаях действуйте на своё усмотрение).
SkinVer | Указывается версия шкурки. Сейчас используются два метода назначения версий шкурки:

1. независимый:

- стандартный подход, как у программ:
- первая финальная версия - v1.0.0
- исправление ошибок - v1.0.1
- мелкое/среднее добавление или изменение - v1.1.0
- крупное/глобальное изменение - v2.0.0

2. зависимый:

- идёт привязка к версиям Light Alloy:
- первая финальная версия имеет версию, аналогичную той версии Light Alloy, на которой шкурка гарантированно будет работать, например - v4.7.0.1
- если происходит изменение шкурки без использования дополнительных возможностей - v4.7.0.2
- если происходит изменение шкурки с использованием дополнительных возможностей - например уточнением бордюра в соответствии с нововведением в Light Alloy 4.7.3 - v4.7.3.1

Только автор шкурки определяет, какой метод больше отвечает его интересам.
SkinWWW | Адрес шкурки или адрес автора. В большинстве своём здесь указывают адрес шкурки на форуме Light Alloy, но можно указать свой сайт.
SkinCmt | Любая дополнительная информация по шкуре. Помните: в окне настроек под неё отводится только одна строка. Учитывайте это. Кстати здесь можно указать имя (или псевдоним) реставратора шкурки.
SkinAudio | Строка, согласно которой шкурка считается обычной (если "0") или аудиошкуркой (если "1"). Соответственно шкурка отображается или в общем перечне или в перечне шкурок аудиорежима.

### Interface.xml

Это файл разметки. Он как бы объясняет, откуда именно брать графические элементы и куда именно их писать.

Параметры этого файла:

- имя файла: "Interface.xml" (менять нельзя);
- кодировка: UTF-8 with signature (она же - UTF-8 BOM);
- язык заполнения: для комментариев - любой удобный.

Interface.xml состоит из трёх частей:

- Объявления - присвоение имён фрагментам изображений (единичный элемент называется "константа"). Пример:

<IMAGE id="Hint" file="main.bmp"> <AREA id="Lclick" pos="0,235" size="22,22"/> <AREA id="Rclick" pos="23,235" size="22,22"/> </IMAGE>

- Интерпретации графических шрифтов - назначение фрагментам изображения символов. Пример:

<FONT id="Digits" img="FT.Digits" chars="0123456789: &lt;&gt;_"/>

- Применения - создание кнопок и других управляющих элементов с помощью констант и функций (единичный элемент называется "контрол"). Пример:

<CONTROL type="Panel" bg="Ft.PosBG" pos="145,38" size="130,18"> <CONTROL type="Text" pos="3,1" size="69,14" font="Digits" text=" {POS}_&gt;_"/> <CONTROL type="Text" pos="72,1" size="51,14" font="Digits_dur" text="{DUR}"/> </CONTROL>

Блоков каждого из трёх типов может быть несколько. Некоторые из блоков имеют фиксированные названия, некоторые - нет.

Подробности работы с "Interface.xml" описаны в практической части.

### Skin.png (.bmp)

Это основной источник изображений для шкурки. Может быть представлен как одним файлом, так и несколькими. Типичный образец:

Файлы изображений - единственные файлы в шкурках, требования к которым вообще отсутствуют (кроме формата файла: BMP или PNG). Однако, чем больше размеры этого файла, тем больше проигрыватель будет потреблять оперативной памяти.

Обратите внимание: в PNG-формате в данном случае прозрачность не поддерживается - она будет сведена в непрозрачный вид с помощью белой подложки.

## Ограничения шкурок для Light Alloy

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

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