あまつぶ

12.1 3:30

  12月だ、12月。今日は、Sentierの3周年のめでたい日だ。といってもまあうちでサーバに名前がついて動き始めただけの日だからたいした価値もないかも知れないけど。ま、でもぼくにとってはちょっと嬉しい日かな。

 こんな時間にこれを書くことになってしまったのは、某IconPartyを久々にいじっていたから。ウィンドウごとに大きさや倍率が違うというのを実現するためにソースを大幅に変更したら思った以上に時間をくってしまった(しかもまだバグがとれていなかったりするし)。
 これを作りはじめた最初の頃はウィンドウ1つしか考えていなくて、画像のデータからなにからなにまで全部グローバル変数に入っているというとんでもないプログラムだった。いつのバージョンだったか忘れたけどそこから複数のウィンドウになったのだけど、そこでそれまでに作っていたプログラムをできるだけ変更せずに……という手抜きをしたため、プログラムがもう複雑怪奇になってしまっていた(笑)。今回ついでにここもすべて書き換えたのでかなり時間がかかった。しかも何度となくフリーズと再起動を繰り返し……。ようやくまだバグはあるもののフリーズはしないところまで漕ぎ着けたのでこれを書くことにしたというわけ。
 久々に触ったのでなにがどうなっているのかよくわからない部分もあったが(最初からほぼ無計画に作っていたんだからそりゃそうだろう)大筋は理解できたかなって感じ。とりあえず見つかっているバグを片っ端から直してあとは倍率や画像サイズを変更できるようにしたら次のバージョンとしてリリースかな。プログラムの中身はだいぶ変わったんだけどみかけはほとんど変わってないから(というか今の時点ではバージョンダウンしている……)おそらく0.10b8だと思う。変更の目玉はおそらく(っていうのはまだできてないから(苦笑))倍率と画像サイズの変更だが、その他に不透明度(これまでは透明度だったが逆に不透明度に改めた)をポップアップメニューで変更できる、カラーモードの変更にApple Icon Colorを追加、などがある。細かいバグはいくつか直してある(はず)。
 アイコンのサポートは相変わらずまだ(汗)。インタフェースのアイデアだけは多少固まってきたので次回にでも「IconPartyのnew versionはこうなる!!」みたいなのをやってみたい気もする。が、プログラムを作るだけで力つきた場合はこのかぎりではない(笑)。

 テーブルに入っていても表示されないが、「文字がある」と認識される文字、コードでいうと16進数でA0っていう文字がある。なんでこんなものが必要かというと、テーブルの背景色はほしいけどそこにテキストがあるのはいやっていう場合かな? 別に全角スペースとかでもいいんだけど(あるいは半角ピリオドを背景の色と同じ色で配置しているページもあった)これのいいところは「横幅が狭い」ということだ。ひょっとしたらこれを使えば画像を使わずに横幅1ピクセルのテーブルを作れるんじゃないかと思ったんだが、、それはできないようだ。いくらやってみても4ピクセル以下にはできなかった。
 結局、あまり役にたつというわけでもなさそうだ(なんじゃそりゃ(笑))。

 「門」の四角号碼についてちょっと補足。確実なことはさっぱりわからないのでなんとも言えないがぼくなりの解釈(だれか知っている方がいたらほんとに教えてほしいんだけど)。「門」をばらばらに分割して

┛┗
┃  ┃
で、まず上の赤2つで「77」、まん中の緑2つで「77」、その上の紫の部分で付角の「7」ととるということだと思う。Kanaさん@Kana's Home Pageに送ったメールの内容と全く一緒なんだけどWebなら色分けできるしわかりやすかろうというわけで掲載。

 次回はおそらく上にも書いたようにIconPartyの今後について。力つきた場合はほかのどうでもいいこと。VisualPageが重たくなってきたのでとりあえずこのへんで。
 17:00

 Geneva2Osakaの限界について少し。TattleTechというアプリケーションで文字化けが解消されないという報告をいただいた。ダウンロードして試してみるとたしかにだめだ。以前のバージョンではいけていたということなのでおそらくDrawStringを使って文字を描画しているのだろう。それで、どう表示しているのかを調べるためにいろいろパッチを当ててやってみたがどうにも引っ掛からない。ictbリソースが入っていたので強引にGetFNumを変更してみてもだめだった。リソースをいじってもだめなようなので、おそらくソース内部で指定しているのだろう。TextFontでもかからないので直接指定しているということかも知れない。
 表示している部分は見たところリストマネージャを使っているように見える。そこでLNewにパッチ……と思ったがこれは_Pack0(0xA9E7)というトラップを使っていてこれをいじるのは一筋縄ではいかない(っていうかぼくにはわからない(苦笑))。で、ひょっとしたらダイアログを作成する時点で捕まえればなんとかなるかもしれないとGetNewDialogにパッチを当ててみたがこれもだめだった(先にSetDialogFontを実行してダイアログを作成しているのであればこれでいけるのだが)。ということはおそらくGetNewDialogでダイアログを作成したあと、直接txFontを書き換えているということになる。もうこのすぐあとにLNewを呼んでしまってそれから先DrawStringが呼ばれるまでにトラップはないだろうから、そうするともうなす術はない。
 と、待てよ。LNewがなにか引っ掛けられるトラップを呼んでいる可能性がまだ残っているな。どこかでポートに指定されたフォントを調べているだろうから……、GetPortくらいは呼んでいるかも知れない。GetPortなんてパッチしたら他のところでなにか問題が出てくるかも知れないが、とりあえずやってみるか。
 結果は、文字化けは解消された。他の部分でも特に問題はなさそうだ。が、副作用で今まではTE内のGenevaは置き換えなかったのがすべてOsakaに置き換わるように変わってしまった。カーソルのずれなどの症状はないようなのでこれならokかもしれない。多少速度が低下するとは思うがまあ満足できる結果になったのでこれでよしとしよう。
 今回は一応なんとかなったが、今後も同じようにうまくいくとは限らないし、そのうち限界がくると思う。その限界をこえようと思ったらおそらくアプリケーションごとに設定を変えるという方法しかない。それはやりたくないのでそこまで到達したらそこで終わり。前にも書いたように多機能で完璧なものを目指しているわけではないから。

 少し……のつもりが長くなってしまった。このあとにIconPartyの話をするのもなんなので、あとは軽い話題で終わることにしよう。
 CodeWarriorのIDEで、今まで知らなかったショートカットを発見。Cmd+カーソルキーで、上下ならファイルの最初あるいは終わりに、左右なら行の最初あるいは終わりに移動できる。プロジェクトファイルに移動するのにCmd+0をよく使うのだがそのときに間違えて(どうやったら間違えるんだと言われそうだが)上矢印を押してしまっていきなりファイルの頭に飛んだので驚いてしまった。試しに他の矢印も試してみたら発見というわけ。ドキュメントのどこかに書いてあるんだろうけど全然知らなかったっけ。ま、使えるかどうかはちょっとわからないけど(笑)。
 使える機能としてはプロジェクトファイルなんかのタイトルバーをCmd+クリックするとFinderのウィンドウみたいにフォルダの階層が表示される機能がある。これは便利だ。某IconPartyにも搭載したいなと思う機能であったりする(笑)。メニューの構築はそのファイルの親フォルダを順に調べていって並べるだけだからこれは簡単かな。表示位置の決定がちょっとめんどくさそうだな。FinderでもIDEでも開いているファイルの名前の幅を調べてそれがちょうどまん中にくるように調整しているみたい。途中にそのファイル名より長い名前のフォルダがあったりするとちょっとかっこわるいけどこれが一番お手軽な方法か。ふむふむ。あとはメニューが選ばれた時にフォルダを開く処理が必要になるわけだけどこの「開く」部分はふぉるだ…でやったからokと。あとはそのフォルダの中にあるファイルかフォルダを「選ぶ」っていう処理が必要になるな(まあなくてもいいんだけど)。選ぶのはどうやるんだろう。これはまたAERegistryでも読まないといけないか(笑)。

 あれ? いつのまにIconPartyの話に。。やっぱりどうもいろいろ書きたいみたいなので次回、気合い入れて書こう(笑)。それより早くバグなおせって話もあるんだけど。

to November 30, 1998 ↑ to December index → to December 2, 1998