Annotation of 42BSD/usr.lib/libcurses/test.c, revision 1.1.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.