Annotation of researchv10no/ncurses/screen/pnoutrfrsh.c, revision 1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.