1 /* 2 * Copyright (c) 1983 Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are permitted 6 * provided that the above copyright notice and this paragraph are 7 * duplicated in all such forms and that any documentation, 8 * advertising materials, and other materials related to such 9 * distribution and use acknowledge that the software was developed 10 * by the University of California, Berkeley. The name of the 11 * University may not be used to endorse or promote products derived 12 * from this software without specific prior written permission. 13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 16 */ 17 18 #ifndef lint 19 static char sccsid[] = "@(#)wwredrawwin.c 3.13 (Berkeley) 06/29/88"; 20 #endif /* not lint */ 21 22 #include "ww.h" 23 24 wwredrawwin1(w, row1, row2, offset) 25 register struct ww *w; 26 int row1, row2, offset; 27 { 28 int row; 29 register col; 30 register char *smap; 31 register union ww_char *buf; 32 register char *win; 33 register union ww_char *ns; 34 int x; 35 int nchanged; 36 37 for (row = row1; row < row2; row++) { 38 col = w->ww_i.l; 39 ns = wwns[row]; 40 smap = &wwsmap[row][col]; 41 buf = w->ww_buf[row + offset]; 42 win = w->ww_win[row]; 43 nchanged = 0; 44 for (; col < w->ww_i.r; col++) 45 if (*smap++ == w->ww_index && 46 ns[col].c_w != 47 (x = buf[col].c_w ^ win[col] << WWC_MSHIFT)) { 48 nchanged++; 49 ns[col].c_w = x; 50 } 51 if (nchanged > 4) 52 wwtouched[row] |= WWU_MAJOR|WWU_TOUCHED; 53 else if (nchanged > 0) 54 wwtouched[row] |= WWU_TOUCHED; 55 } 56 } 57