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