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 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