[CoveredCalc for Windows] レイヤードウィンドウ

Windows 版でレイヤードウィンドウ対応の開発を進めています。
2月終わりくらいにやろうと思って、3月中旬に手をつけ始めて、4月半ばの今頃、ちょっとは動くものができた程度という開発の遅さ。
ソースの修正量は全く多くないし、調査に時間がかかったというわけでもありません。単にあんまり開発してなかっただけ。

a0011820_22444865.jpg


添付のスクリーンショットは開発中のものです。
ディスプレイやキー部分を除く一部が半透明になって透けています。
実際のところ、Adams(デフォルトカバー)を半透明にしてリリースしようとは思っていません。
[PR]
# by hironytic | 2007-04-15 22:47 | 開発状況

[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 | 開発状況

[CoveredCalc] オープンソースプロダクト化

新バージョンをリリースしました。
 Windows 版:1.6.1
 BeOS 版 / ZETA 版:1/7/1

このバージョンからライセンスが MIT ライセンスになり、ソースコードと同じになります。これまではソースコードとバイナリリリースは別プロダクトというスタンスでしたが、これからは同じオープンソースプロダクトになります。

また、Google Code 内にプロジェクトページを作成しました。
 http://code.google.com/p/coveredcalc/
今後、不具合報告や実装予定機能などの管理には、Google Code 内の Issues を使っていこうと思います。

開発状況については、今まで通りこのブログに書いていきます。
[PR]
# by hironytic | 2007-02-25 23:17 | 開発状況

[CoveredCalc for BeOS/ZETA] 非アクティブ時のホバー抑制

BeOS/ZETA 版ではメインウィンドウが非アクティブな場合、マウスでクリックしてもアクティブになるだけで、そのときマウスカーソルがあった位置のボタンが押されたりはしません。
BeOS ではそれが一般的なため、敢えてそういう仕様にしています。(初期のころはそうしてなかった)

なのに、非アクティブでもボタンの上にマウスカーソルを持って行くと、ボタンの絵が変わるホバー動作が行われるのがずっと気になっていました。
今日、ふと思い立って、BeOS/ZETA 版では非アクティブ時にホバー動作が行われないようにしてみました。
たぶん、そう修正できたはず‥‥というのも、たまたま起動してたのが Windows マシンだったので、Windows マシンで修正したから。
まだ BeOS ではビルドしてみてないので、ほんとうに修正できているのかどうか確認はできてません。
[PR]
# by hironytic | 2007-02-01 23:28 | 開発状況

[CoveredCalc for BeOS/ZETA] XML 言語ファイルのミス

やってしまいました。

リリースした CoveredCalc 1.7.0 (BeOS/ZETA) の言語ファイルですが、XML ファイルの先頭付近に xmlns:cclx= とあります。これは xmlns= の間違いです。
が、これまでずっとこの間違いに気付かずにテストしてきたので、xmlns= にすると、正しく読み込めないかもしれません。(汗)
※ XML パーサが対応していないのではなくて、自分が作った「なんちゃってDOM」が対応できてない可能性大。

今、手元に BeOS 環境がないので試すことができませんが、帰ったら試してみようと思います。うーむ。

【追記:2007/01/24 23:15】
帰って試してみました。xmlns=にしても動くみたいですね。
近いうちに xmlns= に差し変えたものを 1.7.1 としてリリースします。(^^;
[PR]
# by hironytic | 2007-01-24 19:39 | 開発状況

[CoveredCalc for BeOS/ZETA] 1.7.0 リリース

言語ファイルを XML 化した CoveredCalc for BeOS および CoveredCalc for ZETA のバージョン 1.7.0 をリリースしました
本当は日曜日(21日)にリリースする予定だったのですが、リリース直前、右クリックメニューからダイアログを開いたときにときたま落ちるという不具合を見つけ、修正にあたっていました。

日曜日の深夜には修正できていたのですが、リリースする時間がなくなったのでリリース延期しました。
月曜日の夜はリリースできたはずですが、ついつい、ドラクエV(PS2版)のレベル上げをしていたのでリリースできませんでした(ぉ
ということで、今日、リリースしました。

なお、言語ファイルを作ってみようと思う方以外はたいして変化ないです。むしろ不安定になっているかも。
言語ファイルの仕様は後ほど公開します。でも、まあ、大まかには CoveredCalc/NLS/*.cclxb を見るだけでわかるのではないかと。
[PR]
# by hironytic | 2007-01-23 23:27 | 開発状況

[CoveredCalc] 言語ファイル見直し

CoveredCalc の言語ファイルは現在 3 種類あります。Windows 用、BeOS/ZETA 用、ZETA LocaleKit 用です。ZETA LocaleKit 用は ZETA 標準の機能なのでおいとくとして、残りの 2 つは CoveredCalc 独自の形式です。これら 2 つは実質「リソース」形式です。具体的には Windows 用が「リソースDLL」で BeOS/ZETA 用は「リソースファイル」です。
CoveredCalc が言語ファイルを使って UI の言語を切り替えられるようになったのは 1.4.0 からですが、構想自体は最初のバージョンをリリースする前からあり、それに関連する実装の一部も最初のバージョンから入っていました。当初、ダイアログでも文字列でも OS のリソース形式で持っておけばリソースエディタを使って自由に修正できるから便利だろうと考えたためリソース形式になっています。

ここで言語ファイルから少し離れて、BeOS/ZETA 版 CoveredCalc におけるリソースの利用方法に触れておきます。
文字列リソースはそのまんまですが、例えばダイアログなどのリソースは最初は Interface Elements のリソースでした。つまり、BWindow をシリアライズしたリソースです。しかし、独自コントロールをシリアライズしにくいだとか、BTextView のように設定した情報をすべてシリアライズしてくれない中途半端なコントロールが存在したりといったことから、1.3.0 から形式を変更しました。1.3.0 以降は、ダイアログとメニューについては、位置情報や表示テキストについてのみ独自形式の構造体に持つようなリソースになっています。Interface Elements は使えないので、Haiku プロジェクトの成果物であるリソースコンパイラ rc を使ってリソースを作成しています。

さて、1.4.0 で導入した言語ファイルですが、当初の構想どおり本体と同じ形式のリソースファイルになっています。つまり、BeOS/ZETA 用リソースファイルのダイアログについては位置情報や表示テキストが入っています。が、あらためて見てみると、Interface Elements のようなリソースエディタが使えないので誰でも簡単に修正できません。
さらに BeOS R5 や ZETA には標準で含まれない rc を使って作成するため、言語ファイル(リソース)のソースを公開しても、修正のためには rc をビルドする必要があって大変です。
最近、言語ファイルのソースを公開しようとしてドキュメントなどを揃えていたのですが、これは大きな間違いを犯したと気付きました。

少なくとも BeOS/ZETA 用については、言語ファイルの情報をリソースに持つメリットが特にないので、XML 形式に変更しようとしています。
Windows 用についても XML 形式に統一したいですが、ダイアログテンプレートのメリットがあるので、もう少し検討してから‥‥。
[PR]
# by hironytic | 2006-12-20 13:39 | 開発状況

[CoveredCalc] 1.6.0 リリース

予告どおり、CoveredCalc version 1.6.0 をリリースしました。
基本的な機能追加点は、前回の予告通りです。

  • カバー上の部品による基数切り替え&表示
  • 選択している基数に応じて、入力できないボタンのグレーアウト(無効表示)
  • ボタンの上にマウスカーソルが乗ったときのボタン画像の変化

予告では忘れていましたが、それ以外に次のバグ修正、改善を行っています。

  • 16 x 16 より小さいビットマップ画像の読み込みに失敗する可能性があった処理を修正した。
  • 16 bpp、32 bpp のビットマップの場合に、R、G、B それぞれの構成要素に何ビット割り当てるかが定義されていれば、ちゃんとそれを参照するようにした。
  • RLE 圧縮の DIB をエラーとして検出するようにした。(これまでは扱えもしないのに読み込みでチェックしてなかったので、読み込むと困ったことになってたんじゃないかと思います)
  • 既にメモリ上にロードしているビットマップファイルを重複してロードしないようにした。(同じビットマップファイルを使い回しているカバーの場合にメモリの消費量が抑えられるはず。

なお、基数切り替えは、Windows 版なら F6 ~ F8 キーでも行うことができるようにしました。
BeOS 版 / ZETA 版では、現在のプログラムの作りではファンクションキーが判別できない^^;ので、次バージョン以降で対応ということで。仕様ということにさせてください。(^^;

一応、次はキーボード操作のカスタマイズにとりかかろうと思ってます。
ここで BeOS についてもファンクションキーを判別できるようにするつもり。
[PR]
# by hironytic | 2006-12-03 10:36 | 開発状況

[CoveredCalc] 1.6.0 予告

CoveredCalc version 1.6.0 として実装しようと思っていた機能を実装し終えました。

  • カバー上のパーツで現在の基数(2進数/8進数/10進数/16進数)の表示とその切り替えを行えるようにした。(このへん)
  • ボタンの上にマウスカーソルを合わせたときにボタンの表示が切り替わる機能の追加。 (このへん)

が変更点です。

特に、2 つ目の方は、一定時間かけて徐々に切り替わる動作を実現できるようにしました。

とりあえず、Windows/BeOS/ZETA での実装は終わっているので、次に手が空いたときにリリース作業(マニュアルの更新とか zip に固めるとか)を行う予定です。
[PR]
# by hironytic | 2006-11-27 16:47 | 開発状況