スタイル定義
前記のようにスタイル設定メッセージがテキストに関連しているスタイル番号を変えている間、これらのメッセージはそれらのスタイル番号が視覚的にどう解釈されるかを定義する。
128の解析スタイルを設定でき、0からSTYLEMAX(127)の番号がある。
あなたがスタイルビット数を変えるのにSCI_SETSTYLEBITSを使用するなら、スタイル0~31はテキスト属性を設定するのに使用される。
32で始まるいくつかの事前に定義されたスタイル番号があり、次のSTYLE_*定数が定義される。
表: プリセットスタイル
| STYLE_DEFAULT | 32 | SCI_STYLECLEARALLメッセージが使用されているとき、このスタイルはすべてのスタイルが受信する属性を定義する。 |
| STYLE_LINENUMBER | 33 | 行番号表示余白の属性に関する装飾番号である。 文字色・背景色が設定できる。 背景色は折りたたみのマスクビットが使われていてはならない。 すなわちmask & SC_MASK_FOLDERSは0でなくてはならない。 マスクについてはSCI_SETMARGINMASKNを参照せよ。 |
| STYLE_BRACELIGHT | 34 | 括弧の強調に関する装飾番号である。 SCI_BRACEHIGHLIGHTメッセージで使うほか、SCI_SETHIGHLIGHTGUIDEで関係し合う字下げ部の強調表示にも使用される。 |
| STYLE_BRACEBAD | 35 | 対応の付かない括弧に関する装飾番号である。 SCI_BRACEBADLIGHTメッセージで使用する。 |
| STYLE_CONTROLCHAR | 36 | 制御文字に関する装飾番号である。 フォント、文字の大きさ、太字、イタリック体、文字集合の属性が使用できる。 他方、色の属性は利用できない。 関連項目: SCI_SETCONTROLCHARSYMBOL |
| STYLE_INDENTGUIDE | 37 | 字下げ情報を表示する部分の前景色と背景色に関する装飾番号である。 |
| STYLE_CALLTIP | 38 | 通常、呼び出し情報はSTYLE_DEFAULTによって定義された文字修飾を使用する。 SCI_CALLTIPUSESTYLEの使用で、呼び出し情報は代わりにこのスタイルを使用する。 フォントフェイス名、フォントサイズ、前景および背景色、および文字集合属性だけが使用されている。 |
| STYLE_LASTPREDEFINED | 39 | コードを書く側が定義済みスタイル番号を検出できるように定義されている値である。 この値は定義済み装飾番号のうち最後のものに設定されている。 現時点の最終番号は38であるのに対してこの値が39になっている。 これは将来の定義済み装飾番号のために予約されているものである。 |
| STYLE_MAX | 127 | これは装飾属性ではないが、使用可能な装飾番号の最大値を保持している。 SCI_SETSTYLEBITSを用いて装飾ビットを5ビットより多くした場合はSTYLE_LASTPREDEFINED~STYLE_MAXの間の装飾番号が充当されることになる。 |
各々の装飾番号毎にフォント名、文字の大きさ、太字・イタリック・下線の指定、文字色(前景色)、背景色、および文字集合を設定できる。
また、要求された装飾に対してテキストを隠したり、文字をすべて大文字化あるいは小文字化したり、文書途中で内包されている別言語の識別のために行末文字から行末までを塗りつぶすといったこともできる。
このほか、試験的に読み出し専用テキスト属性が用意されている。
装飾をどのように使うかは完全にあなたの責任である。
文法解析による色づけを行いたいのであれば、ホワイトスペースに0、数字に1、キーワードに2、文字列に3、プリプロセッサに4、演算子に5といった具合に自分で定義できる。
- SCI_STYLERESETDEFAULT
- SCI_STYLECLEARALL
- SCI_STYLESETFONT(int styleNumber, char *fontName)
- SCI_STYLEGETFONT(int styleNumber, char *fontName)
- SCI_STYLESETSIZE(int styleNumber, int sizeInPoints)
- SCI_STYLEGETSIZE(int styleNumber)
- SCI_STYLESETBOLD(int styleNumber, bool bold)
- SCI_STYLEGETBOLD(int styleNumber)
- SCI_STYLESETITALIC(int styleNumber, bool italic)
- SCI_STYLEGETITALIC(int styleNumber)
- SCI_STYLESETUNDERLINE(int styleNumber, bool underline)
- SCI_STYLEGETUNDERLINE(int styleNumber)
- SCI_STYLESETFORE(int styleNumber, int colour)
- SCI_STYLEGETFORE(int styleNumber)
- SCI_STYLESETBACK(int styleNumber, int colour)
- SCI_STYLESETBACK(int styleNumber)
- SCI_STYLESETEOLFILLED(int styleNumber, bool eolFilled)
- SCI_STYLEGETEOLFILLED(int styleNumber)
- SCI_STYLESETCHARACTERSET(int styleNumber, int charSet)
- SCI_STYLEGETCHARACTERSET(int styleNumber)
- SCI_STYLESETCASE(int styleNumber, int caseMode)
- SCI_STYLEGETCASE(int styleNumber)
- SCI_STYLESETVISIBLE(int styleNumber, bool visible)
- SCI_STYLEGETVISIBLE(int styleNumber)
- SCI_STYLESETCHANGEABLE(int styleNumber, bool changeable)
- SCI_STYLEGETCHANGEABLE(int styleNumber)
- SCI_STYLESETHOTSPOT(int styleNumber, bool hotspot)
- SCI_STYLEGETHOTSPOT(int styleNumber)
SCI_STYLERESETDEFAULT
Scintillaが初期化されたとき、このメッセージは状態をSTYLE_DEFAULTにリセットする。
SCI_STYLECLEARALL
このメッセージはすべての装飾をSTYLE_DEFAULTの状態に設定する。
文法による色づけの用途でScintillaを使っているなら、解析による装飾はおおよそ似たものになるだろう。
装飾設定の手順の一つは次のようになる:
- STYLE_DEFAULTに全装飾に共通の要素を設定する。
- SCI_STYLECLEARALLで全ての装飾にこれを複製する。
- 装飾属性で各々異なる部分を設定する。
SCI_STYLESETFONT(int styleNumber, const char *fontName)
SCI_STYLEGETFONT(int styleNumber, char *fontName)
SCI_STYLESETSIZE(int styleNumber, int sizeInPoints)
SCI_STYLEGETSIZE(int styleNumber)
SCI_STYLESETBOLD(int styleNumber, bool bold)
SCI_STYLEGETBOLD(int styleNumber)
SCI_STYLESETITALIC(int styleNumber, bool italic)
SCI_STYLEGETITALIC(int styleNumber)
これらのメッセージSCI_STYLESETCHARACTERSETはフォント属性を設定し、これらが要求されたときの合致条件として使用される。
fontNameは0終端文字列で、フォント名を指定する。
Windowsでは名前の先頭32文字を使用し、大文字小文字は区別されない。
内部キャッシュのため、Scintillaは名前でフォントを検索し、フォント名の大文字小文字を合わせようとする。
指定名は一貫性を持たせておく。
GTK+ 2.xにおいては、GDKでもPangoでもテキストを表示できる。
Pangoであればアンチエイリアステキストを使えUnicodeを使うこともできるが、GDKは高速に動作する。
Pangoを使うには'!'の文字をフォント名の先頭に追加する。
SCI_STYLESETUNDERLINE(int styleNumber, bool underline)
SCI_STYLEGETUNDERLINE(int styleNumber)
装飾に下線を使うようにすることができる。
下線は前景色で描かれる。
下線の属性を持つ文字はホワイトスペースも含めてすべて下線が引かれる。
SCI_STYLESETFORE(int styleNumber, int colour)
SCI_STYLEGETFORE(int styleNumber)
SCI_STYLESETBACK(int styleNumber, int colour)
SCI_STYLEGETBACK(int styleNumber)
テキストは前景色で描かれる。
文字を囲む矩形の文字ではない部分は背景色で描かれる。
SCI_STYLESETEOLFILLED(int styleNumber, bool eolFilled)
SCI_STYLEGETEOLFILLED(int styleNumber)
行の最後にある文字が属性設定を受けた装飾を持つとき、その右側からウィンドウの右端までは最後の文字の背景色で塗りつぶされる。
HTMLの中のJavaScriptなど、ある言語の中に別の言語が内包されているときにこの機能は便利である。
eolFilledをtrueに、かつ内包された側の言語の背景色を一定の内包する側とは違う色にすると、この場合ならJavaScriptとHTMLが区別しやすくなる。
SCI_STYLESETCHARACTERSET(int styleNumber, int charSet)
SCI_STYLEGETCHARACTERSET(int styleNumber)
標準とは異なる文字集合に装飾をつけることができる。
そういった文字集合が注釈や文字列で使えると便利である。
SCI_STYLESETCHARACTERSET(SCE_C_STRING、SC_CHARSET_RUSSIAN)と言うコードはロシア語の文字列をCとC++で正確に表示する。
SCE_C_STRINGはC/C++解析器で使われている文字列への装飾番号(値は6)である。
この機能はWindowsとGTK+で異なる動作をする。
Windowsでサポートされるキャラクタセットは次のとおり:
SC_CHARSET_ANSI, SC_CHARSET_ARABIC, SC_CHARSET_BALTIC, SC_CHARSET_CHINESEBIG5, SC_CHARSET_DEFAULT, SC_CHARSET_EASTEUROPE, SC_CHARSET_GB2312, SC_CHARSET_GREEK, SC_CHARSET_HANGUL, SC_CHARSET_HEBREW, SC_CHARSET_JOHAB, SC_CHARSET_MAC, SC_CHARSET_OEM, SC_CHARSET_RUSSIAN (code page 1251), SC_CHARSET_SHIFTJIS, SC_CHARSET_SYMBOL, SC_CHARSET_THAI, SC_CHARSET_TURKISH, SC_CHARSET_VIETNAMESE
GTK+でサポートされるキャラクタセットは次のとおり:
SC_CHARSET_ANSI, SC_CHARSET_CYRILLIC (code page 1251), SC_CHARSET_EASTEUROPE, SC_CHARSET_GB2312, SC_CHARSET_HANGUL, SC_CHARSET_RUSSIAN (KOI8-R), SC_CHARSET_SHIFTJIS, SC_CHARSET_8859_15
SCI_STYLESETCASE(int styleNumber, int caseMode)
SCI_STYLEGETCASE(int styleNumber)
caseModeによりアルファベットの大文字小文字に関してどのように表示するかを指定する。
通常表示(SC_CASE_MIXED、0)、大文字(SC_CASE_UPPER、1)、小文字(SC_CASE_LOWER、2)のいずれかを設定する。
この機能は表示方法だけを変更するもので、記憶しているテキスト自体は変更されない。
SCI_STYLESETVISIBLE(int styleNumber, bool visible)
SCI_STYLEGETVISIBLE(int styleNumber)
通常、テキストは見える。
しかしながら、このメッセージにおいてvisibleに0を指定することによって完全に隠すことができる。
埋め込まれた書式化命令や、HTMLやXMLにおけるハイパーテキストのキーワードなどに用いることができる。
SCI_STYLESETCHANGEABLE(int styleNumber, bool changeable)
SCI_STYLEGETCHANGEABLE(int styleNumber)
これはまだ実験的で不完全な実装の装飾属性である。
標準ではchangeableがtrueに設定されているがこれをfalseにすると文字列が読み出し専用になる。
現時点では変更不可能とされたテキストの中にキャレットが入り込まないような機能を持つだけで、指定範囲の中に変更不可テキストがあった場合にその削除を避けるといった機能は未実装である。
SCI_STYLESETHOTSPOT(int styleNumber, bool hotspot)
SCI_STYLEGETHOTSPOT(int styleNumber)
マウスクリックを検出できるテキスト範囲を目立たせるために用いられる。
マウスカーソルはホットスポットの上では手の形に変わり、前景色・背景色も変更され、下線が表示されてクリックに反応することを示す。
他の文書へのハイパーリンク実装の一部として使うことができる。
関連項目: SCI_SETCONTROLCHARSYMBOL