проверь этот вот этот патчик:
http://bugs.freepascal.org/view.php?id=14638формат файла такой:
- Код: Выделить всё
id (4 byte - FourCharCode) идентификатор файла: kIconFamilyType = 'icns'
size (4 byte - big endian Integer) размер файла целиком
[слой 1]
[слой 2]
...
[слой-N]
каждый слой представляют из себя следующее:
- Код: Выделить всё
id (4 byte - FourCharCode) - идентификатор закодированных данных: )
size (4 byte - big endian Integer)- размер слоя = 8 байт + размер данных
[... данные ...]
id слоя указывает, какие данные записаны, размер изображения и глубина цвета.
подробно для каждого id описана константа: icnsIconTypeInfo (в файле icnsTypes. спасибо Павлу Ишенину).
iitSmall32BitData, iitLarge32BitData, iitHuge32BitData, iitThumbnail32BitData: (16, 32, 48, 128) кодируются RLE сжатием. каждый компонент цвета кодируется отдельно от других.
Внимание Для цветового слоя 128х128 нужно дописывать четыре нулевых байта, перед началом RLE потоков. Для маски 128x128 и других слоёв этого делать НЕ нужно.
Для каждого из цветовых слоёв соответствует слой 8-битной маски:
iitSmall8BitMask, iitLarge8BitMask, iitHuge8BitMask, iitThumbnail8BitMask
слой никак не сжимается!
iit256PixelDataARGB, iit512PixelDataARGB: (256, 512) кодируются Jpeg2000 сжатием (есть портированные загаловки для OpenJpeg библиотеки.
http://galfar.vevb.net/wp/projects/jpeg2000-for-pascal/ Можно исопльзовать её!).
Так как в сжатии Jpeg2000 используется alpha-канал, слой маски НЕ требуется.
Например у нас есть иконка 32х32, файл будет выглядеть следующим образом:
- Код: Выделить всё
'icns' - идентификтор файла
XXXX - размер всего файла
'il32' - идентификатор слоя 32x32
YYYY - sizeof(R_RLE)+sizeof(G_RLE)+sizeof(B_RLE) + 8
R_RLE - закодированный красный цвет слоя
G_RLE - закодированный зелёный цвет слоя
B_RLE - закодированный синий цвет слоя
'l8mk' - индентификатор маски 32х32
ZZZZ - sizeof(mask)+ 8 байт
mask - данные маски
ещё раз на помню:
размеры в файле записаны в формате big-endianЗЫ: поддержи разработчиков Лазаруса, спонсируй каждому по Макбуку Про
ЗЗЫ:
http://en.wikipedia.org/wiki/Apple_Icon_Image