Commit | Line | Data |
---|---|---|
bd9fa46d | 1 | #ifndef lint |
b0d4d9e2 | 2 | static char *sccsid = "@(#)wwredrawwin.c 3.3 83/08/18"; |
bd9fa46d EW |
3 | #endif |
4 | ||
5 | #include "ww.h" | |
6 | ||
7 | wwredrawwin(w) | |
8 | register struct ww *w; | |
9 | { | |
10 | wwredrawwin1(w, 0, w->ww_w.nr - 1, w->ww_scroll); | |
11 | } | |
12 | ||
13 | wwredrawwin1(w, srow, erow, offset) | |
14 | register struct ww *w; | |
15 | int 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 | } |