|
|
1.1 ! root 1: /* ! 2: * make the current screen look like "win" over the area covered by ! 3: * win. ! 4: * ! 5: * 7/9/81 (Berkeley) @(#)refresh.c 1.6 ! 6: */ ! 7: ! 8: /* @(#) pnoutrfrsh.c: 1.1 10/15/83 (1.14 3/6/83) */ ! 9: #include "curses.ext" ! 10: ! 11: extern WINDOW *lwin; ! 12: ! 13: /* Put out pad but don't actually update screen. */ ! 14: pnoutrefresh(pad, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol) ! 15: register WINDOW *pad; ! 16: int pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol; ! 17: { ! 18: register int pr, r, c; ! 19: register chtype *nsp, *lch; ! 20: ! 21: # ifdef DEBUG ! 22: if(outf) fprintf(outf, "PREFRESH(pad %x, pcorner %d,%d, smin %d,%d, smax %d,%d)", pad, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol); ! 23: _dumpwin(pad); ! 24: if(outf) fprintf(outf, "PREFRESH:\n\tfirstch\tlastch\n"); ! 25: # endif ! 26: ! 27: /* Make sure everything fits */ ! 28: if (pminrow < 0) pminrow = 0; ! 29: if (pmincol < 0) pmincol = 0; ! 30: if (sminrow < 0) sminrow = 0; ! 31: if (smincol < 0) smincol = 0; ! 32: if (smaxrow >= lines) smaxrow = lines-1; ! 33: if (smaxcol >= columns) smaxcol = columns-1; ! 34: if (smaxrow - sminrow > pad->_maxy - pminrow) ! 35: smaxrow = sminrow + (pad->_maxy - pminrow); ! 36: ! 37: /* Copy it out, like a refresh, but appropriately offset */ ! 38: for (pr=pminrow,r=sminrow; r <= smaxrow; r++,pr++) { ! 39: /* No record of what previous loc looked like, so do it all */ ! 40: lch = &pad->_y[pr][pad->_maxx-1]; ! 41: nsp = &pad->_y[pr][pmincol]; ! 42: _ll_move(r, smincol); ! 43: for (c=smincol; nsp<=lch; c++) { ! 44: if (SP->virt_x++ < columns && c <= smaxcol) ! 45: *SP->curptr++ = *nsp++; ! 46: else ! 47: break; ! 48: } ! 49: pad->_firstch[pr] = _NOCHANGE; ! 50: } ! 51: lwin = pad; ! 52: return OK; ! 53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.