1 /*
2 * Copyright (c) 1983, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Edward Wang at The University of California, Berkeley.
7 *
8 * %sccs.include.redist.c%
9 */
10
11 #ifndef lint
12 static char sccsid[] = "@(#)wwredrawwin.c 8.1 (Berkeley) 06/06/93";
13 #endif /* not lint */
14
15 #include "ww.h"
16
wwredrawwin1(w,row1,row2,offset)17 wwredrawwin1(w, row1, row2, offset)
18 register struct ww *w;
19 int row1, row2, offset;
20 {
21 int row;
22 register col;
23 register char *smap;
24 register union ww_char *buf;
25 register char *win;
26 register union ww_char *ns;
27 int x;
28 int nchanged;
29
30 for (row = row1; row < row2; row++) {
31 col = w->ww_i.l;
32 ns = wwns[row];
33 smap = &wwsmap[row][col];
34 buf = w->ww_buf[row + offset];
35 win = w->ww_win[row];
36 nchanged = 0;
37 for (; col < w->ww_i.r; col++)
38 if (*smap++ == w->ww_index &&
39 ns[col].c_w !=
40 (x = buf[col].c_w ^ win[col] << WWC_MSHIFT)) {
41 nchanged++;
42 ns[col].c_w = x;
43 }
44 if (nchanged > 0)
45 wwtouched[row] |= WWU_TOUCHED;
46 }
47 }
48