あまつぶ

2.25 21:00 【システムフォントを変える】

 ふとまたシステムフォントを変更してみた。「Jspi Sys」という、Copland風のフォント(Takeuchi's Small Roomからダウンロード可能。ビットマップフォントの作り方なんかもあってためになる)。それからアプリケーションフォントは「Jspy Sans」に、Finderの表示フォントなども同様にしてみた。(書くまでもないと思うが、これらの変更にはGeneva2Osakaを使用(^^;;)
 システムフォントをいじるだけで見た目がかなり変わる。メニューはまるっきり変わるしダイアログの文字もすべて変わる。変えてからしばらくはちょっと違和感があるが、慣れてしまうとそれが普通。Geneva2Osakaの動作テストでOsakaに戻したりすることがたまにあるがその状態が却って妙に思えてしまう。ま、慣れの問題なのかも知れないけど。
 メニューバークロックのフォントも変更していろいろ雰囲気が変わってきたのでそのうちデスクトップのページも更新しないといけないかな。時計のほぼ完成バージョンのスクリーンも一緒に。その前にQT-Qで画像サイズ変更機能をサポートしてそれを使って掲載……の方がいいかなぁと思いつつ。

 QTのエフェクトを使う機能は、一応完成。が、相変わらず謎の枠が表示されてしまう。どうもフロントウィンドウではなくてカレントポートに枠が表示されてしまうというところまではわかったが、原因はさっぱりわからない。考えれば考えるほどQTのバグじゃないかと思うのだけど、、こんなバグがあるならどこかに情報があってもよさそうなものだ。QT関係のTechnoteをチェックしてみたがそれらしい項目はなかったし……。
 ダミーのウィンドウを用意してそこをカレントにしておくという姑息な手段で回避できそうな気はするが、なんかちょっと気持ち悪い。他にもっとスマートな方法がありそうだし、それ以前になにか勘違いしているだけという可能性もあるわけだし(QTShowEffectというサンプルプログラムでも同じような枠が表示されるという事実はあるが)。
 あるいは自分でダイアログを用意してそこに表示という形にしてやればokなのかもしれない。が、エフェクトによってダイアログの大きさが違うからそれにあわせるというのはかなりめんどくさそうだ。大きめのものを作って下の方は空白にしてしまうという手もあるけどそれもいまいちだしなぁ……。

 謎の枠の問題については解決策が見つかるまで保留することにして実際にエフェクトを使うルーチンを作成。こちらはドキュメントに書かれていたサンプルを参考にしてあっさりと完成。取り消しルーチンを追加すればそれなりに使えそうな気がする。IconPartyにも同じようなルーチンがほしいなと思いつつ、256色で動かすとあまりきれいにいかないようなので保留。内部ではフルカラーで処理して最後に256色に……ならうまくいくかもしれないけどそこまでしてサポートする必要もないかな。。
 元のイメージに手を加えることができるようになったので、JPEG圧縮以外での保存も考えるべきかも知れない。一番簡単なのは元のイメージをPICTかなにかで保存できるようにして圧縮率を変更したものについては別に保存(ImageReadyでもそんな感じだったかな)にするという形か。メニューをいじるだけですぐに実現できそうだからまずはそのあたりかな。今までと多少インタフェースが変わってわかりづらくなるかもしれないけど、いろいろできるようになってきたんだから仕方ないか。

 そういえば、ウィンドウの中身を再描画させるだけで10バイトのメモリリークが起こっているようだ。内容を見るとRgnHandleらしいのだが、プログラムを見るかぎりではちゃんと破棄できているはず。他にも細かいメモリリークがいくつかあってだいたい解決したのだけどここだけがどうにもわからない。rgnBBoxが{-32767,-32767,32767,32767}というちょっと謎なリージョンなのだが、、どこで作成してしまっているんだろうか。いつものようにどこかでくだらない勘違いをしているのだろうと思うけど……。
 以前、DrawGrowIconでメモリリークが起こるという話を聞いたことがあったのでひょっとしてそこかなと思ったが、関係ないようだった。DrawGrowIconをコメント化してみたがやはりリークが起こる。このあたりはOSのバージョンアップでいつの間にか修正されたのだろうか。同じルーチンを使用しているIconPartyの方では問題がないみたいだったし。最描画ルーチンもほとんど同じようなものなんだが、、なにがまずいんだろう。
 まあ10バイトくらいなら気にしなくてもいいかと思いつつ、見つけてしまったからにはなんとか解決しないと気がすまない。ルーチンの細かい部分をチェックしていってどこでリークが起こっているのかを調べていくくらいしか方法がないのかな。デバッガで追ってチェックした感じでは確保したリージョンはすべて解放できているみたいだったが……。

to February 24, 1999 ↑ to February index → to February 27, 1999