マージン
文字表示の左へ最大5つのマージンがあるかもしれなくて、加えてギャップはテキストのどちらかの側である。
各マージンがSCI_SETMARGINTYPENがあるシンボルか行番号のどちらかを表示するように設定できる。
各マージンで表示できるマーカーは、SCI_SETMARGINMASKNと共にセットされる。
テキストの背景色が変化として表示されるとき、目に見えるマージンに関連づけられなかったどんなマーカーも表示するだろう。
各マージンにピクセルの幅を設定できる。
幅がないマージンは完全に無視される。
あなたは、マージンにおけるマウスクリックがSCN_MARGINCLICK通知をコンテナに送るか、またはテキスト行を選択するかを選ぶことができる。
マージンは0から4の番号付けされる。
有効範囲外でマージン番号を使用するのは効き目がない。
デフォルトで、マージン0が行番号を表示するように設定されるが、0の幅を与えることは、隠されるということである。
マージン1は非折りたたみのシンボルを表示するように設定して、16ピクセルの幅を与えるので、それは目に見える。
マージン2は折りたたみのシンボルを表示するように設定するが、0の幅を与えるので、それは隠される。
もちろん、あなたは望むマージンをセットできる。
- SCI_SETMARGINTYPEN(int margin, int type)
- SCI_GETMARGINTYPEN(int margin)
- SCI_SETMARGINWIDTHN(int margin, int pixelWidth)
- SCI_GETMARGINWIDTHN(int margin)
- SCI_SETMARGINMASKN(int margin, int mask)
- SCI_GETMARGINMASKN(int margin)
- SCI_SETMARGINSENSITIVEN(int margin, bool sensitive)
- SCI_GETMARGINSENSITIVEN(int margin)
- SCI_SETMARGINLEFT(<unused>, int pixels)
- SCI_GETMARGINLEFT
- SCI_SETMARGINRIGHT(<unused>, int pixels)
- SCI_GETMARGINRIGHT
- SCI_SETFOLDMARGINCOLOUR(bool useSetting, int colour)
- SCI_SETFOLDMARGINHICOLOUR(bool useSetting, int colour)
SCI_SETMARGINTYPEN(int margin, int iType)
SCI_GETMARGINTYPEN(int margin)
余白の種別を設定あるいは取得する。
引数marginは0、1、2のいずれかであるべきである。
定義済み定数SC_MARGIN_SYMBOL (0)とSC_MARGIN_NUMBER (1)で符号用余白か行番号表示余白かを設定できる。
便宜的に余白番号0には行番号が、残りの二つには符号が割り当てられる。
あなたはSTYLE_DEFAULT背景および前景色にマッチする背景色をセットするマージンシンボルのための定数SC_MARGIN_BACK(2)とSC_MARGIN_FORE (3)を使用できる。
SCI_SETMARGINWIDTHN(int margin, int pixelWidth)
SCI_GETMARGINWIDTHN(int margin)
余白幅をピクセル単位で設定もしくは取得する。
幅0の余白は見えなくなる。
標準ではScintillaは余白番号1に符号用の16ピクセルを与えるので大きさの参考にせよ。
行番号用の余白幅は文書内の行数と行番号装飾を考慮すべきである。
SCI_TEXTWIDTH(STYLE_LINENUMBER, "_99999")といったコードで適切な幅を得られる。
SCI_SETMARGINMASKN(int margin, int mask)
SCI_GETMARGINMASKN(int margin)
maskは32ビットの値で、各ビットが32種の論理記号に対応している。
論理記号は符号として余白に表示できるものである。
折りたたみを示すことに使われる7つの論理記号をマスクするためにSC_MASK_FOLDERS (0xFE000000,10進 -33554432)という定数がある。
広範囲の符号と色を32種の論理記号の各々に割り当てることができる。
目印を参考にせよ。(mask & SC_MASK_FOLDERS)==0である場合は余白の背景色は装飾番号33(STYLE_LINENUMBER)で制御されている。
SCI_MARKERADDにより、行に対して論理上の目印を加えることができる。
可視余白のマスクには現れない目印を持つ行はその行の背景色を変更する。
例えば文法エラーのある行に論理番号10の目印を使い、背景色を変える場合を考える。
この目印に対するマスクは0x400 (1<<10)である。
符号余白のいずれもマスクに0x400を含んでいなければ、この目印を持つ行の背景色が変更される。
余白1に折りたたみ情報以外を設定するときはSCI_SETMARGINMASKN(1, ~SC_MASK_FOLDERS)、余白2に折りたたみ情報余白を設定するときはSCI_SETMARGINMASKN(2, SC_MASK_FOLDERS)といったコードを使う。
これらはScintillaの標準設定となっている。~SC_MASK_FOLDERSは0x1FFFFFF (10進 33554431)である。
余白に32種すべての符号を表示する必要がある場合はSCI_SETMARGINMASKN(余白番号, -1)というコードを使う。
SCI_SETMARGINSENSITIVEN(int margin, bool sensitive)
SCI_GETMARGINSENSITIVEN(int margin)
3個の各余白がマウスボタンクリックに反応するかどうかを定める。
反応する設定の余白でクリックすると、そのコンテナにSCN_MARGINCLICK通知が送信される。
反応しない設定の余白は選択範囲設定用余白として動作する。
これは行単位で選択するのに便利である。
標準ではどの余白もクリックに反応しない設定になっている。
SCI_SETMARGINLEFT(<unused>, int pixels)
SCI_GETMARGINLEFT
SCI_SETMARGINRIGHT(<unused>, int pixels)
SCI_GETMARGINRIGHT
これらのメッセージは、ピクセルのテキストの両側に空白のマージンの幅をセットおよび取得する。
デフォルトは、それぞれの端に1ピクセルである。
SCI_SETFOLDMARGINCOLOUR(bool useSetting, int colour)
SCI_SETFOLDMARGINHICOLOUR(bool useSetting, int colour)
これらのメッセージで、折りたたみのマージンと折りたたみのマージンハイライトの色を変える。
Windowsでは、折りたたみのマージン色はデフォルトで::GetSysColor(COLOR_3DFACE)であり、折りたたみのマージンハイライト色は::GetSysColor(COLOR_3DHIGHLIGHT)である。