118742Sedward /*
2*62479Sbostic  * Copyright (c) 1983, 1993
3*62479Sbostic  *	The Regents of the University of California.  All rights reserved.
433514Sbostic  *
542954Sbostic  * This code is derived from software contributed to Berkeley by
642954Sbostic  * Edward Wang at The University of California, Berkeley.
742954Sbostic  *
842835Sbostic  * %sccs.include.redist.c%
918742Sedward  */
1018742Sedward 
1133514Sbostic #ifndef lint
12*62479Sbostic static char sccsid[] = "@(#)wwredrawwin.c	8.1 (Berkeley) 06/06/93";
1333514Sbostic #endif /* not lint */
1433514Sbostic 
1514584Sedward #include "ww.h"
1614584Sedward 
wwredrawwin1(w,row1,row2,offset)1714989Sedward wwredrawwin1(w, row1, row2, offset)
1814584Sedward register struct ww *w;
1914989Sedward int row1, row2, offset;
2014584Sedward {
2115639Sedward 	int row;
2215639Sedward 	register col;
2314584Sedward 	register char *smap;
2414584Sedward 	register union ww_char *buf;
2514584Sedward 	register char *win;
2614584Sedward 	register union ww_char *ns;
2732323Sedward 	int x;
2815654Sedward 	int nchanged;
2914584Sedward 
3015654Sedward 	for (row = row1; row < row2; row++) {
3115639Sedward 		col = w->ww_i.l;
3215639Sedward 		ns = wwns[row];
3315639Sedward 		smap = &wwsmap[row][col];
3415639Sedward 		buf = w->ww_buf[row + offset];
3515639Sedward 		win = w->ww_win[row];
3615654Sedward 		nchanged = 0;
3715639Sedward 		for (; col < w->ww_i.r; col++)
3832323Sedward 			if (*smap++ == w->ww_index &&
3932323Sedward 			    ns[col].c_w !=
4032323Sedward 			    (x = buf[col].c_w ^ win[col] << WWC_MSHIFT)) {
4115654Sedward 				nchanged++;
4232323Sedward 				ns[col].c_w = x;
4314663Sedward 			}
4435330Sedward 		if (nchanged > 0)
4515654Sedward 			wwtouched[row] |= WWU_TOUCHED;
4614584Sedward 	}
4714584Sedward }
48