xref: /csrg-svn/lib/libcurses/touchwin.c (revision 42657)
122685Sdist /*
234677Sbostic  * Copyright (c) 1981 Regents of the University of California.
334677Sbostic  * All rights reserved.
434677Sbostic  *
5*42657Sbostic  * %sccs.include.redist.c%
622685Sdist  */
722685Sdist 
822685Sdist #ifndef lint
9*42657Sbostic static char sccsid[] = "@(#)touchwin.c	5.4 (Berkeley) 06/01/90";
1034677Sbostic #endif /* not lint */
1122685Sdist 
122265Sarnold # include	"curses.ext"
132265Sarnold 
142265Sarnold /*
152265Sarnold  * make it look like the whole window has been changed.
162265Sarnold  *
172265Sarnold  */
182265Sarnold touchwin(win)
1919898Sbloom register WINDOW	*win;
202265Sarnold {
2119898Sbloom 	register int	y, maxy;
2212341Sarnold 
2319898Sbloom # ifdef	DEBUG
2419898Sbloom 	fprintf(outf, "TOUCHWIN(%0.2o)\n", win);
2519898Sbloom # endif
2619898Sbloom 	maxy = win->_maxy;
2719898Sbloom 	for (y = 0; y < maxy; y++)
2819898Sbloom 		touchline(win, y, 0, win->_maxx - 1);
2912341Sarnold }
3012341Sarnold 
3112341Sarnold /*
3219898Sbloom  * touch a given line
3312341Sarnold  */
3419898Sbloom touchline(win, y, sx, ex)
3519898Sbloom register WINDOW	*win;
3619898Sbloom register int	y, sx, ex;
3719898Sbloom {
3819898Sbloom # ifdef DEBUG
3919898Sbloom 	fprintf(outf, "TOUCHLINE(%0.2o, %d, %d, %d)\n", win, y, sx, ex);
4019898Sbloom 	fprintf(outf, "TOUCHLINE:first = %d, last = %d\n", win->_firstch[y], win->_lastch[y]);
4119898Sbloom # endif
4219898Sbloom 	sx += win->_ch_off;
4319898Sbloom 	ex += win->_ch_off;
4419898Sbloom 	if (win->_firstch[y] == _NOCHANGE) {
4519898Sbloom 		win->_firstch[y] = sx;
4619898Sbloom 		win->_lastch[y] = ex;
472265Sarnold 	}
4819898Sbloom 	else {
4919898Sbloom 		if (win->_firstch[y] > sx)
5019898Sbloom 			win->_firstch[y] = sx;
5119898Sbloom 		if (win->_lastch[y] < ex)
5219898Sbloom 			win->_lastch[y] = ex;
5319898Sbloom 	}
5419898Sbloom # ifdef	DEBUG
5519898Sbloom 	fprintf(outf, "TOUCHLINE:first = %d, last = %d\n", win->_firstch[y], win->_lastch[y]);
5619898Sbloom # endif
572265Sarnold }
58