Разбираем и редактируем Nif-файлы — TopNokia Forum

Автор: | 01.12.2009

-= Структура цветных 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 выводится детальный лог разбора иконки.