1 #ifndef lint 2 static char *sccsid = "@(#)wwredrawwin.c 3.1 83/08/12"; 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; 23 24 for (i = srow; i <= erow; i++) { 25 ns = &wwns[i + w->ww_w.t][w->ww_w.l]; 26 smap = &wwsmap[i + w->ww_w.t][w->ww_w.l]; 27 buf = w->ww_buf[offset + i]; 28 win = w->ww_win[i]; 29 for (j = w->ww_w.nc; --j >= 0;) 30 if (*smap++ != w->ww_index) 31 win++, ns++, buf++; 32 else 33 ns++->c_w = buf++->c_w 34 ^ *win++ << WWC_MSHIFT; 35 } 36 } 37