Annotation of 42BSD/usr.lib/libcurses/test.c, revision 1.1

1.1     ! root        1: #include       <curses.h>
        !             2: 
        !             3: #define        min(a,b)        (a < b ? a : b)
        !             4: 
        !             5: main()
        !             6: {
        !             7:     WINDOW     *win1, *win2, *newwin();
        !             8: 
        !             9:     initscr();
        !            10:     win1 = newwin(10, 40, 3, 1);       /* Origin at (y,x) = (3,1) and
        !            11:                                         * size of (dy,dx) = (10,40)    */
        !            12:     box(win1, '*', '*');
        !            13: 
        !            14:     win2 = newwin(LINES-1, COLS-1, 1, 1);  /* A large, blank window that
        !            15:                                            * gets the little one written
        !            16:                                            * onto it.                  */
        !            17: 
        !            18:     NewOverwrite(win1, win2);  /* These three lines write win1 onto win2, */
        !            19:     wrefresh(win2);            /* refresh win2, and sleep... */
        !            20:     sleep(2);
        !            21: 
        !            22:     mvwin(win1, 1, 3);         /* These four lines move win1, erase the */
        !            23:     werase(win2);              /* old win2, write win1 in its new position */
        !            24:     NewOverwrite(win1, win2);  /* onto win2, and redisplay win2.  Notice */
        !            25:     wrefresh(win2);            /* irregularities in the border of win1. */
        !            26:     sleep(2);
        !            27: 
        !            28:     mvwin(win1, 1, 5);         /* These four lines move win1 OUT OF the */
        !            29:     werase(win2);              /* first 4 columns and it is displayed */
        !            30:     NewOverwrite(win1, win2);  /* correctly, except for some traces of */
        !            31:     wrefresh(win2);            /* the old win1's and a missing '*' near */
        !            32:                                /* the lower-right corner.              */
        !            33: 
        !            34:     mvcur(0, COLS - 1, LINES - 1, 0);
        !            35:     endwin();
        !            36: }
        !            37: 
        !            38: NewOverwrite(win1, win2)
        !            39: reg WINDOW     *win1, *win2;
        !            40: {
        !            41:     reg int            i, x, y, minx, miny, starty, startx;
        !            42: /*
        !            43:  *
        !            44:  * minx and miny were erroneously computed before.
        !            45:  * The following assignments do it correctly.
        !            46:  *
        !            47:  */
        !            48:     miny = min(win1->_maxy, win2->_maxy + win2->_begy - win1->_begy);
        !            49:     minx = min(win1->_maxx, win2->_maxx + win2->_begx - win1->_begx);
        !            50: 
        !            51:     starty = win1->_begy - win2->_begy;
        !            52:     /*
        !            53:      *
        !            54:      * The following line was added:
        !            55:      *
        !            56:      */
        !            57:     startx = win1->_begx - win2->_begx;
        !            58: 
        !            59:     for (y = 0; y < miny; y++)
        !            60:     /*
        !            61:      *
        !            62:      * And this is the only other change...substituted startx
        !            63:      * for 0 here ---------------------
        !            64:      *                                       |
        !            65:      *                               v                         */
        !            66:        if (wmove(win2, y + starty, startx) != ERR)
        !            67:            for (x = 0; x < minx; x++)
        !            68:                waddch(win2, win1->_y[y][x]);
        !            69: }

unix.superglobalmegacorp.com

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