scrolling has come
[unix-history] / usr / src / usr.bin / window / wwredrawwin.c
CommitLineData
bd9fa46d 1#ifndef lint
b0d4d9e2 2static char *sccsid = "@(#)wwredrawwin.c 3.3 83/08/18";
bd9fa46d
EW
3#endif
4
5#include "ww.h"
6
7wwredrawwin(w)
8register struct ww *w;
9{
10 wwredrawwin1(w, 0, w->ww_w.nr - 1, w->ww_scroll);
11}
12
13wwredrawwin1(w, srow, erow, offset)
14register struct ww *w;
15int srow, erow, offset;
16{
17 int i;
18 register j;
19 register char *smap;
20 register union ww_char *buf;
21 register char *win;
22 register union ww_char *ns;
861cd1ed 23 char *touched;
bd9fa46d 24
861cd1ed
EW
25 touched = &wwtouched[srow + w->ww_w.t];
26 for (i = srow; i <= erow; i++, touched++) {
bd9fa46d
EW
27 ns = &wwns[i + w->ww_w.t][w->ww_w.l];
28 smap = &wwsmap[i + w->ww_w.t][w->ww_w.l];
29 buf = w->ww_buf[offset + i];
30 win = w->ww_win[i];
31 for (j = w->ww_w.nc; --j >= 0;)
32 if (*smap++ != w->ww_index)
33 win++, ns++, buf++;
861cd1ed
EW
34 else {
35 *touched = 1;
bd9fa46d
EW
36 ns++->c_w = buf++->c_w
37 ^ *win++ << WWC_MSHIFT;
861cd1ed 38 }
bd9fa46d
EW
39 }
40}