|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Regents of the University of California. ! 3: * 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: * Redistribution and use in source and binary forms are permitted provided ! 9: * that: (1) source distributions retain this entire copyright notice and ! 10: * comment, and (2) distributions including binaries display the following ! 11: * acknowledgement: ``This product includes software developed by the ! 12: * University of California, Berkeley and its contributors'' in the ! 13: * documentation or other materials provided with the distribution and in ! 14: * all advertising materials mentioning features or use of this software. ! 15: * Neither the name of the University nor the names of its contributors may ! 16: * be used to endorse or promote products derived from this software without ! 17: * specific prior written permission. ! 18: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 19: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 20: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 21: */ ! 22: ! 23: #ifndef lint ! 24: static char sccsid[] = "@(#)wwlabel.c 3.17 (Berkeley) 6/6/90"; ! 25: #endif /* not lint */ ! 26: ! 27: #include "ww.h" ! 28: #include "char.h" ! 29: ! 30: /* ! 31: * Label window w on f, ! 32: * at 1 line above w and 'where' columns from it's left edge. ! 33: * Gross, but it works. ! 34: */ ! 35: wwlabel(w, f, where, l, mode) ! 36: struct ww *w; ! 37: struct ww *f; ! 38: char *l; ! 39: { ! 40: int row; ! 41: register j; ! 42: int jj; ! 43: register char *win; ! 44: register union ww_char *buf; ! 45: register union ww_char *ns; ! 46: register char *fmap; ! 47: register char *smap; ! 48: char touched; ! 49: char *p; ! 50: ! 51: if (f->ww_fmap == 0) ! 52: return; ! 53: ! 54: row = w->ww_w.t - 1; ! 55: if (row < f->ww_i.t || row >= f->ww_i.b) ! 56: return; ! 57: win = f->ww_win[row]; ! 58: buf = f->ww_buf[row]; ! 59: fmap = f->ww_fmap[row]; ! 60: ns = wwns[row]; ! 61: smap = wwsmap[row]; ! 62: touched = wwtouched[row]; ! 63: mode <<= WWC_MSHIFT; ! 64: ! 65: jj = MIN(w->ww_i.r, f->ww_i.r); ! 66: j = w->ww_i.l + where; ! 67: while (j < jj && *l) ! 68: for (p = unctrl(*l++); j < jj && *p; j++, p++) { ! 69: /* can't label if not already framed */ ! 70: if (win[j] & WWM_GLS) ! 71: continue; ! 72: if (smap[j] != f->ww_index) ! 73: buf[j].c_w = mode | *p; ! 74: else { ! 75: ns[j].c_w = (buf[j].c_w = mode | *p) ! 76: ^ win[j] << WWC_MSHIFT; ! 77: touched |= WWU_TOUCHED; ! 78: } ! 79: fmap[j] |= WWF_LABEL; ! 80: } ! 81: wwtouched[row] = touched; ! 82: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.