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

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

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

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

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

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

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

Начать рисование иконки рекомендуется с самого большого размера - 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"/>

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

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

Эпилог

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