Scintilla/Line wrapping

Last-modified: 2008-03-02 (日) 12:19:53

行折り返し

  • SCI_SETWRAPMODE(int wrapMode)
  • SCI_GETWRAPMODE
  • SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)
  • SCI_GETWRAPVISUALFLAGS
  • SCI_SETWRAPSTARTINDENT(int indent)
  • SCI_GETWRAPSTARTINDENT
  • SCI_SETLAYOUTCACHE(int cacheMode)
  • SCI_GETLAYOUTCACHE
  • SCI_SETPOSITIONCACHE(int size)
  • SCI_GETPOSITIONCACHE
  • SCI_LINESSPLIT(int pixelWidth)
  • SCI_LINESJOIN
  • SCI_WRAPCOUNT(int docLine)

デフォルトでScintillaはテキストの行折り返しをしない。
行折り返しを有効にしたなら、ウインドウ幅よりはみ出す場合に次の行に続く。
行は、空白またはタブまたは異なったスタイルのランの間で途切れる。
1つのスタイルにおける単語がウインドウより広い場合、行に完全に合う最後の文字の後に途切れる。
折り返しモードがオンの場合、水平スクロールバーは現れない。


Scintilla行折り返しのため、視覚フラグ(小さい矢)を折り返された行のサブラインの終わりに引き込み次のサブラインを始める。
個別にこれらを可能にすることができる。しかし、Scintillaはこのサブラインの次のサブラインの開始で視覚フラグを描画する。
サブラインを始める。展示を描くのからの無党派が弛む、字下がりを持つことができる。


Scintillaはレイアウトとテキストの描画に多くの時間を費やす。
これらの計算に使用されるデータが変化しないとき、同じテキストレイアウト計算は何回も実行されるかもしれない。
いくつかの事情におけるこれらの不要な計算を避けるために、行レイアウトキャッシュは計算の結果を格納できる。
ドキュメント変化のコンテンツやスタイリングのような基本的なデータは、キャッシュが無効にされる。
全体のドキュメントのレイアウトをキャッシュするのにおいて、最も多くの効果がある。ダイナミックな行に最大20回をより速く折り返しさせますが、これは1行あたり文書内容によって必要とされたメモリの7倍と約80バイトを必要とする。


折り返しはすぐには実行されない。変更があっても、表示が再描画がされるまで遅れる。
次に、1セットの変化が一度実行されて、折り返されて表示されるのを許容することによって、この遅れは性能を改良する。
これのため、いくつかの操作は、予想されるように起こらないかもしれない。
ファイルが読み込まれて、スクロール位置がテキストの特定の行に移行したなら、コンテナであるときにそのようなものは前の編集セッションを復元しようとするとき、次に、スクロール位置が折り返しの前で決定していてしまうだろうので、予期していなかった範囲のテキストを表示するだろう。
正しい位置にスクロールするように、折り返しが初期のSCN_PAINTED通知を待つことによって実行されるまで、スクロールを遅らせる。

SCI_SETWRAPMODE(int wrapMode)

SCI_GETWRAPMODE

wrapModeにSC_WRAP_WORD (1)を有効にすると単語境界行折り返しになり、SC_WRAP_CHAR (2)を有効にするとどんな文字の間でも折り返し、SC_WRAP_NONE (0)を指定すると無効になる。
SC_WRAP_CHARは単語の間に余白が全くないアジアの言語のためにSC_WRAP_WORDより好まれる。

SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)

SCI_GETWRAPVISUALFLAGS

あなたは、行が折り返されるのを示す視覚の描画フラグを有効にできる。
wrapVisualFlagsに設定されたビットは、どの視覚フラグが描かれるかを決定する。

 

[heart] 表: 折り返し視覚フラグ

シンボル効果
SC_WRAPVISUALFLAG_NONE0視覚のないフラグ
SC_WRAPVISUALFLAG_END1ラップされた行のサブラインの終わりの視覚フラグ
SC_WRAPVISUALFLAG_START2二行目以降の先頭に表示する。
表示される行はその印のために少なくとも1文字分字下げする。
 

SCI_SETWRAPVISUALFLAGSLOCATION(int wrapVisualFlagsLocation)

SCI_GETWRAPVISUALFLAGSLOCATION

行クリップが行われていることを示すフラグを枠の近くに表示するかテキストの近くに表示するかを設定することができる。
wrapVisualFlagsLocationにはテキストに対応するフラグの位置を設定する。

 

[heart] 表: 折り返しの視覚フラグ位置

シンボル効果
SC_WRAPVISUALFLAGLOC_DEFAULT0枠の近くに表示する。
SC_WRAPVISUALFLAGLOC_END_BY_TEXT1二行目以降の行末、テキスト寄りに表示する。
SC_WRAPVISUALFLAGLOC_START_BY_TEXT2二行目以降の行頭、テキスト寄りに表示する。
 

SCI_SETWRAPSTARTINDENT(int indent)

SCI_GETWRAPSTARTINDENT

行クリップ発生時の二行目以降の字下げ量をSCI_SETWRAPSTARTINDENTで設定する。
STYLE_DEFAULTの空白文字の幅が単位である。
字下げ量に制限はないが、0以下や大きすぎる値は想定外の効果を起こすことがある。
二行目以降の字下げは字下げを示す印とは独立した設定であるが、SC_WRAPVISUALFLAG_STARTが設定されているときは、少なくとも一字分字下げが行われる。

SCI_SETLAYOUTCACHE(int cacheMode)

SCI_GETLAYOUTCACHE

あなたはテーブルのシンボルの1つをcacheModeに設定できる:

 

[heart] 表: 行キャッシュスタイル

シンボルこれらの行のためにレイアウトをキャッシュ
SC_CACHE_NONE0行はキャッシュされない。
SC_CACHE_CARET1テキストキャレットを含む行である。これがデフォルトである。
SC_CACHE_PAGE2表示行プラスキャレットを含む行である。
SC_CACHE_DOCUMENT3ドキュメントのすべての行である。
 

SCI_SETPOSITIONCACHE(int size)

SCI_GETPOSITIONCACHE

位置のキャッシュは、テキストの短い実行のための位置情報を置く。ランが再発するならさらにすばやく決定する。
SCI_SETPOSITIONCACHEと共にこのキャッシュのエントリーにおけるサイズを設定できる。

SCI_LINESSPLIT(int pixelWidth)

pixelWidth幅の行の中の目標によって示された行の範囲を分割する。
分割は同じように行ラッピングに可能なところならどこでも単語境界に起こる。
pixelWidthが0のとき、ウインドウ幅は使用される。

SCI_LINESJOIN

改行文字を削除することによって1つの行に目的によって示されたさまざまな行を結合する。
これが単語の間のスペースがないのに通じるところには、余分な空白が挿入される。

SCI_WRAPCOUNT(int docLine)

ラップするならドキュメント行は1つ以上の表示行を占領でき、ドキュメント行をラップする必要がある表示数を返す。