# Создание иконок. Теория

Иконки для Light Alloy создаются в виде пакета из двух файлов:

- Библиотеки иконок в формате .icl
- Файла описания в формате .xml

Связь этих двух файлов определяется их одинаковым именем при разных расширениях. Так, если вы создаёте библиотеку иконок с именем graphite.icl, то файл описания к ней должен иметь имя graphite.xml и никак иначе.

## Создание иконок

Всё начинается с создания иконки в соответствии с вашей идеей. В ОС Windows иконки формируются несколькими вариантами изображений: можно рисовать сколько угодно независимых вариантов иконок для каждого размера:

Необходимо помнить, что чем меньше размеров иконки вы сделаете, тем меньше места эта иконка будет занимать. Кроме того, чтобы ещё сильнее уменьшить размер иконок, к ним можно применять png-сжатие (к размерам 64х64 и выше). Оно позволяет уменьшить занимаемый размер иконки в 3-10 раз без потери качества.

Впрочем, есть минимальный эффективный набор размеров, которые рекомендуется использовать. Обратите внимание, что все размеры представляют собой квадрат:

- 16х16 — режим отображения "список", "таблица";
- 32х32 — режим отображения "значки", сторонние файловые менеджеры (например, Total Commander, Double Commander и пр.) также активно используют этот размер;
- 48х48 — режим отображения "плитка", "крупные значки";
- 96х96 — режим отображения "Эскизы" (Windows Vista и старше, не используется, если есть больший размер);
- 256х256 — режим отображения "Огромные значки" (Windows Vista и старше);

Глубину цвета выбирайте RGB + alpha
Названия могут отличаться в разных программах, но суть одна: поддержка полноценной 24-битной цветовой палитры и полноценной 8-битной прозрачности. Ограниченную глубину цвета выбирать не рекомендуется: в современных операционных системах она не имеет значимых преимуществ.

Начать рисование иконки рекомендуется с самого большого размера - 256х256. А дальше придётся решать очень важный вопрос: как именно рисовать меньшие размеры. Тут есть два варианта:

- сделать меньшие размеры путём масштабирования большого;
- рисовать все меньшие размеры заново.

Первый метод очень быстрый, но хорошие результаты даёт только там, где нет мелких деталей:

Если же в иконке присутствуют мелкие детали, то создание уменьшённого размера путём масштабирования будет выглядеть размытым, несмотря на все старания:

Как видим, чем меньше размер, тем хуже смотрится изображение.

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

## Создание библиотеки иконок

При создании библиотеки вам потребуется определить уровень её полноты и универсальности. Ваша библиотека может содержать:

- только одну иконку;
- три иконки: по одной для плейлистов, видео и аудио;
- по иконке для каждого расширения

Также можно комбинировать подходы. Например, можно создать иконки для трёх типов, а также персональные иконки для некоторых расширений.

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

От вашего выбора будут зависеть универсальность, удобство и размер вашего пакета иконок.

## Создание файла описания

Файл описания отвечает хранит информацию об авторе, названии и кратком (очень кратком!) описании пакета иконок. Рекомендуется создавать файл, используя кодировку "UTF-8 with signature" (она же - UTF-8 BOM).

Внутри он может выглядеть, например, так:

<?xml version="1.0" encoding="UTF-8"?> <ICONLIB> <AUTHOR name="Ham" email="" homepage="" comments="256x48x32x16"/> <ICONS> <ICON id="0" ext="AAC,AC3,AIF,APE,AT3,AU,CDA,DTS,FLAC,MIDI,MKA,MOD,MP3,MPA,MPC,OGG,WAV,WMA,OPUS"/> <!-- audio --> <ICON id="1" ext="ASX,BDMV,CUE,IFO,LAP,LST,M3U,MPLS,PLS"/> <!-- playlist --> <ICON id="2" ext="AVI,AVS,FLV,M1V,M2TS,MKV,MOV,MP4,MPG,MPV,MTS,OGM,QT,RMVB,TS,VOB,WEBM"/> <!-- video --> </ICONS> </ICONLIB>

Разберёмся, что тут к чему. Вот обычная строка:

<AUTHOR name="Ham" email="" homepage="" comments="256x48x32x16"/>

Это тег — единичная команда. Он характеризуется особыми скобками: < >. У нас здесь используется два вида тегов:

1. парные;
2. единичные.

Парные теги состоят из двух частей: открывающей и закрывающей (например, <ICONLIB> </ICONLIB>). Внутри парных тегов могут быть другие теги.
Единичные теги - <ICON /> - характеризуются косой чертой перед второй скобкой. По сути, запись "<ICON />" равнозначна записи "<ICON></ICON>". Так делается просто для упрощения.

В нашем случае теги состоят из таких частей:

1. Имя функции (ICON) — или "что мы вообще хотим этим добиться". "ICON" значит "заявить иконку";
2. параметры (id="0" ext="LA") - уточняющие дополнения функции. В них-то вся соль. Именно они определяют, какая именно иконка, и для каких конкретно случаев задаётся.

Теперь пройдемся по нашему образцу и посмотрим, что за что отвечает:

Информация от автора:

<AUTHOR name="Ham" email="" homepage="" comments="256x48x32x16"/>

- name = имя или псевдоним создателя пакета иконок;
- email = указываем электронный ящик для благодарностей и критики. Можно и пустым оставить;
- homepage = здесь можно указать адрес ветки на форуме, домашнюю страницу или оставить пустым;
- comments = здесь указывается любая другая важная информация, например, автор редизайна, размер значков (256/48/32/16px, 32бит) и что угодно ещё. Только не особо увлекайтесь: место ведь ограничено.

Заявление иконок:

<ICON id="1" ext="ASX,BDMV,CUE,IFO,LAP,LST,M3U,MPLS,PLS"/>

- id = номер по порядку в библиотеке иконок. Нумерация начинается с нуля (0,1,2,3,...) и указывает, какую именно иконку мы назначим заданным расширениям;
- ext = собственно расширения, для которых будет использоваться данная иконка. Если мы хотим использовать одну иконку для нескольких расширений (BDMV,CUE,IFO,...), все эти расширения указываем через запятую.

## Эпилог

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