xref: /csrg-svn/lib/libcurses/erase.c (revision 2248)
1*2248Sarnold # include	"curses.ext"
2*2248Sarnold 
3*2248Sarnold /*
4*2248Sarnold  *	This routine erases everything on the window.
5*2248Sarnold  *
6*2248Sarnold  * 01/26/81 (Berkeley) @(#)erase.c	1.1
7*2248Sarnold  */
8*2248Sarnold werase(win)
9*2248Sarnold reg WINDOW	*win; {
10*2248Sarnold 
11*2248Sarnold 	reg int		y;
12*2248Sarnold 	reg char	*sp, *end, *start, *maxx;
13*2248Sarnold 	reg int		minx;
14*2248Sarnold 
15*2248Sarnold 	for (y = 0; y < win->_maxy; y++) {
16*2248Sarnold 		minx = _NOCHANGE;
17*2248Sarnold 		start = win->_y[y];
18*2248Sarnold 		end = &start[win->_maxx];
19*2248Sarnold 		for (sp = start; sp < end; sp++)
20*2248Sarnold 			if (*sp != ' ') {
21*2248Sarnold 				maxx = sp;
22*2248Sarnold 				if (minx == _NOCHANGE)
23*2248Sarnold 					minx = sp - start;
24*2248Sarnold 				*sp = ' ';
25*2248Sarnold 			}
26*2248Sarnold 		if (minx != _NOCHANGE) {
27*2248Sarnold 			if (win->_firstch[y] > minx
28*2248Sarnold 			     || win->_firstch[y] == _NOCHANGE)
29*2248Sarnold 				win->_firstch[y] = minx;
30*2248Sarnold 			if (win->_lastch[y] < maxx - win->_y[y])
31*2248Sarnold 				win->_lastch[y] = maxx - win->_y[y];
32*2248Sarnold 		}
33*2248Sarnold 	}
34*2248Sarnold 	win->_curx = win->_cury = 0;
35*2248Sarnold }
36