あまつぶ

9.23 【背景の保存】

 デスクトップのアイコンは相変わらず左によっている。しかし、しばらくは違和感があったのに慣れてしまえばどうということもない。画面一番右にはPhutが陣取っているから、左にずれている方がかえっていいのかもしれない。ウィルスも見つからないしディスクの異常もないことだし、気にせずいくことにしよう。

 IconPartyの背景(バックグラウンド)機能のこと。今日リリースした0.95b7から背景の状態を表示するアイコンを追加してみた。クリックすると前景と背景の切り替え(背景のない画像の場合は背景の追加)、しばらくクリックし続けるとメニューが出てきて背景の統合や削除なんかもできる。
 メニューから実行できるからとりあえずそれでいいかなと思っていたのだけど、実際に追加してみるとかなり便利だ。メニューから選ぶよりも直感的で分かりやすい。表示される人のアイコンはともかく、自分でいうのもなんだけどいい出来だ。0.95b1〜0.95b6までを使っている人はすぐに乗り換えるべきだ(バグもたくさん修正したことだし(笑))。

 この機能によって背景と前景の切り替えが簡単に行えるようになったのはいいが、まだ問題がいくつかある。まず致命的なのは、背景と前景をまとめて保存することができないことだ。「統合」したあとに保存すれば大丈夫だが、それを忘れるとせっかく作った背景が破棄されてしまう(一度自分でそれをやってしまってかなりショックだった)。そんなわけで、急いであわせて保存できるように修正。
 当初、前景と背景はPICTリソースの形で保存すればいいかなと考えていたのだけど、マスクのリソースも考えないといけないしいろいろとややこしい。それにリソースだとResEditとかで削除されてしまったりして他のデータとの整合性がとれなくなる可能性もある。そのためになにかまたリソースを追加……というのではややこしくて仕方がない。
 そこで、もともとPictureはドローコマンドを組み合わせたものなんだから、記録する時に2回重ねてCopyBits()しておいてあとで分割するという方法を取ることにした。試しに保存部分だけを作って保存し、それをクラリスワークスのドローで開いてみると「グループ解除」で見事に分割成功。方法はまだわからないけど、できるということは確かだ。CopyBits()の際のマスクも保存されているようだし、それならPictureひとつですべてすむではないか。また、独自のリソースを使う形式に比べて、再利用がしやすいという利点もある。

 保存で楽をした分、読み込みはちょっとややこしい。とはいっても、CopyBits()部分を取り出すだけだからbottleneck procedureのbitsProcを置き換えるだけだ(blttleneck procedureについては、Pictureを直接ファイルに保存する方法の話で6.28に触れた)。と、その前に、BitMapあるいはPixMapが2つだけ含まれていて、他は含まれていないというのを確認する必要がある。また、今回はIconPartyで保存されたPICTであることを示すためのコメントを追加してそのコメントも確認するようにしてみた。
 PictureにBitMapとPixMapが2つだけ含まれていて……というのはGetPictInfo()で調べることができる。これは簡単だ。あとはbitsProcを置き換えてDrawPicture()を呼ぶだけ。置き換えたルーチンの中では、それぞれのBitMap(かPixMap)をどこかに保存(CopyBits())してやるだけ。置き換えたルーチンの中でグラフポートを切り替えて描画しても大丈夫かどうかちょっと不安だったが、大丈夫なようだ。グラフポートを切り替えずに描画すると自分自身を次々に呼び出す無限ループに入ってしまいそうな気がするが、こわいので実験していない。

 読み込みルーチンはさっき作ったばかりでテストもほとんどできていないので、他の部分も手直しして次のバージョンで。
 あ、そうだ。いきなりバグ情報。背景があるときに、前景でカットや回転して取り消した時に画像の一部が消えてしまうバグがある。こうなってしまった場合は、「効果」メニューから「透明」などを選ぶと元に戻るので、次のバージョンまではこの方法で堪えてもらいたい(汗)。他の不具合の場合にも、「透明」で復活できる場合があると思う。参考までに。

to September 19, 1999 ↑ to September index → to September 24, 1999