<   2007年 03月 ( 2 )   > この月の画像一覧

[CoveredCalc] 続・ビットマップが正しく読めない!

前回の修正をいろんな種類のビットマップで動作確認していたところ、いくつか読めないファイルがでてきました。
何かと思ったら、ヘッダが BITMAPINFOHEADER じゃなくて、BITMAPV4HEADER のもの。
BITMAPINFOHEADER のサイズでなければはじくようにしていました。

BITMAPV4HEADER も BITMAPV5HEADER も、BITMAPINFOHEADER と同じサイズまでなら情報は同じなので厳密にチェックするのをやめました。
BITMAPINFOHEADER のサイズ以上あれば OK ということにしました。

Issue 30 に書いたとおり、16ビット、32ビットのある程度の種類のビットマップで動作確認できました。
そろそろマイナーバージョンアップリリースの準備にとりかかろうと思います。
どれほどの人が必要としている修正かは知りませんが‥‥。
(そんなこと言い出すと、どれほどの人がこのソフトを必要としていることか‥‥)
[PR]
by hironytic | 2007-03-24 23:33 | 開発状況

[CoveredCalc] ビットマップが正しく読めない!

Windows 版のレイヤードウィンドウ対応のための調査を行おう、行おうと思いながら手がつかずに月日が経ってはや 3 月。
まあ、2月末が本業の締め切りだったので、CoveredCalc に時間を割くこともできず、締め切り終了後に風邪でダウンしてたんですが。(言い訳)

それで、本日、割と早く仕事から帰ってきたので、テスト用に 32 ビットのビットマップを作ってみました。
32 ビットのビットマップは透明度(正確には不透明度?)を持っているので、この情報を使ってウィンドウごと半透明にしようという企みです。(機能強化案として Issue 29 に登録済み)

現状の CoveredCalc は透明度を全く無視するものの、読むことはできるはずなので、試しに読ませてみたところ、ウィンドウが真っ黒に! 全然ダメ。読めてない。
調べたところ、去年暮れの作業で大きくデグレードしているみたい。トホホ。不具合として新たに Issue 30 に登録しました。
コードを見ると、なぜこんな不具合を入れたのかさっぱりわかりません。
作業自体は別のプログラム用に作っていたコードを CoveredCalc に移植したんですが、元のコードでは正しくなっているのに、CoveredCalc の方ではわざわざ間違ったコードを書いてあります。
いったい、その頃の自分は何を考えていたのか‥。

32 ビットのビットマップや 16 ビットのビットマップデータを持っていなかったのでテストしてなかったのがいけませんでした。反省して修正。バージョンアップリリースはもう少し確認できてからの予定です。ソースコードはコミットしてあります。(r12)
まだ 32 ビット(各プレーンのビットマスク情報付き)や 16 ビットビットマップではテストできていません。ファイルデータを持ってないし。作らなきゃいかんかな。

メモ:32ビットのビットマップは、画像編集ソフトでアルファチャンネル付き PNG で保存し、これを Windows XP に標準搭載のペイントで開いて 24 ビットのビットマップとして保存することで作成できます。開いてすぐさま保存するのがポイント。編集してしまうと 32 ビットになりません。
[PR]
by hironytic | 2007-03-13 23:37 | 開発状況