とことん!アイコンエディタ
アイコンを作ってみようと思ったのですが、今使っているパソコンにはろくなアイコンエディタがありません。
Win3.1やVB6に付属のは48x48のアイコンや24bit・32bitαチャンネル付きのアイコンが作れないし、「Developer Studio」のアイコンエディタはクソ重いし・・・・
そこでインターネットで検索したところ、高機能だがシェアウェア、フリーウェアだが機能が足りない、そのどちらかしかありませんでした。
そもそも、選べるだけの充分な数もありませんでした。
それならば作ってしまえ、とは思ってみたのですが、ネットで検索してみても、アイコンのフォーマットの記述があるサイトはほとんどなく、やっとのことで見つけたたった一つのサイトも、いたるところ「?」だらけで、よくわかっていないようでした。
もう、自分で研究するしかない。
しかし、頼りにしていたMSDNライブラリにも、詳しい記述はなく、関連のある構造体の解説があるだけでした、それも英語で。
結局、ネットとMSDNの不確かな情報とシェアウェアの使用中に作ったアイコンのバイナリデータを見つつ理解を深めていくことにしました。
そういう経緯でアイコンの情報を表示するソフトを作り始めることになりました。
そして、ヘッダとそれぞれのアイコンの情報を読み込むところまでは余裕でできました。
そこで調子に乗ってデータまで自前で読もうとしたのが間違いだったのです。
データ部の雰囲気を表現すると、
えげつなー!
なにしろモノクロ画像は一行に付き32ドットずつ(つまり4バイトずつ)まとめて読み込まないといけないみたいだし、そのくせ16色だったら0.5バイトずつ隙間なくうめてゆき、唯一まともそうなのが256色で、24bitはその名の通り3バイトずつよみこんで、32bitともなるとαチャンネル付き!
しかもすべてに共通して言えることは、最初に用途不明の40バイトがあること、マスク部分はそれまでのデータがどうであれモノクロ画像の規則が適用されること!
それでも32x32は問題なく読めるんですよ、16x16や48x48も何とか対応できました。
確かに一般的なアイコンだとそれで充分かもしれません。
しかし、私が目指すのは限りなく自由度の高いエディタです。
ビューア程度で対応できなくてそんなエディタが作れるでしょうか。
というわけで、リソース数10、28x95や33x33サイズの画像を含み、ありとあらゆる形式を含むという、普通ではありえない、非常に厳しい条件のアイコンを作りました。
しかしこれにも困難はありました。
だってエディタもビューアもバグっちゃってるんだもん!
具体的には、例の厳しいアイコンを保存すると、透過色と反転色が入れ替わってしまいます。
それをエクスプローラの縮小版で見ると透過色・反転色が変な色になっています。
ほんまにできるんかいな…