|
|
1.1 ! root 1: /********************************************************************* ! 2: * COPYRIGHT NOTICE * ! 3: ********************************************************************** ! 4: * This software is copyright (C) 1982 by Pavel Curtis * ! 5: * * ! 6: * Permission is granted to reproduce and distribute * ! 7: * this file by any means so long as no fee is charged * ! 8: * above a nominal handling fee and so long as this * ! 9: * notice is always included in the copies. * ! 10: * * ! 11: * Other rights are reserved except as explicitly granted * ! 12: * by written permission of the author. * ! 13: * Pavel Curtis * ! 14: * Computer Science Dept. * ! 15: * 405 Upson Hall * ! 16: * Cornell University * ! 17: * Ithaca, NY 14853 * ! 18: * * ! 19: * Ph- (607) 256-4934 * ! 20: * * ! 21: * Pavel.Cornell@Udel-Relay (ARPAnet) * ! 22: * decvax!cornell!pavel (UUCPnet) * ! 23: *********************************************************************/ ! 24: ! 25: /* ! 26: ** lib_erase.c ! 27: ** ! 28: ** The routine werase(). ! 29: ** ! 30: ** $Log: lib_erase.c,v $ ! 31: * Revision 1.8 93/04/12 14:13:38 bin ! 32: * Udo: third color update ! 33: * ! 34: * Revision 1.2 92/04/13 14:37:27 bin ! 35: * update by vlad ! 36: * ! 37: * Revision 2.3 91/04/20 18:32:50 munk ! 38: * Usage of register variables ! 39: * ! 40: * Revision 2.2 82/11/03 12:27:41 pavel ! 41: * Fixed off-by-one error... If only I had used an invariant... ! 42: * ! 43: * Revision 2.1 82/10/25 14:47:17 pavel ! 44: * Added Copyright Notice ! 45: * ! 46: * Revision 2.0 82/10/25 13:45:12 pavel ! 47: * Beta-one Test Release ! 48: * ! 49: ** ! 50: */ ! 51: ! 52: #ifdef RCSHDR ! 53: static char RCSid[] = ! 54: "$Header: /src386/usr/lib/ncurses/RCS/lib_erase.c,v 1.8 93/04/12 14:13:38 bin Exp Locker: bin $"; ! 55: #endif ! 56: ! 57: #include "curses.h" ! 58: #include "curses.priv.h" ! 59: ! 60: ! 61: werase(win) ! 62: register WINDOW *win; ! 63: { ! 64: register int y; ! 65: chtype *sp, *end, *start, *maxx; ! 66: int minx; ! 67: chtype blank = ' ' | win->_attrs; ! 68: ! 69: #ifdef TRACE ! 70: if (_tracing) ! 71: _tracef("werase(%o) called", win); ! 72: #endif ! 73: ! 74: for (y = win->_regtop; y <= win->_regbottom; y++) ! 75: { ! 76: minx = _NOCHANGE; ! 77: start = win->_line[y]; ! 78: end = &start[win->_maxx]; ! 79: ! 80: for (sp = start; sp <= end; sp++) ! 81: { ! 82: if (*sp != blank) ! 83: { ! 84: maxx = sp; ! 85: if (minx == _NOCHANGE) ! 86: minx = sp - start; ! 87: ! 88: *sp = blank; ! 89: ! 90: win->_numchngd[y] += 1; ! 91: } ! 92: } ! 93: ! 94: if (minx != _NOCHANGE) ! 95: { ! 96: if (win->_firstchar[y] > minx ! 97: || win->_firstchar[y] == _NOCHANGE) ! 98: win->_firstchar[y] = minx; ! 99: ! 100: if (win->_lastchar[y] < maxx - win->_line[y]) ! 101: win->_lastchar[y] = maxx - win->_line[y]; ! 102: } ! 103: } ! 104: ! 105: win->_curx = win->_cury = 0; ! 106: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.