Очистка окна и линий
* int erase() int werase(win)
werase(...) и erase() скопируют пробелы на каждую позицию окна win или stdscr. Например, если вы установили атрибуты цвета в окне и вызвали werase(), окно должно быть окрашено. Однако автор имел некоторые проблемы с COLOR_PAIRS, если определял другие атрибуты, а затем черный по белому, так он писал его собственную стирающую функцию (это низкоуровневый доступ к структуре WINDOW):
void NewClear(WINDOW *win) { int y,x; for ( y = 0 ; y <= win -> _maxy ; y++ ) for ( x = 0 ; x <= win -> _maxx ; x++ ) (chtype *) win-> _line[y][x] = ' '|win-> _attrs; win -> _curx = win -> _cury = 0; touchwin(win); }
Проблема состоит в том, что ncurses иногда делает совершенно бесполезными атрибуты окна, когда заполняет экран пробелами. Если в lib_clrtoeol.c BLANK определен как
#define BLANK ' '|A_NORMAL,
то другие атрибуты окна теряются, пока идет стирание строки.
* int clear() int wclear(win)
То же, что erase(), но будет также установлен clearok() (экран будет очищен с последующим обновлением). * int clrtobot() int wclrtobot(win)
Очистка текущей линии курсора (начинается с символа справа от курсора) и строки под курсором. * int clrtoeol() int wclrtoeol(win)
Очистка текущей строки начиная справа от курсора и до конца строки.