矩形選択の Undo まわりにバグがいるようなので、それを直したら nightly build 出しますねぇ。


[PR]
# by knife37 | 2005-09-24 21:47 | バグ修正  | Top  | 
段落ごとインデントする機能


作ってみました。


まずこの機能自体の on/off をプロパティ indent-paragraph で指定します。


それから以前考えたように、段落最初の行の空白があまりに長すぎる場合、後続する行のインデントを単純に合わせてもみ難いので、プロパティ indent-paragraph-limit というのを 0.0 ~ 0.75 くらいで指定するようにして、空白文字列が折り返し幅に対してその幅以内の割合ならインデントする、というような感じにしてみます。


空白文字列というのは、タブか Unicode のプロパティが Zs な文字ということなのですが。これに追加の文字列を指定できるようにしたら便利といえば便利かな。



◎箇条書きみたいな感じに表示する
 ことができます。

のように空白列 + 任意の 1 文字までをインデント量とみなす感じ。必要でしょうか?


[PR]
# by knife37 | 2005-09-22 21:23 | 新規実装  | Top  | 
ハッシュ

字句解析のパフォーマンス。まず Lex.AddKeywords() で追加するキーワードの探査です。



More
[PR]
# by knife37 | 2005-09-21 20:38 | ロジック修正  | Top  | 
スクロールとか

スクロールで描画がずれるのを修正。。。? 原因はだいたい分かったのですが、うちで出ないバグというのはやっかいです。


世代つきバックアップに失敗するのを修正。


前に書きましたが、バックアップのパス名で '%' で始まるマクロがあるのですが。環境変数の展開をさせようとするとかち合うので、'$' で始まるようにしようと思います。


同様に、バックアップファイル名やウィンドウのキャプションにも '%' で始まるマクロがあります。こっちは環境変数を展開するわけではありませんが、いちおうマクロは '$' に合わせてみます。


してみました。よさそうですが、プロパティから取得したバックアップパスを丸ごと ExpandEnvironmentStringsW に渡すと、'%~%' という文字列そのものとか、'%' 自身を含むパスを指定することができないような。結局自前でパスを走査して、'%~%' を切り出す必要がありそうです。


ということで、そうしてみました。


[PR]
# by knife37 | 2005-09-20 20:56 | バグ修正  | Top  | 
nightly build

そんなわけで、nightly build です。


[PR]
# by knife37 | 2005-09-18 22:28 | リリース通知  | Top  | 

ぼちぼち nightly build を出してみようかな。


表示まわりのボトルネックをまとめると、



  • そもそもうちのマシン(PentiumIII-S 1.13GHz、i815、RadeonVE、DirectX8.1)が速くない

  • DIBSection に対する ScrollDC()、TransparentBlt()、BitBlt() がまんべんなく速くない。DDB で持てば速くなりそうなものですが、なぜか余計に遅くなる(TBitmap はいろいろな面倒なものを隠蔽してくれるかわり、中はけっこう複雑なので理由は不明)

  • スクリプトの制御や字句解析はそれほど負荷にはなってない


ということみたいです。




字句解析まわりがボトルネックではないとはいえ、極端にキーワードが多い場合や *return* 遷移は重くなることが分かっています。次は字句解析まわりを洗ってみます。


[PR]
# by knife37 | 2005-09-18 14:11 | 妄想を申そう  | Top  | 
いろいろ修正

ものすごく後ろ向きな高速化(というか、低負荷化)ですが、キーリピート中は再表示を 2 回に 1 回間引くようにしてみました。すごく動きが微妙です、かくかく~て感じ。プロパティ lazy-repaint で指定し、true のとき間引くようになります。デフォルトは false です。



実になんの意味もありませんが、アクティブなタブにグラデーションをかけてみました。


ウィンドウのサイズを変更したときにできるだけ表示が乱れないようにしてみました。


補完を確定するとき shift を押している場合はキャレットの右側を補完の対象としないようにしてみました。





CrystalMark でうちのマシンのベンチとってみました。えー、登録 35312 件中の 33420 位、GDI だと 29221 位。。。


マジか。


[PR]
# by knife37 | 2005-09-16 22:57 | ロジック修正  | Top  | 
あまり効果がない

ということで、そうしてみました。


一応合成自体は最大で 1 割ほど速くなった。。。みたいだけどぜんぜん体感できないや。


だめじゃん。


うちのマシンのように Blt 自体がそれほど速くないとなると、そもそもオフスクリーンバッファを使ってることがネックになってしまいますね。。。壁紙がなければオフスクリーンバッファなしで行くんですけども。


どうでもいいですけど、オフスクリーンバッファを使わずスクリーンだけで表示を完結させたい場合って、たいてい WM_ERASEBKGND が邪魔なので DefWindowProc を呼ばずにリターンさせるのですが、このメッセージの存在意義がよく分からないなあ。



More
[PR]
# by knife37 | 2005-09-15 19:23 | ロジック修正  | Top  | 
速くする 2

壁紙との合成から考えてみます。


この合成というのは、Windows2000 から実装された TransparentBlt() という API を呼んでいるだけだったりします。これは、転送元のデバイスコンテキストうち透明とみなす色を渡すことで、その色以外だけ転送ということができる。


この API ですが、そんなに速くないっぽい。カーソルキーを押しっぱなしにしてスクロールさせたりすると、CPU 使用率が簡単に 80 とか 100% いってしまいます。なんか CPU だけで処理しているような感じ(少なくともうちのマシンでは)。試しに Delphi で同じようなことをするコード(転送元矩形に対して、透明色以外なら転送)を書いてみても、あまり速度が変わらなかったりします。


どうでもいいですが、この TransparentBlt() とか AlphaBlend() って、msimg32.dll に入ってることになってますが、Windows2000 だと本体は gdi32.dll にあるっぽいような。msimg32.dll はたぶん Win9x 系でも使えるようにするためのラッパということなのかな。


で、これをどうやって速くするかなのですが。。。



More
[PR]
# by knife37 | 2005-09-14 21:32 | 妄想を申そう  | Top  | 
速くする

もしかしたら 2 週間ほど更新できなくなるかもしれません。




読んでも何の意味もありません。


バッファに対する変更が、画面に反映されるまでの流れを、忘れないように記しておきます。



More
[PR]
# by knife37 | 2005-09-13 19:57 | 妄想を申そう  | Top  | 

 | 
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
検索
最新のコメント
Hi! Good stu..
by lacedkl at 10:19
i think abou..
by MaybridabanTy at 06:31
Thank you!
by Roy at 20:27
Thank you!
by Patrick at 20:26
Great work!
by Andy at 20:25
Thank you!
by Rex at 20:23
Great work!
by Maggie at 20:23
I love it: ..
by siljb at 15:51
Keep up t..
by reizomo at 15:40
http://0buyp..
by affomfobe at 02:56
最新のトラックバック
football nfl..
from football nfl t..
big penis
from big penis
lossless aud..
from lossless audio..
julianna ros..
from julianna rose ..
mind games
from mind games
game online ..
from game online po..
outer bank p..
from outer bank pet..
lingerie tee..
from lingerie teen ..
pisces chara..
from pisces charact..
wakefield co..
from wakefield coll..
フォロー中のブログ
ファン
記事ランキング
ブログジャンル
画像一覧