まず、アイコンファイルは大体次のような構成になっています。
アイコンヘッダ部→リソースヘッダ部×リソース数→データ部×リソース数このそれぞれを見ていきます。
わかっているとは思いますが、値は16進数、左が1バイト目です。
アイコンヘッダ部
値(固定値の場合の値) | バイト数 |
予約(00 00) | 2 |
リソースタイプ(アイコンの場合、01 00) | 2 |
リソース数 | 2 |
リソースヘッダ部
値(固定値の場合の値) | バイト数 |
幅 | 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 |
で、ややこしいのが、色数とビット数の関係で、次のようになっています。
色数 | ビット数 | 形式 |
00 | 00 00 | 256色 |
00 | 08 00 | 256色 |
00 | 18 00 | True Color |
00 | 20 00 | True Color + Alpha Channel |
02 | 00 00 | モノクロ |
02 | 01 00 | モノクロ |
10 | 00 00 | 16色 |
10 | 04 00 | 16色 |
データ部
これが難しいんですよ。色数によって記録方法が変わるし、マスクとかややこしいし、用途不明の部分がまだまだあるし・・・・
わかり次第報告します。