-= Структура цветных NIF-иконок =-
Структуру данных иконок разобрал по полочкам друже hepta, (IMG:style_emoticons/default/idea.gif).
Битмап этого вида иконок начинается после байтов 0E 83. Бывают также и другие сочетания байт 0D 83,0C 83 , но это какой-то другой способ отображения.(если кому интересно, может исследовать и их)
hex коды переводятся в двоичный вид.Иконка отображается следующим образом: задается цвет пикселей и количество пикселей этим цветом. Пиксели отображаются слева направо, сверху вниз.
011011110 — 8 бит — номер цвета. 0 означает , что количество пикселей указываться не будет, будет отображен один пиксель. После этих девяти бит начинается отображение следующих пикселей.
если после 8 бит указания цвета стоит единица, значит будет указываться количество пикселей этим цветом. Здесь нужно взять также и 2 следующих за единицей символа (всего 3)
10110110111- цвет , один из режимов указания количества цветов.
1. режим 111 — после этих цифр 8 бит для указания количества max=2552. режим 101 — после этих цифр 6 бит для указания количества max=633. режим 110 — после этих цифр 4 бит для указания количества max=154. режим 100 — после этих цифр 2 бита для указания количества max=3
110111101101111 — цвет, режим,количество пикселей- этот код отобразит 16 одинаковых пикселей.
1111 при переводе в десятичную систему — 15. Количество пикселей в коде на единицу меньше, чем на самом деле. Это нужно учитывать.
10100011101101111 — 48 одинаковых пикселей
101111 — 47 в десятичном виде
011011110110111101101111 — один зеленый пиксель, 16 серых.
01101111011011110110111101101111011011110 один зеленый пиксель, 16 серых ,снова зеленый, один серый
Палитра цветных иконок
Первый пиксель первой строки — номер цвета 0, последний пиксель первой строки — номер цвета 29.Как с помощью этого нарисовать картинку:1.Нарисовать картинку в любом графическом редакторе, используя цвета из прилагаемой палитры.2.Записать номер цвета из палитры и количество пикселей этим цветом, считая слева направо, сверху вниз3.Сделать двоичный код из номера цвета (8 бит), указателя режима, и количества цветов.4.Перевести в hex код.—————————————————-
На основании описанных структур NIF-файлов с ID 0983 (только одноцветные) и 0E83 написана программа для просмотра NIF Viewer:
Для иконок с ID 0983 справа отображается ее структура в виде ‘0’ и ‘1’, для иконок с ID 0E83 выводится детальный лог разбора иконки.