アイコンメモ

今アイコンエディタを作っているので、Windowsアイコンのフォーマットを記しておきます。

まず、アイコンファイルは大体次のような構成になっています。
アイコンヘッダ部リソースヘッダ部×リソース数→データ部×リソース数このそれぞれを見ていきます。
わかっているとは思いますが、値は16進数、左が1バイト目です。

アイコンヘッダ部

値(固定値の場合の値)バイト数
予約(00 00)2
リソースタイプ(アイコンの場合、01 00)2
リソース数2
リソースタイプが02 00の場合はカーソルになります。

リソースヘッダ部

値(固定値の場合の値)バイト数
1
高さ1
色数(02・10・00のどれか)1
予約(通常は00)1
プレーン数(00 00または01 00)2
ビット数(01 00・04 00・08 00・18 00・20 00のどれか)2
サイズ4
対応するデータ部の始まる位置4
プレーン数は、01 00が正しいと思うのですが、00 00にすることが多いようです。
で、ややこしいのが、色数とビット数の関係で、次のようになっています。
色数ビット数形式
0000 00256色
0008 00256色
0018 00True Color
0020 00True Color + Alpha Channel
0200 00モノクロ
0201 00モノクロ
1000 0016色
1004 0016色

データ部

これが難しいんですよ。
色数によって記録方法が変わるし、マスクとかややこしいし、用途不明の部分がまだまだあるし・・・・
わかり次第報告します。