あまつぶ

12.13 1:00

 バグがなおったのでそのあたりの話〜近況を。
 原因は、なんと、ハンドルをロックし忘れていた……。ハンドルを用意してそこに編集ウィンドウに関するデータを格納していたのだけど、ハンドルのままで使うと構造体のメンバへのアクセスが「(**handle).」とか「(*handle)->」とかしないといけないのがいやでほとんどの場所で「*handle」を別のポインタに入れてそこから「pointer->」で参照してた。その間にメモリの移動が起こったらまずいなんて、常識やん(汗)。
 しかしこれがPowerPC環境では問題なく動いていたというのが謎だ。なんでかなー。OSがうまくやってくれるってことなのかな? あるいは偶然うまくいってただけかも知れないけど、不思議だ。
 結局、ハンドルを確保した後にHLockHiでロックしてやることにした。このメモリってウィンドウを開いてから閉じるまでずっと使うわけだからずっとロックしておいてもかまわないだろうと。しかしわざわざハンドルで確保してロックするくらいなら最初からポインタで確保した方がよかったような気もする。とはいえこれから書き換えるのも大変だし今のところはこれでいいかな。
 と、ここまで書いて、アイコンのリストのウィンドウの方も同様にロックしてやらないとまずいような気がしてきた。あとでチェックして必要ならロックするようにしよう。

 次のバージョンで予定しているグリッドの復活はなんとかできた。アップデートなどのルーチンではもうオフポートを使わずにそのままグリッドのパターンを重ねてしまうことにした。領域のドラッグの時だけはちらつきがかなりひどかったのでその部分だけオフポートを使用することにしてみた。結果は良好で、今までと速度的にもほとんど変わりないと思う。
 あとは回転関係の細かいバグを修正。なぜか180度回転するとずれるとかそのあたり。また、最後に使用した回転角度を記憶できるようになった(アプリケーションを一度終了するとデフォルトの90度に戻ってしまうけどこれは仕様ということで^^;)。
 その他は細かい修正ばかりかな。まだ画像サイズ変更などのルーチンは書いてない。考えたらオフポートのサイズを変更する方法を知らなかったり(苦笑)。おそらくはUpdateGWorldあたりを使うんだと思うけどこれからチェックの予定と。倍率の保存の方はできたけど読み込みはまだ。また、画面のサイズがあまり大きくない時に800%にしてしまうともう倍率を変更することができなくなってしまうという不具合があるが、、これどうしようかなぁ。ちょっと考え中。

 次回の予定は未定。
 20:00

 画像サイズ変更ルーチンを作成。最初、UpdateGWorldだけでさっとできてしまうのかと思ったらどうにもうまくいかず(なにか勘違いしているだけなのかも知れないけど)結局GWorldの大きさを変えると同時に内容をCopyBitsで転送してやるようにした。サイズ変更の取り消しもちゃんとサポートするために取り消しルーチンも書き直して、と。このあたりは以前からあとで拡張がしやすいようにしてあったからそれほど大変でもなかったかな(ありがとう>過去の自分(笑))。UpdateGWorldをした後にPixMapHandleのアドレスが変わるみたいだからそのあたりに注意するくらいで。
 サイズ変更の時には、現在の絵も拡大/縮小するかどうかなんていうのも選べるようにしてみた。もともとはUpdateGWorldにそんな機能があるみたいだからやろうと思ったんだけど結局はCopyBitsで拡大/縮小していたりするけど(苦笑)。これもまあ結構使えるかも知れない。これとは別に選択範囲の拡大/縮小なんてのもあればそれなりに使えるかなぁ。
 アイコンのウィンドウの方もロックしてやるように修正。このあたりはPowerBookでやってみていなかったけどたぶんまずいだろうということで。
 倍率の読み込みもできた。倍率が変更できなくなってしまう問題についてはウィンドウのタイトルバーをコントロール+クリックすることによって倍率メニューが出る機能を追加することで対処。わかりにくいけど、、まあ暫定的処置ということで。本来ならちゃんとスクロールバーを先にサポートして画面より大きいサイズになったらスクロールできるようにすべきなんだけど。
 自分で作っておいていうのもなんだけど、画像サイズの変更は結構気持ちがいい(笑)。取り消しも効くのでダウンロードしてみた人はちょっと試してみてほしい。あとは初期設定でデフォルトのサイズを設定できるようにするくらいだけど、ここはおそらくそれほど難しくないはず。とりあえず次のb4はこのあたりから手をつける予定。

 その日ごとにタイトルみたいなものをつけようかなとかふと思ったりした。でも、いろんなことを適当に書いていることも多いしなぁ。あるいは通し番号をつけるとか(いまさらかい)、その日の最初の部分に前日のアクセス数をいれるとか(いれてどうなる)。ん〜、なんか斬新なアイデアはないかなぁ。

to December 12, 1998 ↑ to December index → to December 15, 1998