curs_touch(3x) curs_touch(3x)
touchwin, touchline, untouchwin, wtouchln, is_linetouched,
is_wintouched - curses 画面更新制御ルーチン
#include <curses.h>
int touchwin(WINDOW *win);
int touchline(WINDOW *win, int start, int count);
int untouchwin(WINDOW *win);
int wtouchln(WINDOW *win, int y, int n, int changed);
bool is_linetouched(WINDOW *win, int line);
bool is_wintouched(WINDOW *win);
touchwin と touchline ルーチンは、ウインドウ全体が
描画されたかのように見せかけることで、ウインドウのどの部分が
タッチ(変更をマーク)されたかという最適化情報をすべて
破棄します。(訳注: touchline については後出)
これは重なりあったウインドウの場合、時々必要です。1つの
ウインドウへの変更が他のウインドウに影響するにもかかわらず、
他方のウインドウのどの行が変更されたかという記録に
変更が反映されないためです。
touchline ルーチンは start 行から始まる count 行分のみが
変更されたように見せかけます。
untouchwin ルーチンは、ウインドウ内のすべての行が直前の
wrefresh 呼び出し以降変更されていないかのようにマークします。
wtouchln ルーチンはウインドウ内の y 行から始まる n 行分を、
直前の wrefresh 呼び出し以降変更されたかのように(changed=1)、
あるいは変更されていないかのように(changed=0)見せかけます。
is_linetouched と is_wintouched ルーチンは、指定の
行/ウインドウが直前の wrefresh 呼び出し以降変更されているなら
TRUE を返し、そうでなければ FALSE を返します。
それに加えて、指定のウインドウに対して line が無効な場合に
is_linetouched は ERR を返します。
(訳注: bool 型で返せるか疑問)
すべてのルーチンは、上のルーチン説明で特記していないかぎり、
失敗した場合に整数 ERR を、正常終了の場合に ERR 以外の整数値を
返します。
X/Open はエラーの条件を何も定義していません。この実装では
is_linetouched
ウインドウ・ポインタがヌル、または行番号が
ウインドウの外だった場合にエラーを返します。
ERR は、この関数の正常な戻り値である TRUE や
FALSE とは異なることに注意してください。
(訳注: bool 型で返せるか疑問)
wtouchln
ウインドウ・ポインタがヌル、または行番号が
ウインドウの外だった場合にエラーを返します。
これらの関数は XSI Curses standard, Issue 4 に記載されて
います。
curses の歴史的ないくつかの実装では、明文化されていない
機能として、 touchwin(stdscr) または clear(stdscr) とする
ことで clearok(..., 1) と同等な処理ができました。
これは ncurses では動作しません。
wtouchln 以外のすべてのルーチンは、
マクロであるかもしれないことに注意してください。
curses(3x), curs_refresh(3x), curs_variables(3x).
curs_touch(3x)