OnPaintで描画してる間、Paintするスレッドの優先順位を上げると同時に裏方スレッド全ての優先順位をぐぐっと下げたところちょっとマシになった。

高速スクロールしてる最中はカットの表示が間に合わない率は高くなったが表示がトロくてスクロールバーがひっかかったようになってしまう感は減った。

どうせ高速スクロール中はカットを視認できないだろうし^^;..

まあこんな方向で。
●タブの実装。

●もう少し大きめのサークル位置表示図示用のマップ表示。
今のサークルカット表示部分の下か右に表示されるようにする。

●リストモードの表示に CListCtrlのレポートビューを使うのをやめて ReadOnlyなCEditを並べるカンジに修正する。

●レイアウトタブの実装。
マップ、サークルカット(+情報)、を好きな大きさで自由に配置できる。あと直線やテキストも配置できる。用紙枠があって、その中を印刷できるようにする。
簡易的なベクター系グラフィックソフトのようなカンジで。
ただ、ブランクのレイアウトタブを新規に作成して後はどうぞご自由に配置してください、ではあまりにもフリーダムというか面倒臭すぐるので、初期状態で自動的にうまい具合にマップやサークルを配置するようなのが必要。で、ユーザが後でいろいろ調整できる、と。
その辺の仕様がまだ全然煮つまってない。どうすっぺ。

●レイアウトタブを作らんでも、サークルカット表示やリスト表示の時にそれを印刷できるようにする。

●エクスプローラバーの表示方法をいくつか選べるようにする。
現在ウィンドウ左側に1列で表示しているがあまりにも窮屈なので、
 ・左側に2列(広いモニタ向け)
 ・下に(タブレットなネットブックを縦に使う時とか)
みたいなカンジでいくつかの表示方法を選べるようにする



さて。
なるべく早いうちにレイアウトタブの実装にかかろう・・・
日曜に思いつきでやり始めてドツボにハマってしまったページロードスレッドの分離がようやく落ち着いた -_-;..

ファイルからメモリへのロードと、PNGラスタライズとを分離してパイプライン的に処理すれば、複数のページを次々に読みこむ時のCPUの稼働効率が上がるんじゃないかという目論み。HDDからの読み込みはCPUがHDDのタイミングに合わせなきゃならんので、裏で別のページのラスタライズが動いていればシングルコアなCPUでも効果があるハズ。

と思ったのだが。

まぁなんというか自己満足以上の効果は認められず -_-;..

2.4GHz のCore2Duoでは、HDDからファイルをそのままメモリに読み込むよりもPNGをラスタライズする方が圧倒的に時間がかかるっぽい。SSDならさらにその差が広がるだろうなあ。

ディスクIOと分離したので、一番処理の重たいPNGラスタライズ用スレッドの数を適宜増やすことができる。ただ、XPの問題なのかどうか知らんのだが、裏でもの凄い勢いでスレッドがCPUを喰ってると、表のスレッドのOnPaintでのテキスト描画が異様に遅くなる。テキスト描画だけ。テキスト描画のときにスレッドの優先順位を上げてもちょっとしか効果なし。なんでなんだろう。この辺Vistaや7ではどうなんだろう。

4コア以上、メニーコアが当たり前な時代がもうそこまで来てるので、あんま効率の良くないバケツリレー的マルチスレッド化でもとりあえずスレッドたくさん作って処理させればなんとかなるだろうとかそんなカンジで。実装中。


うーん、メインマシン(Core2Duo 2.4GHz XP on BootCamp)の更新は SandyBridge世代になってから・・・ と思っているのですが、その前に検証用に Core i7 でWindows7な環境を揃えておく必要がありそうだなあ・・・ ぐぬぬ・・
関係ないけど i7 って響きは あいなまさんを連想してしまう。そんだけ。