この章の目次にもどる
前頁:2.4 図形描画関数にもどる
次頁:2.6 ポインタ制御関数にすすむ

2.5 文字(列)描画関数

2.5.1 描画環境レコードアクセス

gset_chp
Set Character Position
文字描画位置の設定
【形式】
ERR gset_chp ( GID gid, W x, W y, Bool abs )
【解説】
gid で指定した描画環境の文字描画位置の値を abs, x, y で指定した値に従って以下のように変更する。

abs =0 (相対指定)
(現在の水平位置) + x を新しい水平位置、(現在の垂直位置) + y を新しい垂直位置とする。
abs !=0 (絶対指定)
x を新しい水平位置、y を、新しい垂直位置とする。
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(座標値がオーバーフローした(abs=0の時))
gget_chp
Get Character Position
文字描画位置の取り出し
【形式】
ERR gget_chp ( GID gid, W *x, W *y )
【解説】
gid で指定した描画環境の文字描画位置を取り出し、水平位置を x、垂直位置 を y で指定した領域に格納する。
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(x,y)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
gset_chc
Set Character Color
文字描画カラーの設定
【形式】
ERR gset_chc ( GID gid, COLOR fgc, COLOR bgc )
【解説】
gid で指定した描画環境の文字描画の前景色を fgc で指定した値に、 背景色を bgc で指定した値に変更する。
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_GID
指定した描画環境IDが不正(存在しない)。
gget_chc
Get Character Color
文字描画カラーの取り出し
【形式】
ERR gget_chc ( GID gid, COLOR *fgc, COLOR *bgc )
【解説】
gid で指定した描画環境の文字描画の色を取り出し、前景色を fgc で指定し た領域に、背景色を bgc で指定した領域に格納する。
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(fgc,bgc)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
gset_chd
Set Character Direction
文字描画方向/間隔の設定
【形式】
ERR gset_chd ( GID gid, W dir, CGAP *gap )
【解説】
gid で指定した描画環境の文字描画方向 を dir で指定した値に、文字間隔を *gap で指定した値にそれぞれ変更する。

dir<0 の場合は、文字描画方向は変更しないことを意味し、gap=NULL の場合は、文字間隔は変更しないことを意味する。
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(gap)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(dir,gapの内容が不正)
gget_chd
Get Character Direction
文字描画方向/間隔の取り出し
【形式】
W gget_chd ( GID gid, CGAP OUT *gap )
【解説】
gid で指定した描画環境の文字描画方向を関数値として戻し、文字間隔を gapで指定した領域に領域に格納する。gap=NULL の場合は、文字描画方向のみを関数値として取り出す。
【リターン値】
≧0 : 正常終了 (関数値は文字描画方向)
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(gap)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
gset_fon
Set Font
文字フォントの指定
【形式】
ERR gset_fon ( GID gid, FSSPEC *fnt )
【解説】
gid で指定した描画環境のフォント指定を fnt で指定したフォントに設定する。

fnt は FSSPEC 構造体へのポインタである。
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(fnt)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_NOSPC
システムのメモリが不足した。
EG_PAR
パラメータが不正、または範囲外である。(文字サイズが不正)
gget_fon
Get Font
文字フォント情報の取り出し
【形式】
ERR gget_fon ( GID gid, FSSPEC *fnt, FNTINFO *inf )
【解説】
gid で指定した描画環境のフォント指定、およびフォント情報を取り出し、そ れぞれ、 fnt および inf で指定した領域に格納する。fnt=NULL または inf =NULL の場合は、対応する情報は格納されない。

*fnt には、gset_fon() で設定したデータそのものが格納され、*inf にはフ ォント情報が格納される。この情報は全てピクセル数で表わされ、指定した文 字サイズにスケーリングされた値である。即ち、inf->height は、fnt->size. v に常に等しくなる。
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(fnt,inf)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
gset_scr
Set SCRIPT
文字セット(SCRIPT)の指定
【形式】
ERR gset_scr ( GID gid, SCRIPT script)
【解説】
gid で指定した描画環境の文字セット(SCRIPT)を script に設定する。

script は言語指定コードを含まない文字コードのデフォルトの文字セットとして使用される。

描画環境の文字セットに関しては、本システムコールの他に、文字(列)描画によっても、自動的に変更される可能性がある。
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_PAR
script の内容が不正。
EG_GID
指定した描画環境IDが不正(存在しない)。
gget_scr
Get SCRIPT
文字セット(SCRIPT)の取り出し
【形式】
ERR gget_scr ( GID gid, SCRIPT *script)
【解説】
gid で指定した描画環境の文字セット(SCRIPT)を取り出し、*script に設定する。
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(script)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。

2.5.2 文字(列)チェック関数

gget_chw
Get Character Width
文字幅の取り出し
【形式】
WERR gget_chw ( GID gid, TC ch )
【解説】
gid で指定した描画環境で ch で指定した文字を描画した場合の、文字幅(ピクセル数)を関数値として戻す。

ch が言語指定コードであった場合、常に0を戻す。
【リターン値】
≧0 : 正常終了 (関数値は文字幅)
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_GID
指定した描画環境IDが不正(存在しない)。
gget_chh
Get Character Height
文字高さの取り出し
【形式】
WERR gget_chh ( GID gid, TC ch )
【解説】
gid で指定した描画環境で ch で指定した文字を描画した場合の、 文字高さ(ピクセル数)を関数値として戻す。

ch が言語コードであった場合、常に0を戻す。
【リターン値】
≧0 : 正常終了(関数値は文字高さ)
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_GID
指定した描画環境IDが不正(存在しない)。
gget_stw
Get String Width
文字列幅の取り出し
【形式】
WERR gget_stw ( GID gid, TC *str, W len, CGAP *gap, W *pos )
【解説】
gid で指定した描画環境で str で指定した文字列の先頭から len 文字数をgap で指定した文字間隔で描画した場合の、文字列幅(ピクセル数)を関数値として戻す。gap=NULL の場合は、描画環境に設定されている文字間隔が適用される。

len には言語指定コードも含まれ、言語指定コード2バイトを1文字とみなす。

文字列幅とは、指定した文字列を描画した場合の全ての文字枠を囲む最小の長方形の幅であり、設定されている水平文字間隔を含んだ値となる。

str で指定した文字列が len で指定した値より短い場合は、そこまでの文字列幅が戻される。

pos は文字列中の各文字の描画位置の水平座標値を格納するための、len の大きさを持つ W 配列へのポインタである。先頭文字に対応する座標値は、 現在設定されている文字描画位置の水平座標値となる。pos=NULL の場合は、各文字の描画位置は格納されない。

文字列中に言語指定コードが含まれる場合、言語指定コードに対応した pos[N] にはその時点での文字描画位置が設定される。言語指定コードによる文字描画位置の更新は行われず、pos[N]、pos[N+1] の値は等しくなる。

縦書きの場合は、この関数は単に文字幅を戻すことになり、pos にはすべて同一の値が設定されることになる。

この関数により文字描画位置、言語指定は変化しない。
【リターン値】
≧0 : 正常終了 (関数値は文字列幅)
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(str,gap,pos)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(gapの内容が不正)
gget_sth
Get String Height
文字列高さの取り出し
【形式】
WERR gget_sth ( GID gid, TC *str, W len, CGAP *gap, W *pos )
【解説】
gid で指定した描画環境で str で指定した文字列の先頭から len 文字数をgap で指定した文字間隔で描画した場合の、文字列高さ(ピクセル数)を関数値として戻す。gap=NULL の場合は、描画環境に設定されている文字間隔が適用される。

len には言語指定コードも含まれ、言語指定コード2バイトを1文字とみなす。

文字列高さとは、指定した文字列を描画した場合の全ての文字枠を囲む最小の長方形の高さであり、設定されている垂直文字間隔を含んだ値となる。

str で指定した文字列が len で指定した値より短い場合は、そこまでの文字列高さが戻される。

pos は文字列中の各文字の描画位置の垂直座標値を格納するための、len の大きさを持つ W 配列へのポインタである。先頭文字に対応する座標値は、 現在設定されている文字描画位置の垂直座標値となる。pos=NULL の場合は、各文字の描画位置は格納されない。

文字列中に言語指定コードが含まれる場合、言語指定コードに対応した pos[N] にはその時点での文字描画位置が設定される。言語指定コードによる文字描画位置の更新は行われず、pos[N]、pos[N+1] の値は等しくなる。

横書きの場合は、この関数は単に文字高さを戻すことになり、pos にはすべて同一の値が設定されることになる。

この関数により文字描画位置、言語指定は変化しない。
【リターン値】
≧0 : 正常終了(関数値は文字列高さ)
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(str,gap,pos)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(gapの内容が不正)
gget_str
Get String Rectangle
文字列描画領域の取り出し
【形式】
WERR gget_str ( GID gid, TC *str, W len, CGAP *gap, PNT *chp, RECT *cr, RECT *dr, W *alen)
【解説】
gid で指定した描画環境で str で指定した文字列の先頭から len 文字数を gap で指定した文字間隔で描画した場合の文字描画位置、文字描画領域の情報を引数で指定した領域に設定する。gap=NULL の場合は、描画環境に設定されている文字間隔が適用される。

len には言語指定コードも含まれ、言語指定コード2バイトを1文字とみなす。

*dr が NULL でない場合、対象描画環境の相対座標系で表現される、文字列描画領域が設定される。

文字描画領域とは、指定した文字列を描画した場合の全ての文字枠、文字枠を超えたカーニング、斜体描画を含む最小の矩形であり、設定されている文字間隔を含んだ値となる。

str で指定した文字列が len で指定した値より短い場合は、そこまでの文字列幅が戻される。

str で指定した文字列中に言語指定コードがあった場合、フォントを切り替えも考慮した描画領域情報の取得が可能である。

alen が NULL でない場合、処理した要素(文字)数(TCの個数)が設定される。通常はlenと同じ値が設定されるが、実際の文字列要素がlenよりも少なかった場合や、言語指定コードの途中でlenの要素数に達した場合、正常に処理できた部分の要素数が設定される。 alen が len を超える値になることはない。(不完全な言語指定コード列があっても、エラーにはしない。)

chp は文字列中の各文字の描画位置を格納するための、len の要素数を持つ PNT 配列へのポインタである。chp=NULL の場合は、各文字の描画位置は格納されない。言語指定コードに対応したPNT配列の要素に関しては,その時点での文字描画位置が設定される。

cr は文字列中の各文字の描画領域を格納するための、len の要素数を持つ RECT 配列へのポインタである。cr=NULL の場合は、各文字の描画領域は格納されない。言語指定コードに対応したRECTに関しては,その時点での文字描画位置を(Px,Py)として、{Px,Py,Px,Py}が設定される。(RECT としては空ということになる。)

この関数により描画環境の文字描画位置、文字セット(SCRIPT)は変化しない。関数値として、エラーコードまたは、描画終了時点でのSCRIPTを戻す。ただし、SCRIPTに変化がない場合には0を戻す。
【リターン値】
=0 : 正常終了(描画による言語切り替えは発生しない)
>0 : 正常終了(関数値は描画した場合に更新されるSCRIPT)
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(str, gap, cr, dr, alen)のメモリのアクセス は許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(gap,lenの内容が不正)

2.5.3 文字(列)の描画関数

gdra_chr
Draw Character
文字の描画
【形式】
WERR gdra_chr ( GID gid, TC ch, DCM mode )
【解説】
gid で指定した描画環境の文字描画位置に ch で指定した文字を mode で指定した描画モードで描画する。描画後、文字描画位置は文字描画方向/文字間隔に従って更新される。ch が言語指定コードであった場合、言語指定が更新される。

言語切り替えが発生した場合、切り替わった言語指定に対応したSCRIPTを戻す。
【リターン値】
=0 :正常終了。言語切り替えは発生しなかった。
>0 :正常終了。言語切り替えが発生した。
<0 :エラー (関数値はエラーコード)
【エラーコード】
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(modeが不正)
gdra_chp
Draw Character at Position
文字の描画(位置指定)
【形式】
WERR gdra_chp ( GID gid, W x, W y, TC ch, DCM mode )
【解説】
gid で指定した描画環境の文字描画位置を(x,y)に変更した後、ch で指定した文字を mode で指定した描画モードで描画する。描画後、文字描画位置は文字描画方向/文字間隔に従って更新される。ch が言語指定コードであった場合、言語指定が更新される。

言語切り替えが発生した場合、切り替わった言語指定に対応したSCRIPTを戻す。
【リターン値】
=0 :正常終了。言語切り替えは発生しなかった。
>0 :正常終了。言語切り替えが発生した。
<0 :エラー (関数値はエラーコード)
【エラーコード】
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(modeが不正)
gdra_str
Draw String
文字列の描画
【形式】
WERR gdra_str ( GID gid, TC *str, W len, DCM mode )
【解説】
gid で指定した描画環境の文字描画位置に、str で指定した文字列の先頭からlen 文字を mode で指定した描画モードで描画する。描画後、文字描画位置は文字描画方向/文字間隔に従って更新される。ch が言語指定コードであった場合、言語指定が更新される。

言語切り替えが発生した場合、切り替わった言語指定に対応したSCRIPTを戻す。

str で指定した文字列が len で指定した値より短い場合は、そこまでの文字列が描画される。
【リターン値】
=0 :正常終了。言語切り替えは発生しなかった。
>0 :正常終了。言語切り替えが発生した。
<0 :エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(str)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(modeが不正)
gdra_stp
Draw String at Position
文字列の描画(位置指定)
【形式】
WERR gdra_stp ( GID gid, W x, W y, TC *str, W len, DCM mode )
【解説】
gid で指定した描画環境の文字描画位置を(x,y)に変更した後、str で指定した文字列の先頭からlen 文字を mode で指定した描画モードで描画する。描画後、文字描画位置は文字描画方向/文字間隔に従って更新される。ch が言語指定コードであった場合、言語指定が更新される。

言語切り替えが発生した場合、切り替わった言語指定に対応したSCRIPTを戻す。

str で指定した文字列が len で指定した値より短い場合は、そこまでの文字列が描画される。
【リターン値】
=0 :正常終了。言語切り替えは発生しなかった。
>0 :正常終了。言語切り替えが発生した。
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(str)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(modeが不正)
gcop_chr
Copy Character Image
文字イメージの描画
【形式】
ERR gcop_chr ( GID gid, SIZE asize, SIZE isize, UB *img, DCM mode )
【解説】
gid で指定した描画環境で、img で指定した文字イメージを現在の文字描画位 置に mode で指定した描画モード、設定されている文字描画カラーで描画する。 描画後、文字描画位置は文字描画方向/文字間隔に従って更新される。

文字描画位置が文字イメージ矩形のどの位置に対応するかは、通常の文字描画 と同様に文字描画方向に依存する。

描画すべき文字イメージは以下に示すビットマップデータとして取り扱われ る。この文字イメージは isize で示される大きさを持ち、asize で示される 大きさに拡大/縮小が行なわれて描画される。

    planes    1
    rowbytes ((isize.h +15) ÷ 16)×2  (偶数)
    bounds   (0, 0, isize.h, isize.v)
    baseaddr img
  

ベース位置に関しては、描画時点でのフォント情報の文字高さとベース位置の比率をもとに、asize.v から決定される。

Base = asize.v * FNTINFO.base / FNTINFO.height
文字イメージの描画
図 42 : 文字イメージの描画
【リターン値】
=0(E_OK) : 正常終了
<0 : エラー (関数値はエラーコード)
【エラーコード】
EG_ADR
指定されたアドレス(img)のメモリのアクセスは許されていない。
EG_GID
指定した描画環境IDが不正(存在しない)。
EG_PAR
パラメータが不正、または範囲外である。(isize,asizeの内容,mode が不正)

この章の目次にもどる
前頁:2.4 図形描画関数にもどる
次頁:2.6 ポインタ制御関数にすすむ