Шкурки. Справочник - Справка Light Alloy

Вся информация по шкуркам в виде справочника.

Все элементы Light Alloy

Здесь перечислены все элементы, которые на данный момент возможно использовать в Light Alloy.

ТипЭлементы Пример синтаксиса Характеристика
Контур Контур окна <IMAGE id="HD" file="header.bmp"> <AREA id="brd" pos="0,0" size="210,128"/> </IMAGE> <CTLDEF id="WndBorder" type="Panel" bg="HD.brd" size="29,127" bgsplit="14,26" border_size="3,2,3,4"/> Рамка вокруг окна проигрывателя (здесь и далее под окном проигрывателя будет подразумеваться только основное окно). Особенности:
  • только здесь нижняя и правая часть изображения не разрезаются, а растягиваются.
  • Толщина может быть любой, в том числе - нулевой.
  • Присутствие обязательно (даже при нулевой толщине).
Панель Верхняя (заголовок)
Нижняя (панель управления)
Панель списка
Плавающие панели
<IMAGE id="FT" file="footer.bmp"> <AREA id="bg" pos="0,0" size="224,104"/> </IMAGE> <CTLDEF id="CtlPanel" type="Panel" bg="FT.bg" size="400,104" bgsplit="110,103"> </CONTROL> Панель, на которой располагаются все контролы. По сути это - контейнер. Положение трёх предопределённых панелей (верхней, нижней, панели списка) определено жёстко. В шкурке можно менять только их высоту. Плавающие панели могут располагаться где угодно внутри предопределённых панелей.
Тем не менее ширина важна даже для предопределённых панелей. Она должна быть больше, чем ширина с учётом каждого отдельно взятого контрола (с учётом его позиции и размера, но без учёта других контролов). Иначе шкурка не будет корректно отображаться до перезагрузки проигрывателя.
Кнопка Файл
  • Открыть файл
  • Информация о файле
  • Воспроизвести DVD-диск
  • Открыть папку с DVD
  • Информация о файле на экране
  • Полноэкранное меню открытия файлов
  • Каталог интернет радиостанций
Воспроизведение
  • Воспроизведение / Пауза с фиксацией
  • Стоп (выгрузка файла)
  • Кадр вперёд
  • Изменение скорости с фиксацией
  • Увеличить скорость воспроизведения
  • Уменьшить скорость воспроизведения
Перемотка
  • Сделать закладку на таймлане
  • Отменить вступление / окончание фильма
Окно
  • Поверх всех окон с фиксацией
  • Окно/Весь экран с фиксацией
  • Первоначальный размер
  • Максимизировать (развернуть) с фиксацией
  • Минимизировать (свернуть)
Список
  • Предыдущий по списку
  • Список с фиксацией
  • Следующий по списку
  • Проиграть выбранный
  • Добавить файл(ы) в список
  • Добавить папку в список
  • Удалить из списка
  • Очистить список
  • Переместить выше
  • Переместить ниже
  • Случайный порядок воспроизведения с фиксацией
  • Закладки в списке с фиксацией
  • Повтор списка с фиксацией
  • Таблица по списку
  • Сохранить список
  • Перейти к файлу
  • Отсортировать список
  • Перемешать список
  • Поиск в списке
Звук
  • Отключить звук с фиксацией
  • Переключить аудио-дорожку
  • Настройки звука
  • Радио: начать/остановить запись с фиксацией
Субтитры
  • Показать/скрыть субтитры с фиксацией
  • Переключить субтитры
  • Настройки субтитров
  • Полноэкранное меню загрузки субтитров
Видео
  • Переключить пропорции
  • Настройки видео
  • Сохранить кадр
  • Сохранить кадр в буфер обмена
  • Сохранить миниатюры
  • Сохранить пакет полноразмерных скриншотов
  • Открыть папку со снимками с экрана
Программа
  • Настройки
  • Планировщик с фиксацией
  • Дерево фильтров
  • Сайт программы
  • Сайт разработчика шкурки
  • О программе
  • Выход
Система
  • Выключить монитор
  • Вызов диалога выключения компьютера
  • Перевести компьютер в спящий режим
<AREA id="btPlay" pos="0,105" size="73,110"/> <CONTROL type="GfxBtn" pos="10,61" size="36,36" img="FT.btPlay" link="App.SuperPlay"/> Кнопка - это основной контрол шкурки. Задача кнопки - выполнить функцию при нажатии на неё. Кнопки имеют три состояния:
  • обычная
  • под курсором
  • нажимаемая
Некоторые кнопки имеют фиксацию: после нажатия они переходят не в обычное состояние, а в дополнительное обычное состояние. Соответственно, такие кнопки имеют уже шесть состояний. Для кнопок с фиксацией рекомендуется анимация по принципу "срабатывает при отпускании кнопки".
Слайдер Громкость <AREA id="VolBGF" pos="226,40" size="9,13"/> <AREA id="VolThumb" pos="236,40" size="10,13"/> <AREA id="VolBG" pos="247,40" size="9,13"/> <CONTROL type="Slider" pos="45,40" size="92,13" bg="FT.VolBG" bgsplit="5,19" bgfill="FT.VolBGF" thumb="FT.VolThumb"/> Единственным представителем слайдера является громкость. Несложно заметить, что громкость использует не одну а сразу три графические константы.

У громкости есть одно ограничение: при анимации ползунка предполагается, что он имеет ширину ровно в 10 пикселей. Поэтому 10-пиксельные ползунки будут идеально ездить. Более узкие будут "недоезжать". Это можно обойти манипуляциями правым краем заднего плана громкости. Если требуется ползунок толщиной в 1 пиксель или около того, то проще использовать минипанель в качестве маски. Более широкие ползунки будут "переезжать". Это можно обойти наложением со смещением влево поверх другого регулятора громкости (у которого в свою очередь ползунок смещён вправо).
Шкала времени Шкала времени <AREA id="SeekBGfill" pos="226,7" size="24,26"/> <AREA id="SeekBG" pos="298,7" size="24,26"/> <AREA id="SeekThumb" pos="263,19" size="24,14"/> <AREA id="SeekHiTick" pos="254,14" size="1,5"/> <AREA id="SeekLoTick" pos="255,14" size="1,5"/> <CONTROL type="Seeker" pos="4,9" size="-4,24" bg="FT.SeekBG" bgsplit="12,6" bgfill="FT.SeekBGfill" thumb="FT.SeekThumb" lotick="FT.SeekLoTick" hitick="FT.SeekHiTick" OpeningPos="14" OpeningHeight="6"/> Как и громкость, шкала времени является единственным представителем своего типа. Но шкала времени ещё сложнее. Помимо того, что есть в громкости, шкала времени также имеет два вида насечек (основные и промежуточные ) и шрифт для обозначения позиции.

Теперь к ограничениям.
  • шкала времени предполагает работу с ползунком шириной 24 пикселя. Отклонение от этого числа приведёт к визуальному несоответствию клика мышки и перехода ползунка.
  • главы/закладки на шкале времени - это большие насечки, размещённые ниже.
  • числа выравниваются по верхнему краю. Насечки - по числам.
  • шкала начинается раньше нуля и заканчивается после окончания.
Текстовая строка Текст заголовка <AREA id="TitleBG" pos="10,8" size="10,16"/> <CONTROL type="Text" pos="52,2" size="-52,17" font="Verdana" fontsz="10" top_delta="-1" bold="1" bg="Cap.BrandBG" bgsplit="8,5" variable="1" text="Light Alloy"/> Текстовая строка предназначена для отображения информации. Информации в заголовке файла. В текстовой строке можно написать любой текст, но есть всего 4 вида интерактивной информации:
  1. {TITLE} - информация заголовка
  2. {POS} - позиция воспроизводимого файла
  3. {DUR} - длительность воспроизводимого файла
  4. {TIME} - системное время
Можно комбинировать простой текст и интерактивный.

Выравнивание текста в текстовой строке выполняется по центру.
Текстовая строка с графическим шрифтом Позиция
Длительность
Время
<AREA id="Digits" pos="326,6" size="114,15"/> <FONT id="Digits" img="FT.Digits" chars="0123456789: &lt;&gt;_"/> <CONTROL type="Text" pos="3,1" size="69,14" font="Digits" text=" {POS}_&gt;_{DUR}"/> Отличие от предыдущего типа состоит в том, что используемый шрифт - нарисован. А это многое упрощает: нет нужды выставлять гарнитуру и размер шрифта, его жирность, если всё это является рисунком.

Графические шрифты используются для интерактивной информации с ограниченным набором символов - для позиции, длительности и времени. Вероятно, можно нарисовать полный набор символов, которых хватило бы даже на отображение содержимого {TITLE}, но прецедентов нет.

Выравнивание текста в графической текстовой строке выполняется по левому краю.
Набор цветов
  1. Цвета текста в заголовке окна;
  2. Цвета OSD и видеообласти;
  3. Цвета списка;
  4. Цвета автопромотки;
  5. Цвета хинтов;
  6. Цвета контекстного меню;
  7. Цвета полноэкранной загрузки файлов и субтитров (два отдельных блока).
<IMAGE id="Color" file="Color.bmp"> <AREA id="LACaption" pos="1,1" size="1,2"/> <AREA id="OSD" pos="141,18" size="1,5"/> <AREA id="Timeline" pos="71,83" size="1,2"/> <AREA id="Hint" pos="71,119" size="1,3"/> <AREA id="PL" pos="1,18" size="1,12"/> <AREA id="Menu" pos="71,18" size="1,7"/> <AREA id="FOD_TV" pos="1,83" size="1,18"/> <AREA id="SOD_TV" pos="1,83" size="1,18"/> </IMAGE> Наборы цветов представляют собой блоки изображений шириной в 1 пиксель и высотой в соответствии с количеством цветов. Цвета соответствующих пикселей используются для заливки фонов и текстовых строк.

Наборы цветов только объявляются. Их применение определяется программой.
Декоративные изображения Логотип
Иконки контекстного меню
Галка контекстного меню
Закладка в списке
Мышка  в хинтах
<IMAGE id="Menu" file="Rclick.bmp"> <AREA id="bg" pos="0,0" size="20,23"/> <AREA id="pics" pos="0,24" size="33,84"/> <AREA id="Checked" pos="0,109" size="16,16"/> <AREA id="Bookmark" pos="22,0" size="11,11"/> </IMAGE> Декоративные изображения не имеют функций. Они просто есть. По большому счёту, из задача - только украшать внешний вид Light Alloy.

Одна из особенностей декоративных изображений - место их применения заложено в программу, поэтому они только объявляются.

Ещё одной отличительной особенностью обладают Иконки контекстного меню, Галка контекстного меню и Закладка в списке. Эти изображения поддерживают битовую прозрачность. Прозрачность должна быть выражена зелёным цветом (#00ff00 или RGB{0,255,0})

Структура шкурки

Файл Функция Требования
Шкурка.las Объединяет все файлы шкурки в один непонятный файл, который неподготовленный пользователь не станет распаковывать
  1. Имя файла: любое.las (в личных целях можно использовать zip или вообще неупакованную шкурку);
  2. архив в формате ZIP;
  3. алгоритм сжатия DEFLATE (используется архиваторами по умолчанию);
  4. метод сжатия (скоростной/нормальный/максимальный и т.п.) - любой, но рекомендуется максимальный.
SkinInfo.txt Информация о шкурке в окне настроек
  1. Имя файла: "SkinInfo.txt";
  2. Кодировка: UTF-8 with signature (она же - UTF-8 BOM).
Preview.png Предпросмотр шкурки в окне настроек
  1. Имя файла: "Preview.png";
  2. Параметры сохранения в PNG: любые;
  3. Размеры изображения: 200х150.
Interface.xml Описывает, что, где и как будет расположено
  1. Имя файла: "Interface.xml";
  2. Кодировка: UTF-8 with signature (она же - UTF-8 BOM).
Skin.bmp Источник всей графики шкурки
  1. Имя файла: любое на латинице;
  2. Цветовое пространство: любое (24 бит/256/16/2 цветов);
  3. Сжатие в RLE не рекомендуется, т.к. это ослабит сжатие всей шкурки, и она будет больше;
  4. необходимо избегать оставлять много свободного места (но не в ущерб удобству);
  5. необходимо разделять все изображения в файле отступами в 1 пиксель (в том числе состояния кнопки между собой) для удобства восприятия и последующей разметки.

Структура файла SkinInfo.txt

Файл SkinInfo.txt состоит из 5-и строк. Ограничение каждой строки - не более 45 символов. Переносы не допускаются.

Строка Значение
SkinTitle Название шкурки
SkinAuthor Автор шкурки (имя или псевдоним)
SkinVer версия шкурки
SkinWWW вебсайт шкурки; рекомендуется таковым именовать тему на официальном форуме, но не обязательно.
SkinCmt Комментарий к шкурке любого содержания

Параметры:

Структура файла Interface.xml

Ниже представлена структура блоков в файле. Параметр "id" менять в большинстве случаев нельзя (исключения: IMAGE id="HD", IMAGE id="FT", IMAGE id="PL", но для удобства восприятия даже их не рекомендуется менять).

<SKIN>
Определение графических констант (подблоки можно располагать в произвольном порядке)
<IMAGE id="Logo" file="logo.bmp"> константа логотипа
<IMAGE id="HD" file="Header.bmp"> константы верхней панели (заголовка)
<IMAGE id="FT" file="Footer.bmp"> константы нижней панели (панели управления)
<IMAGE id="PL" file="Playlist.bmp"> константы панели списка
<IMAGE id="Menu" file="Menu.bmp"> константы контекстного меню
<IMAGE id="Hint" file="Hint.bmp"> константы хинтов
<IMAGE id="Color" file="Color.bmp"> константы наборов цветов
Каждый "IMAGE" состоит из отдельных элементов - AREA.
<FONT id="Digits" img="FT.Digits" chars=" 0123456789:"/> блок распознавания графических шрифтов
Применение контролов (подблоки можно располагать в произвольном порядке)
<CTLDEF id="WndBorder" type="Panel" bg="HD.brd" size="29,52" bgsplit="14,24"/> рамка
<CTLDEF id="Caption" type="Panel" bg="HD.bg" size="400,21" bgsplit="14,10"> заголовок
<CTLDEF id="CtlPanel" type="Panel" bg="FT.bg" size="400,84" bgsplit="10,10"> панель управления
<CTLDEF id="PListPanel" type="Panel" bg="PL.bg" size="29,46" bgsplit="7,23"> панель списка
Каждый "CTLDEF" (кроме CTLDEF id="WndBorder") состоит из отдельных элементов - CONTROL.

Перечень тегов Interface.xml

Тег Назначение Доступные параметры
SKIN Контейнер для всех остальных тегов -
   IMAGE Именной блок констант со ссылкой на файл-источник id, file
      AREA Создаёт графическую константу id, pos, size
   FONT Создаёт графический шрифт на основе константы id, img, chars
   CTLDEF Именной блок контролов. Представляет одну из жёстко заданных панелей id, type, bg, size, bgsplit
      CONTROL Создаёт контрол.
Контрол типа "панель" может содержать другие контролы
type, pos, size, bgsplit, img, link,
font, fontsz, top_delta, bold, bg, bgsplit, variable, text,
bgfill, thumb, lotick, hitick, OpeningPos, OpeningHeight, Thumbshift

Перечень параметров тегов Interface.xml

Параметр Функция Синтаксис Доступен для тегов
bg Определяет изображение фона контролов и группы контролов (кроме кнопок) bg="(IMAGE id).(AREA id)"
Например, bg="HD.bg"
CTLDEF, CONTROL
(кроме кнопок)
bgfill Определяет изображение фона пройденного участка контролов "громкость" и "шкала времени" bgfill="(IMAGE id).(AREA id)"
Например, bgfill="FT.VolBGF"
CONTROL
type = slider | seeker
bgsplit Определяет пиксель по которому произойдёт растягивание контрола (кроме кнопок).
В случае рамки окна определяется пиксель, левее и выше которого рамка не будет растягиваться.
bgsplit="x,y"
x,y - целые, больше нуля
Например: bgsplit="5,19"
CTLDEF, CONTROL
(кроме кнопок)
bold Определяет жирность текстовой строки, если она задаётся обычным шрифтом bold="x"
где x= 0 или 1. Если 1, то жирный, если 0, то нет.
Например, bold="0"
CONTROL
type = text
border_sizeопциональный Параметр, определяющий толщину рамки окна. Рамка есть всегда, даже когда её толщина составляет 0 пикселей. border_size="x1,y1,x2,y2"
где x1,y1,x2,y2 - это четыре целых числа в порядке "слева,сверху,справа,снизу". По умолчанию "4,3,4,5"
Например, border_size="3,2,3,4"
CTLDEF
type = Panel
chars задаёт последовательность, в соответствии с которой будет распознаваться графический шрифт chars="abcd"
где abcd должен содержать " 0123456789:" для Часов и Длительности и дополнительно "<" для Позиции. Порядок символов любой. Возможно наличие любых дополнительных символов.
FONT
file определяет файл изображения, на основе которого будут создаваться вложенные графические константы. file="filename.ext"
где filename.ext - имя файла, включая расширение.
Напимер: file="main.bmp"
IMAGE
font определяет шрифт (системный или графический) для текстового контрола font="anyfont"
где anyfont - название шрифта
Например font="Verdana", font="Digits"
CONTROL
type=Text
fontsz определяет размер системного шрифта fontsz="x"
где x - целое число больше нуля.
Например fontsz="10"
CONTROL
type=Text
hitick определяет основную (высокую) насечку на шкале времени hitick="(IMAGE id).(AREA id)"
Например hitick="FT.SeekHiTick"
CONTROL
type=Seeker
id Имя собственное элемента, используемое в дальнейшем для обращения к нему id="TypName"
где TypName - уникальное имя (см. справочник дальше)
Например id="btSubs"
IMAGE, AREA, FONT, CTLDEF
img определяет графическую константу для формирования кнопки img="(IMAGE id).(AREA id)"
Например img="FT.btPlay"
CONTROL
type=GfxBtn
link определяет функцию кнопки link="fx"
где fx - это одна из предопределённых функций
Например link="App.SuperPlay"
CONTROL
type=GfxBtn
lotick определяет дополнительную (низкую) насечку на шкале времени lotick="(IMAGE id).(AREA id)"
Например lotick="FT.SeekLoTick"
CONTROL
type=Seeker
OpeningHeight определяет высоту полосы автопромотки на шкале времени OpeningHeight="x"
где x - целое положительное число
Например OpeningHeight="6"
CONTROL
type=Seeker
OpeningPos определяет отступ от верхнего края шкалы времени для полосы автопромотки OpeningPos="y"
где y - расстояние от верха шкалы времени до верха автопромотки
Например OpeningPos="14"
CONTROL
type=Seeker
pos определяет позицию графической константы на рисунке или контрола на панели pos="x,y"
где x,y - расстояние от левого и верхнего краёв соответственно. У контролов значения могут быть отрицательными. Отрицательность говорит о том, что отсчёт будет происходить не от левого или верхнего краёв, а от правого или нижнего
Например pos="50,67"
AREA, CONTROL
size определяет размер графической константы или контрола size="x,y"
где x,y - расстояние от левого и верхнего краёв описываемого элемента соответственно. У контролов значения могут быть отрицательными. Отрицательность говорит о том, что отсчёт будет происходить не от левого или верхнего краёв элемента, а от правого или нижнего краёв панели
Например size="24,28"
AREA, CONTROL
text определяет текстовое содержимое контрола соответствующего типа text="any"
где any - это произвольный текст.
Помимо всего прочего, можно вставить переменные {TITLE},{POS},{DUR},{TIME}, обозначающие Заголовок, Позицию, Длительность и Время соответственно
Например text="{TIME}"
CONTROL
type=Text
thumb определяет изображение бегунка в громкости и шкале управления thumb="(IMAGE id).(AREA id)"
Например thumb="FT.VolThumb"
CONTROL
type = slider | seeker
thumbshiftопциональный определяет ширину бегунка для построения анимации (для создания нормальных бегунков с нестандартной шириной) thumbshift="x"
где X - это величина "сдвига" бегунка относительно стандартной (по умолчанию "0").
Например:
thumbshift="4" - ползунок сдвигается на 4 пикселя вправо (это эквивалентно "ползунок будет думать, что он на 4 пикселя короче");
thumbshift="-5" (значения с минусом - только для громкости) - ползунок сдвигается на 5 пикселя влево (это эквивалентно "ползунок будет думать, что он на 5 пикселей длинее")
CONTROL
type = slider | seeker
top_delta определяет сдвиг текста в неграфической текстовой строке по вертикали; фон остаётся неподвижным top_delta="y"
где y - это величина сдвига текста по вертикали. Плюс - вниз, минус - вверх
Например top_delta="-2"
CONTROL
type=Text
type определяет тип контрола. От этого зависят все остальные параметры type="t"
где t - это Panel (панель), GfxBtn (кнопка), Text (текст), Seeker (шкала времени), Slider (громкость)
Например type="Text"
CTLDEF, CONTROL
variableопциональный объявляет, что содержимое текстовой строки произвольное (иначе строка всегда выводит {title}) variable="x"
где x = 0 или 1. По умолчанию "0". Если 1, то будет выведено любое содержимое, если 0, выводится {title}. Рекомендуется всегда использовать variable="1"
Например variable="1"
CONTROL
type=Text

Перечень всех элементов шкурки

Все элементы, из которых строится шкурка, делятся на необходимые и опциональные. Без первых шкурка попросту невозможна. К тому же они жёстко привязаны к своим местам. Наличие или отсутствие вторых является определяется только автором шкурки.

Необходимые элементы шкурки

Id в части применения менять нельзя. Если части применения нет, то нельзя менять все Id в части объявления.

Название Тип Объявление Применение Описание
Логотип Декоративное изображение <IMAGE id="Logo" file="logo.bmp"> <AREA id="Splash" pos="0,0" size="262,230"/> </IMAGE> - Отображается в видеообласти при отсутствии видео
Контур окна Контур <IMAGE id="HD" file="Header.bmp"> <AREA id="brd" pos="0,0" size="210,128"/> </IMAGE> <CTLDEF id="WndBorder" type="Panel" bg="HD.brd" size="29,127" bgsplit="14,26" border_size="3,2,3,4"/> Рамка вокруг окна проигрывателя
Верхняя панель Панель <IMAGE id="HD" file="header.bmp"> <AREA id="bg" pos="10,4" size="10,21"/> </IMAGE> <CTLDEF id="Caption" type="Panel" bg="HD.bg" size="400,21" bgsplit="14,10"> </CTLDEF> Панель вверху окна
Нижняя панель Панель <IMAGE id="FT" file="footer.bmp"> <AREA id="bg" pos="0,0" size="224,104"/> </IMAGE> <CTLDEF id="CtlPanel" type="Panel" bg="FT.bg" size="400,104" bgsplit="110,103"> </CTLDEF> Панель внизу окна
Панель списка Панель <IMAGE id="PL" file="playlist.bmp"> <AREA id="bg" pos="0,0" size="14,34"/> </IMAGE> <CTLDEF id="PListPanel" type="Panel" bg="PL.bg" size="300,34" bgsplit="7,23"> </CTLDEF> Панель внизу области списка
Контекстное меню Декоративное изображение <IMAGE id="Menu" file="Rclick.bmp"> <AREA id="bg" pos="0,0" size="20,23"/> <AREA id="pics" pos="0,24" size="33,84"/> <AREA id="Checked" pos="0,109" size="16,16"/> <AREA id="Bookmark" pos="22,0" size="11,11"/> </IMAGE> - Значки в контекстном меню, маркер контекстного меню, закладка списка
Значки мышки в хинтах Декоративное изображение <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> - Изображения мышек в хинтах
Наборы цветов Наборы цветов <IMAGE id="Color" file="Color.bmp"> <AREA id="LACaption" pos="1,1" size="1,2"/> <AREA id="OSD" pos="141,18" size="1,5"/> <AREA id="Timeline" pos="71,83" size="1,2"/> <AREA id="Hint" pos="71,119" size="1,3"/> <AREA id="PL" pos="1,18" size="1,12"/> <AREA id="Menu" pos="71,18" size="1,7"/> <AREA id="FOD_TV" pos="1,83" size="1,18"/> <AREA id="SOD_TV" pos="1,83" size="1,18"/> </IMAGE> - Все цвета по цвету на пиксель (сверху вниз):

Цвета текста в заголовке окна
  1. Текст, когда окно Light Alloy активно
  2. Текст, когда окно Light Alloy неактивно
Цвета OSD и видеообласти
  1. текст OSD
  2. фон OSD
  3. тень текста OSD
  4. контур текста OSD
  5. фон видеообласти
Цвета списка:
  1. фон
  2. текст видеоэлемента (видео и IPTV)
  3. проигрываемый сейчас файл
  4. курсор
  5. повторяемый файл
  6. удалённый/недоступный файл
  7. прошлый проигрываемый файл при запуске проигрывателя
  8. закладки
  9. закладки проигрываемого сейчас файла
  10. разделитель списка и видеообласти
  11. текст крупных цифр на шкале времени
  12. текст аудиоэлемента (музыка и радио)
Цвета автопромотки
  1. автопромотка, сделанная ранее
  2. автопромотка во время отмечания её мышью
Цвета хинтов
  1. фон
  2. контур и разделитель
  3. текст
Цвета контекстного меню
  1. фон
  2. обычный пункт меню
  3. недоступный пункт меню
  4. рамка курсора
  5. текст под курсором
  6. фон курсора
  7. горизонтальный разделитель
Цвета полноэкранной загрузки файлов и субтитров
(Два отдельных блока):
  1. текст под курсором
  2. текст папок
  3. текст файлов
  4. курсор активный
  5. курсор неактивный
  6. фон активной панели файлов
  7. фон активной панели дисков
  8. фон неактивной панели файлов
  9. фон неактивной панели дисков
  10. общий фон
  11. фон кнопок
  12. тект кнопок
  13. фон кнопок при наведении
  14. фон заголовка
  15. текст заголовка
  16. текст жёстких дисков
  17. текст сменных дисков (флешек)
  18. текст оптических дисков

Опциональные элементы шкурки

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

Кнопки

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

<IMAGE ...> <AREA id="btPlay" pos="10,10" size="20,60"/> </IMAGE> <CTLDEF ...> <CONTROL type="GfxBtn" pos="30,30" size="20,20" img="FT.btPlay" link="App.SuperPlay"/> </CTLDEF>

Здесь надо помнить три вещи:

  1. AREA id может быть любая, но есть разработанный удобочитаемый набор имён. Рекомендуется пользоваться в первую очередь им для дальнейшей удобочитаемости шкурки как автором, так и любыми заинтересованными людьми. В случае самостоятельного создания id необходимо использовать латиницу и избегать точек.
  2. CONTROL img составной. Он состоит из "IMAGE id" и "AREA id", написанных через точку.
  3. CONTROL link обозначает функцию кнопки. Если указанная функция не существует, проигрыватель просто проигнорирует нажатие кнопки. Существует лишь ограниченное число функций. Попытка назначить функцию не из нижеприведенного перечня методом аналогии не сработает.
Название Тип Рекомендуемый AREA id CONTROL link
Файл
Открыть файл Обычная кнопка btOpen PlayList.OpenFiles
Информация о файле Обычная кнопка btInfo Window.FileInfo
Воспроизвести DVD-диск Обычная кнопка btDVD File.PlayDVD
Открыть папку с DVD Обычная кнопка btFolderDVD File.OpenDVD
Информация о файле в OSD Обычная кнопка btOSDInfo File.OSDInfo
Полноэкранное меню открытия файлов Обычная кнопка btOpenFS File.OpenFile_Fullscr
Каталог интернет радиостанций Обычная кнопка btOpenIRE File.OpenIRE
Воспроизведение
Воспроизведение / Пауза Кнопка с фиксацией btPlay App.SuperPlay
Стоп (выгрузка файла) Обычная кнопка btStop Playback.RealStop
Кадр вперёд Обычная кнопка btFStep Player.FrameStep
Изменение скорости Кнопка с фиксацией btFF Player.SpeedPlay
Увеличить скорость воспроизведения Обычная кнопка btSpdUp Playback.SpeedUp
Уменьшить скорость воспроизведения Обычная кнопка btSpdDown Playback.SpeedDown
Перемотка
Сделать закладку на шкале времени Обычная кнопка btBookmark Seek.SetBookmark
Окно
Поверх всех окон Кнопка с фиксацией btTop StayOnTop
Окно/Весь экран Кнопка с фиксацией btZI Window.FullScreen
Первоначальный размер Обычная кнопка btZO Window.Original
Максимизировать (развернуть) Кнопка с фиксацией btMax App.Maximize
Минимизировать (свернуть) Обычная кнопка btMin App.Minimize
Список
Предыдущий по списку Обычная кнопка btPlPrev PlayList.Prev
Список Кнопка с фиксацией btPlist Window.PlayList
Следующий по списку Обычная кнопка btPlNext PlayList.Next
Проиграть выбранный Обычная кнопка btPlay PList.Play
Добавить файл(ы) в список Обычная кнопка btAdd PList.AddFiles
Добавить папку в список Обычная кнопка btAddDir PList.AddDir
Удалить из списка Обычная кнопка btRem PList.Remove
Очистить список Обычная кнопка btClear PList.Clear
Переместить выше Обычная кнопка btUp PList.MoveUp
Переместить ниже Обычная кнопка btDown PList.MoveDown
Случайный порядок воспроизведения Кнопка с фиксацией btShuffle PList.Shuffle
Закладки в списке Кнопка с фиксацией btMarks PList.ShowMarks
Повтор списка Кнопка с фиксацией btMarks PList.ShowMarks
Таблица по списку Обычная кнопка btReport PList.Report
Сохранить список Обычная кнопка btSave PList.Save
Перейти к файлу (поиск в списке) Обычная кнопка btJump PList.Jump
Отсортировать список Обычная кнопка btSort PList.Sort
Перемешать список Обычная кнопка btVisShuffle PList.VisShuffle
Показать файл в проводнике Обычная кнопка btShow PList.Search
Звук
Отключить звук Кнопка с фиксацией btMute Audio.Mute
Переключить аудио-дорожку Обычная кнопка btASwitch Sound.Switch
Опции звука Обычная кнопка btAProps Window.AudioProps
Радио: начать/остановить запись Кнопка с фиксацией btRec Player.RadioRecord
Субтитры
Показать/скрыть субтитры Кнопка с фиксацией btSubs Subtitles.Show
Переключить субтитры Обычная кнопка btSSwitch Subtitles.Switch
Опции субтитров Обычная кнопка btSProps Window.SubProps
Полноэкранное меню загрузки субтитров Обычная кнопка btSAddFS Subtitles.Open_Fullscr
Видео
Переключить пропорции Обычная кнопка btVRatio Video.RatioSwitch
Опции видео Обычная кнопка btVProps Window.VideoProps
Сохранить кадр Обычная кнопка btSShot Player.ScreenShot
Сохранить кадр в буфер обмена Обычная кнопка btSShotCB Video.ScreenshotCB
Сохранить миниатюры Обычная кнопка btSaveThumbs Video.SaveThumbs
Сохранить пакет полноразмерных скриншотов Обычная кнопка btSaveScreensPack Video.SaveScreensPack
Открыть папку со снимками с экрана Обычная кнопка btOpenScrFolder Application.OpenScrFolder
Программа
Настройки Обычная кнопка btPrefs App.Prefs
Планировщик Кнопка с фиксацией btSheduler Application.Scheduler
Дерево фильтров Обычная кнопка btFlt Window.Filters
Сайт разработчика шкурки Обычная кнопка btDesLink About.DesLink
Сайт программы Обычная кнопка btDevLink About.DevLink
О программе Обычная кнопка btAbout App.About
Выход Обычная кнопка btExit App.Exit
Система
Выключить монитор Обычная кнопка btMonitorOff Application.MonitorOff
Вызов диалога выключения компьютера Обычная кнопка btPowerOff Application.PowerOff
Перевести компьютер в спящий режим Обычная кнопка btHibernate Application.Hibernate

Не кнопки

Название Тип Объявление Применение Описание
Шкала времени Шкала времени <AREA id="SeekBG" pos="298,7" size="24,26"/> <AREA id="SeekBGfill" pos="226,7" size="24,26"/> <AREA id="SeekThumb" pos="263,19" size="24,14"/> <AREA id="SeekHiTick" pos="254,14" size="1,5"/> <AREA id="SeekLoTick" pos="255,14" size="1,5"/> <CONTROL type="Seeker" pos="4,9" size="-4,24" bg="FT.SeekBG" bgsplit="12,6" bgfill="FT.SeekBGfill" thumb="FT.SeekThumb" thumbshift="4" lotick="FT.SeekLoTick" hitick="FT.SeekHiTick" OpeningPos="14" OpeningHeight="6"/> Шкала времени служит для перемотки файла. Её параметры:
  • size="-4,24" - отрицательная длина; это значит, что длина отсчитывается от правого края панели;
  • bgfill="FT.SeekBGfill" - фон пройденного участка;
  • thumb="FT.SeekThumb" - бегунок;
  • hitick="FT.SeekHiTick" - основные насечки;
  • lotick="FT.SeekLoTick" - дополнительные насечки;
  • OpeningPos="14" - высота от верхнего края шкалы времени до автопромотки;
  • OpeningHeight="6" - высота самой автопромотки.
Формируя насечки, нельзя забывать, что закладка - это сдвоенная насечка, а ширина бегунка - 24 пикселя.
Громкость Слайдер <AREA id="VolBGF" pos="226,40" size="9,13"/> <AREA id="VolThumb" pos="236,40" size="10,13"/> <AREA id="VolBG" pos="247,40" size="9,13"/> <CONTROL type="Slider" pos="45,40" size="92,13" bg="FT.VolBG" bgsplit="5,19" bgfill="FT.VolBGF" thumb="FT.VolThumb" thumbshift="-2"/> Громкость говорит сама за себя. Важно помнить об ограничении ширины ползунка в 10 пикселей.
Заголовок Текстовая строка <AREA id="TitleBG" pos="10,8" size="10,16"/> <CONTROL type="Text" pos="100,3" size="-100,17" font="Verdana" fontsz="10" top_delta="-2" bold="0" bg="HD.TitleBG" bgsplit="8,5" variable="1" text="{TITLE}"/> Заголовок предназначен для отображения имени файла и некоторой информации о состоянии проигрывателя. Параметры:
  • font="Verdana" - гарнитура.
  • fontsz="10" - размер шрифта;
  • top_delta="-2" - смещение текста по вертикали. Минус - вверх, плюс - вниз;
  • bold="0" - жирность шрифта: 0 - обычный, 1 - жирный;
  • bg="HD.TitleBG" - фон под текстом;
  • text="{TITLE}" - собственно текст (на данный момент изменение параметра ни на что не повлияет, но, возможно, в будущем это изменится).
Помимо этого, в наборах цветов указываются цвета текста при активном и неактивном окне. Однако, эти цвета действуют на все текстовые строки, поэтому создание обычной текстовой строки с позицией, длительностью или временем, хоть о возможно, но будет иметь ограничения по цвету и сопутствующие проблемы.
Позиция
Длительность
Время
Графическая текстовая строка <AREA id="Digits" pos="326,6" size="114,15"/> <FONT id="Digits" img="FT.Digits" chars="0123456789: &lt;&gt;_"/> <CONTROL type="Text" pos="3,1" size="69,14" font="Digits" text=" {POS} &gt; {DUR}"/> Позиция, Длительность и Время обозначаются такими значениями соответственно:
  1. {POS} - позиция воспроизводимого файла
  2. {DUR} - длительность воспроизводимого файла
  3. {TIME} - системное время
Для корректного отображения информации необходимы следующие символы:
  • {POS} -  "0123456789: <" (двоеточие разделяет часы, минуты, секунды; пробел и скоба учавствуют в отображении прямого и обратного отсчёта)
  • {DUR} -  "0123456789:"
  • {TIME} - "0123456789: " (двоеточие ежесекундно заменяется пробелом и наоборот)
Кроме этих значений можно использовать любые символы на своё усмотрение. Также можно комбинировать простой текст и интерактивный.

Изображения делятся на символы на основании нижнего ряда пикселей: изменился цвет - значит начался новый символ. Пример (масштаб 200%):