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