アイコンメモ

今アイコンエディタを作っているので、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色

データ部

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