JPEGの読み込み
真魚のJPEG画像読み込みが遅くなった気がしてたんだよ。読み込みってのは最初の一回目だけで、あとは描画速度になるわけで、起動して一番最初に描画されるべき編集エリアが、以前に比べて遅いタイミングで出来上がることが気になってた。MDI化とかもしたから、その影響で起動が遅くなってるのかとも思ったが、背景画像をなしにしたら普通に速くなったので、原因は画像の読み込みなんだと気がついた。
テキストエディタのくせに背景画像のアルファブレンディングは要らないと思うけど、どうせ裏画面で描画して表画面に一括コピーする方式なら、その裏画面が白紙だろうが画像だろうが、ボトルネックにはならないだろうと言う事で、おまけでそういう機能を付けている。おまけだからあたし自身はあんまりこだわってなくて、ちゃんと動作しているかどうか確認するためだけに、設定しても編集作業の妨げにならない程度のどうでも良い画像を背景にして使ってきた。今はWindows7で、ついてくる壁紙のサイズも大きくなってるから、その大きいサイズの壁紙を真魚に使ったことで、今まで気がつかなかったJPEG読み込みの遅さに気がついたんだろうか。それともMDIにしたことで挙動をよく注意してみたことで気がついたんだろうか。はたまたDelphi XE2では昔のDelphiより読み込みが遅いんだろうか。いずれにせよ、今の真魚では起動時に編集エリアが出来上がる前に一瞬、MDIの背景が見えて、遅れて子ウィンドウが出来上がる。そうではなく、親ウィンドウが起動した時点で子ウィンドウも出来上がった状態で表示されて欲しいし、JPEGさえ使わなければそうなるんだよ。Gifは試してないので分からないが、起動を遅くすることが確認できたJPEGをPNG24に変換して使用して見たところ、背景指定なしの場合と区別がつかない速度で起動した。だからJPEGがともかく遅いわけだ。
遅いったってどうにもならないかなぁと思ってたんだけど、読み込みを画質優先にするか速度優先にするかのオプションがあったので、それを速度優先に変更したら普通に速くなった。もう編集エリア作成前の何もない塗りつぶしは表示されない。しかしそれで画質が落ちてるって事になるんだよな。うん、正直分からない。それ以上に、以前の真魚ではメモリー節約のために背景画像を16bitで読み込んでいたんだけど、今回Windows7に付属のフルカラー壁紙を読み込んだことで、それだと減色が荒くて汚いと言う事に気がついたため、少し前からフルカラーで読み込むように変更して画質は向上している。もちろん、読み込み速度改善のためにこの部分を元に戻したりも試したが、どっちにするかで速度は一切変わらず、だったらフルカラーの方が良いと言う結論で現在に到る。よく画像を扱う人だと、JPEGの画質低下の傾向に慣れてて、ぱっと見で画質落としたって分かるのかも知れないが。あとどんな画像かによっても画質の違いが出やすい物と出にくい物があるかも知れない。おまけだからさぁ。
それから、メニューとツールバーをDelphi標準じゃないものにしたので、内包していた問題ともオサラバしてメニューにアイコンを付けた。付けたのはほんの少々だけど、それは見た目を良くするためじゃなくて、機能として必要な部分としてやっている。例えば以前開いたファイルのリストには、すでに今開いているファイルも書かれていて、開いてるファイルはそれがすぐ分かるようにアイコンを変える。しかも、いかにも読み直ししそうなアイコンにすることで、すでに開いてるファイルを選ぶとどうなるかを視覚的に伝える。これは機能なわけよ。それからクリップボード履歴にもペーストしそうなアイコンをつける事で、その履歴を選べばペーストするよって視覚的に伝える。これらは元々以前の真魚にはあった機能だったんだけど、Delphi標準のメニューに問題があり、標準じゃないメニューはユニコード化されないまま更新ストップし、仕方なくあきらめてアイコンなしにしていたわけだ。それを復活させたと。しかし一方で、メニューにアイコンをおいたことで、その同じ位置に描画されるべきチェックマークが見えにくくなるという問題は解決出来ていない。よって、すでにアイコンを用意してあっても、あえてアイコンを使わない項目とかもあったりする。いや最初からそうするべきだったんだけど、ついつい全部アイコンつかうか、一切使わないかでしか考えられなくなってた。
さらにこれも標準じゃないメニューのおかげで実現してるんだけど、昨日の更新した分の最近開いたファイルのメニュー上での書き方に関して、ファイル名を左に揃えてパスを右に揃えるって事が出来て、とっても見やすくなった。本当は二行にわけで表示できればさらに見やすくなると思うけど、さすがにそうなるともうメニューじゃなく別の機能で実現しなきゃ行けなくなると思う。
よそのDelphi製タブかつMDIのアプリを動かしてみたが、やっぱりタブ切り替えの時に一時的に最大化してない子ウィンドウが表示されてるんだよ。C++で作ってるアプリはそうならないのにDelphiだけそうなってるからなおさら、あたしは気になって仕方ないが、よそのアプリはそのままにしてるって事は、あんまり気にする事じゃないのかね。JPEGの件もそうだが、描画を安定させたいって気持ちが強いので、今回アップデート分でもまだ納得いってない。あ、ちなみに今日もアップデートしたんだよね。