• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <curses.h>
2 #include "mucurses.h"
3 #include "cursor.h"
4 
5 /** @file
6  *
7  * MuCurses clearing functions
8  *
9  */
10 
11 FILE_LICENCE ( GPL2_OR_LATER );
12 
13 /**
14  * Clear a window to the bottom from current cursor position
15  *
16  * @v *win	subject window
17  * @ret rc	return status code
18  */
wclrtobot(WINDOW * win)19 int wclrtobot ( WINDOW *win ) {
20 	struct cursor_pos pos;
21 
22 	_store_curs_pos( win, &pos );
23 	do {
24 		_wputc( win, ' ', WRAP );
25 	} while ( win->curs_y + win->curs_x );
26 	_restore_curs_pos( win, &pos );
27 
28 	return OK;
29 }
30 
31 /**
32  * Clear a window to the end of the current line
33  *
34  * @v *win	subject window
35  * @ret rc	return status code
36  */
wclrtoeol(WINDOW * win)37 int wclrtoeol ( WINDOW *win ) {
38 	struct cursor_pos pos;
39 
40 	_store_curs_pos( win, &pos );
41 	while ( ( win->curs_y - pos.y ) == 0 ) {
42 		_wputc( win, ' ', WRAP );
43 	}
44 	_restore_curs_pos( win, &pos );
45 
46 	return OK;
47 }
48 
49 /**
50  * Delete character under the cursor in a window
51  *
52  * @v *win	subject window
53  * @ret rc	return status code
54  */
wdelch(WINDOW * win)55 int wdelch ( WINDOW *win ) {
56 	_wputc( win, ' ', NOWRAP );
57 	_wcursback( win );
58 
59 	return OK;
60 }
61 
62 /**
63  * Delete line under a window's cursor
64  *
65  * @v *win	subject window
66  * @ret rc	return status code
67  */
wdeleteln(WINDOW * win)68 int wdeleteln ( WINDOW *win ) {
69 	struct cursor_pos pos;
70 
71 	_store_curs_pos( win, &pos );
72 	/* let's just set the cursor to the beginning of the line and
73 	   let wclrtoeol do the work :) */
74 	wmove( win, win->curs_y, 0 );
75 	wclrtoeol( win );
76 	_restore_curs_pos( win, &pos );
77 	return OK;
78 }
79 
80 /**
81  * Completely clear a window
82  *
83  * @v *win	subject window
84  * @ret rc	return status code
85  */
werase(WINDOW * win)86 int werase ( WINDOW *win ) {
87 	wmove( win, 0, 0 );
88 	wclrtobot( win );
89 	return OK;
90 }
91