Hironytic Status

ひろんの開発日誌

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

2006-12-20 13:40:12 | 開発状況
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 形式に統一したいですが、ダイアログテンプレートのメリットがあるので、もう少し検討してから‥‥。

[CoveredCalc] 1.6.0 リリース

2006-12-03 10:37:38 | 開発状況
予告どおり、CoveredCalc version 1.6.0 をリリースしました。
基本的な機能追加点は、前回の予告通りです。
  • カバー上の部品による基数切り替え&表示
  • 選択している基数に応じて、入力できないボタンのグレーアウト(無効表示)
  • ボタンの上にマウスカーソルが乗ったときのボタン画像の変化

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

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

一応、次はキーボード操作のカスタマイズにとりかかろうと思ってます。
ここで BeOS についてもファンクションキーを判別できるようにするつもり。