curs_pad(3x) curs_pad(3x)
newpad, subpad, prefresh, pnoutrefresh, pechochar, pecho_wchar - curses パッドの作成と表示
#include <curses.h> WINDOW *newpad(int nlines, int ncols); WINDOW *subpad(WINDOW *orig, int nlines, int ncols, int begin_y, int begin_x); int prefresh(WINDOW *pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol); int pnoutrefresh(WINDOW *pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol); int pechochar(WINDOW *pad, chtype ch); int pecho_wchar(WINDOW *pad, const cchar_t *wch);
newpad ルーチンは、与えられた行数 nlines と桁数 ncols を持つ 新しいパッドのデータ構造を作り、ポインタを返します。 パッドはウインドウに似ていますが、画面のサイズに制限されず、 画面の特定の部分に対応付けられる必要もありません。 パッドは大きなウインドウが必要なときに使うことができ、 一度にウインドウの一部分のみが画面上に置かれます。 (例えばスクロールや入力のエコーによる) パッドの自動的な 更新は起こりません。 パッドを引数として wrefresh を呼び出すことは不正です。 代わりに prefresh か pnoutrefresh を呼び出さなければ なりません。 これらのルーチンは、パッドのうち表示される部分と 表示する画面上の位置を指定する追加の引数を必要とすることに 注意してください。
subpad ルーチンは、パッドの中に与えられた行数 nlines と 桁数 ncols を持つ子ウインドウを作り、ポインタを返します。 画面上の座標を用いる subwin と異なり、ウインドウはパッド上の (begin_x, begin_y) に位置します。 (訳注: begin_y, begin_x か) 子ウインドウはウインドウ orig の中にできるので、 一方のウインドウへの変更は両方のウインドウに影響します。 このルーチンを使う間、 prefresh を呼び出す前にしばしば orig に対して touchwin か touchline を呼び出す必要があります。
prefresh と pnoutrefresh ルーチンは wrefresh と wnoutrefresh に似ていますが、ウインドウではなくパッドに関係する点が 異なります。 パッドと画面のどの部分が対象となるかを示すために、 追加の引数が必要です。 引数 pminrow と pmincol はパッドのうち表示される長方形の 左上隅を指定します。 引数 sminrow, smincol, smaxrow, smaxcol は表示する画面上の 長方形の端の位置座標を指定します。 双方の長方形は同じサイズでなければならないので、パッドのうち 表示される長方形の右下隅の位置は、画面の座標から計算されます。 双方の長方形はそれぞれの構造に完全に含まれていなければ なりません。 sminrow, smincol, smaxrow, smaxcol の負の値は、 ゼロであるかのように扱われます。
pechochar ルーチンは、 addch 呼び出しに続けて refresh を、 または waddch 呼び出しに続けて wrefresh を、 または waddch 呼び出しに続けて prefresh を呼び出すことと 機能的に同等です。 1 つの文字だけが出力されるという知識は考慮され、そして、 非制御文字に対しては、等価な関数よりもこれらのルーチン (訳注: pechochar, pecho_wchar) を使うことで相当な性能の向上がみられることがあります。 pechochar の場合には、画面上のパッドの最後の位置が prefresh の引数として再利用されます。
pecho_wchar 関数は、 pechochar に類似したワイド文字版です。 1 文字をパッドに出力し、そのパッドをすぐに更新します。 wadd_wch 呼び出しに続けて prefresh を呼び出すことで これを行います。
整数を返すルーチンは、失敗したときに ERR を、 正常終了のときに OK ( SVr4 は「 ERR 以外の整数値」としか 指定していません) を返します。 ポインタを返すルーチンは、エラーのときに NULL を返し、 errno に ENOMEM をセットします。 X/Open はエラーの条件を何も定義していません。この実装では prefresh と pnoutrefresh ウインドウ・ポインタがヌルのとき、 またはウインドウが実際にはパッドでないとき、 または更新する領域が画面の外に広がっているとき、 または座標の最小値が最大値よりも大きいときに エラーを返します。 pechochar ウインドウが実際にはパッドでないとき、そして 付随する wechochar 呼び出しがエラーを返したときに エラーを返します。 pecho_wchar ウインドウが実際にはパッドでないとき、そして 付随する wecho_wchar 呼び出しがエラーを返したときに エラーを返します。
pechochar はマクロであるかもしれないことに注意してください。
これらの関数は XSI Curses standard, Issue 4 に 記載されています。
curses(3x), curs_refresh(3x), curs_touch(3x), curs_addch(3x). curs_pad(3x)