m17n ライブラリ 1.8.4
読み取り中…
検索中…
一致する文字列を見つけられません
フィールド
MDrawControl 構造体

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

#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 をどう表示するかを制御する構造体である。

フィールド詳解

◆ as_image

unsigned MDrawControl::as_image

0 でなければ、 M-text を画像として、すなわち背景を M-text のフェースで指定されている背景色で埋めて表示する。そうでなければ背景は変わらない。

◆ align_head

unsigned MDrawControl::align_head

0 でなく、各行の最初のグリフの lbearing が負ならば、グリフを水平に右にずらして、指定した位置より左にピクセルが描かれないようにする。

◆ two_dimensional

unsigned MDrawControl::two_dimensional

0 でなければ、M-text を2次元的に、すなわち M-text 中の newline で改行し、続く文字は次の行に表示する。もし <format> が NULL でなく、その関数が 0 でない行幅を返せば、その幅より長い行も改行される。

◆ orientation_reversed

unsigned MDrawControl::orientation_reversed

0 でなければ、M-text を指定した位置の右に表示する。

◆ enable_bidi

unsigned MDrawControl::enable_bidi

0 なければ、bidi テキスト用にグリフを正しく整列する。

◆ ignore_formatting_char

unsigned MDrawControl::ignore_formatting_char

0 でなければ、ユニコードに置ける一般カテゴリが Cf (Other, format) である文字を表示しない。

◆ fixed_width

unsigned MDrawControl::fixed_width

0 でなければ、端末用のグリフを表示する。未実装。

◆ anti_alias

unsigned MDrawControl::anti_alias

0 でなければ、アンチエーリアスでグリフを表示する。 (バックエンドのフォントドライバがアンチエーリアス機能を持つ場合のみ。)

◆ disable_overlapping_adjustment

unsigned MDrawControl::disable_overlapping_adjustment

0 でなければ、フォント境界での水平方向のグリフの重なりを避けるためのグリフ位置の調整を無効にする。

◆ min_line_ascent

unsigned int MDrawControl::min_line_ascent

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

◆ min_line_descent

unsigned int MDrawControl::min_line_descent

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

◆ max_line_ascent

unsigned int MDrawControl::max_line_ascent

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

◆ max_line_descent

unsigned int MDrawControl::max_line_descent

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

◆ max_line_width

unsigned int MDrawControl::max_line_width

0 でなければ、値はこのディスプレイ上で各行が占めることのできるピクセル数を示す。 0 は限定されないことを意味する。<format> が NULL でなければ無視される。

◆ tab_width

unsigned int MDrawControl::tab_width

0 でなければ、値はタブストップ間の距離をコラム単位 (コラムはフレームのデフォルトフォントにおける空白文字の幅である)で示す。 0 は 8 を意味する。

◆ format

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 でない場合にのみ有効である。

◆ line_break

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() は、空白を語の区切りとして用いるスクリプト用として有用である。

◆ with_cursor

int MDrawControl::with_cursor

ゼロでなければ <cursor_width> にしたがってカーソルを表示する。

◆ cursor_pos

int MDrawControl::cursor_pos

カーソルを表示する文字位置を示す。最大の文字位置より大きければ、カーソルは M-text の最後の文字の隣に表示される。負ならば、 <cursor_width> が 0 でなくてもカーソルは表示されない。

◆ cursor_width

int MDrawControl::cursor_width

0 でなければ、<cursor_pos> にカーソルを表示する。 値が正ならば、カーソルの幅はその値(ピクセル単位)である。 負ならば、カーソルのあるグリフと同じ幅である。

◆ cursor_bidi

int MDrawControl::cursor_bidi

If 0 でなく、かつ <cursor_width> も 0 でなければ、バーカーソルを文字位置 <cursor_pos> と論理的にそれの前にある文字の2ヶ所に表示する。 双方とも1ピクセル幅で、上か下に水平の飾りがつく。

◆ partial_update

int MDrawControl::partial_update

0 でなければ、テキストの一部分を表示する際に、前後のテキストのうちその表示領域に侵入する部分も表示する。 たとえば、タイ語テキスト 子音-母音-子音 というシークエンスのいくつかは、母音が二つの子音の間に上にのるように描かれる。 このようなシークエンスがすでに描かれており、最後の子音だけを描き直す場合 (たとえば、カーソル位置を更新する際など)このメンバが 0 であれば、母音の右半分が消されてしまう。これを 0 以外にすることによって、そのような際にも 子音-母音-子音 のシークエンスを正しく表示し続けることができる。

◆ disable_caching

int MDrawControl::disable_caching

0 でなければ、M-text の表示に関する情報をキャッシュしない。

◆ clip_region

MDrawRegion MDrawControl::clip_region

NULL でなければ表示エリアを指定された領域に限定する。


m17n-lib Home