Main Page   Modules   Data Structures   Globals   Appendix  

構造体 MDrawControl
[表示]

テキスト表示制御の型宣言. [詳細]


変数

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 と descent の最小値を示す。

unsigned int MDrawControl::min_line_descent
 

unsigned int MDrawControl::max_line_ascent
 

0 でなければ、値は行の ascent と descent の最大値を示す。

unsigned int MDrawControl::max_line_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
 

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
 


このページの先頭

Main Page   Modules   Data Structures   Globals   Appendix  

mulemark mule-aist@m17n.org