m17n ライブラリ 1.8.4
|
テキスト表示制御の型宣言. [詳解]
#include <m17n-gui.h>
フィールド | |
unsigned | as_image: 1 |
unsigned | align_head: 1 |
unsigned | two_dimensional: 1 |
unsigned | orientation_reversed: 1 |
unsigned | enable_bidi: 1 |
unsigned | ignore_formatting_char: 1 |
unsigned | fixed_width: 1 |
unsigned | anti_alias: 1 |
unsigned | disable_overlapping_adjustment: 1 |
unsigned int | min_line_ascent |
unsigned int | min_line_descent |
unsigned int | max_line_ascent |
unsigned int | max_line_descent |
unsigned int | max_line_width |
unsigned int | tab_width |
void(* | format )(int line, int y, int *indent, int *width) |
int(* | line_break )(MText *mt, int pos, int from, int to, int line, int y) |
int | with_cursor |
int | cursor_pos |
int | cursor_width |
int | cursor_bidi |
int | partial_update |
int | disable_caching |
MDrawRegion | clip_region |
テキスト表示制御の型宣言.
MDrawControl 型は、M-text をどう表示するかを制御する構造体である。
unsigned MDrawControl::as_image |
0 でなければ、 M-text を画像として、すなわち背景を M-text のフェースで指定されている背景色で埋めて表示する。そうでなければ背景は変わらない。
unsigned MDrawControl::align_head |
0 でなく、各行の最初のグリフの lbearing が負ならば、グリフを水平に右にずらして、指定した位置より左にピクセルが描かれないようにする。
unsigned MDrawControl::two_dimensional |
0 でなければ、M-text を2次元的に、すなわち M-text 中の newline で改行し、続く文字は次の行に表示する。もし <format> が NULL でなく、その関数が 0 でない行幅を返せば、その幅より長い行も改行される。
unsigned MDrawControl::orientation_reversed |
0 でなければ、M-text を指定した位置の右に表示する。
unsigned MDrawControl::enable_bidi |
0 なければ、bidi テキスト用にグリフを正しく整列する。
unsigned MDrawControl::ignore_formatting_char |
0 でなければ、ユニコードに置ける一般カテゴリが Cf (Other, format) である文字を表示しない。
unsigned MDrawControl::fixed_width |
0 でなければ、端末用のグリフを表示する。未実装。
unsigned MDrawControl::anti_alias |
0 でなければ、アンチエーリアスでグリフを表示する。 (バックエンドのフォントドライバがアンチエーリアス機能を持つ場合のみ。)
unsigned MDrawControl::disable_overlapping_adjustment |
0 でなければ、フォント境界での水平方向のグリフの重なりを避けるためのグリフ位置の調整を無効にする。
unsigned int MDrawControl::min_line_ascent |
0 でなければ、値は行の ascent の最小値を示す。
unsigned int MDrawControl::min_line_descent |
0 でなければ、値は行の descent の最小値を示す。
unsigned int MDrawControl::max_line_ascent |
0 でなければ、値は行の ascent の最大値を示す。
unsigned int MDrawControl::max_line_descent |
0 でなければ、値は行の descent の最大値を示す。
unsigned int MDrawControl::max_line_width |
0 でなければ、値はこのディスプレイ上で各行が占めることのできるピクセル数を示す。 0 は限定されないことを意味する。<format> が NULL でなければ無視される。
unsigned int MDrawControl::tab_width |
0 でなければ、値はタブストップ間の距離をコラム単位 (コラムはフレームのデフォルトフォントにおける空白文字の幅である)で示す。 0 は 8 を意味する。
void(* MDrawControl::format) (int line, int y, int *indent, int *width) |
0 でなければ、値は関数であり、その関数は行番号 LINE と座標 Y に基づいて各行のインデントと最大幅を計算し、それぞれをINDENT と WIDTH で指される場所に保存する。
インデントは、各行の最初のグリフを右(メンバ <orientation_reversed> が 0 の時)あるいは左(それ以外の時)に何ピクセルずらすかを指定する。値が負ならば逆方向にずらす。
最大幅は、各行がディスプレイ上で占めることのできるピクセル数の最大値である。値が 0 の場合は制限を受けないことを意味する。
LINE と Y は改行文字によって行が改まった際には 0 にリセットされ、長い行が最大幅の制限によって改行されるたびに 1 増やされる。
これは <two_dimensional> が 0 でない場合にのみ有効である。
int(* MDrawControl::line_break) (MText *mt, int pos, int from, int to, int line, int y) |
NULL でなければ、値は行が最大幅中に収まらない場合に行を改める位置を計算する関数である。 POS は最大幅に収まる最後の文字の次の文字の位置である。FROM は行の最初の文字の位置、TO は最大幅が指定されていなければその行に表示される最後の文字の位置である。LINE と Y は <format> の引数と同様である。
この関数は行を改める文字位置を返さなくてはならない。また MT を変更してはならない。
関数 mdraw_default_line_break() は、空白を語の区切りとして用いるスクリプト用として有用である。
int MDrawControl::with_cursor |
ゼロでなければ <cursor_width> にしたがってカーソルを表示する。
int MDrawControl::cursor_pos |
カーソルを表示する文字位置を示す。最大の文字位置より大きければ、カーソルは M-text の最後の文字の隣に表示される。負ならば、 <cursor_width> が 0 でなくてもカーソルは表示されない。
int MDrawControl::cursor_width |
0 でなければ、<cursor_pos> にカーソルを表示する。 値が正ならば、カーソルの幅はその値(ピクセル単位)である。 負ならば、カーソルのあるグリフと同じ幅である。
int MDrawControl::cursor_bidi |
If 0 でなく、かつ <cursor_width> も 0 でなければ、バーカーソルを文字位置 <cursor_pos> と論理的にそれの前にある文字の2ヶ所に表示する。 双方とも1ピクセル幅で、上か下に水平の飾りがつく。
int MDrawControl::partial_update |
0 でなければ、テキストの一部分を表示する際に、前後のテキストのうちその表示領域に侵入する部分も表示する。 たとえば、タイ語テキスト 子音-母音-子音 というシークエンスのいくつかは、母音が二つの子音の間に上にのるように描かれる。 このようなシークエンスがすでに描かれており、最後の子音だけを描き直す場合 (たとえば、カーソル位置を更新する際など)このメンバが 0 であれば、母音の右半分が消されてしまう。これを 0 以外にすることによって、そのような際にも 子音-母音-子音 のシークエンスを正しく表示し続けることができる。
int MDrawControl::disable_caching |
0 でなければ、M-text の表示に関する情報をキャッシュしない。
MDrawRegion MDrawControl::clip_region |
NULL でなければ表示エリアを指定された領域に限定する。