Annotation of qemu/roms/ipxe/src/hci/mucurses/edging.c, revision 1.1

1.1     ! root        1: #include <curses.h>
        !             2: #include "mucurses.h"
        !             3: #include "cursor.h"
        !             4: 
        !             5: /** @file
        !             6:  *
        !             7:  * MuCurses edging functions
        !             8:  *
        !             9:  */
        !            10: 
        !            11: /**
        !            12:  * Draw borders from single-byte characters and renditions around a
        !            13:  * window
        !            14:  *
        !            15:  * @v *win     window to be bordered
        !            16:  * @v verch    vertical chtype
        !            17:  * @v horch    horizontal chtype
        !            18:  * @ret rc     return status code
        !            19:  */
        !            20: int box ( WINDOW *win, chtype verch, chtype horch ) {
        !            21:        chtype corner = '+' | win->attrs; /* default corner character */
        !            22:        return wborder( win, verch, verch, horch, horch,
        !            23:                        corner, corner, corner, corner );
        !            24: }
        !            25: 
        !            26: /**
        !            27:  * Draw borders from single-byte characters and renditions around a
        !            28:  * window
        !            29:  *
        !            30:  * @v *win     window to be bordered
        !            31:  * @v ls       left side
        !            32:  * @v rs       right side
        !            33:  * @v ts       top
        !            34:  * @v bs       bottom
        !            35:  * @v tl       top left corner
        !            36:  * @v tr       top right corner
        !            37:  * @v bl       bottom left corner
        !            38:  * @v br       bottom right corner
        !            39:  * @ret rc     return status code
        !            40:  */
        !            41: int wborder ( WINDOW *win, chtype ls, chtype rs,
        !            42:              chtype ts, chtype bs, chtype tl,
        !            43:              chtype tr, chtype bl, chtype br ) {
        !            44:        struct cursor_pos pos;
        !            45: 
        !            46:        _store_curs_pos( win, &pos );
        !            47:        wmove(win,0,0);
        !            48: 
        !            49:        _wputch(win,tl,WRAP);
        !            50:        while ( ( win->width - 1 ) - win->curs_x ) {
        !            51:                _wputch(win,ts,WRAP);
        !            52:        }
        !            53:        _wputch(win,tr,WRAP);
        !            54: 
        !            55:        while ( ( win->height - 1 ) - win->curs_y ) {
        !            56:                _wputch(win,ls,WRAP);
        !            57:                wmove(win,win->curs_y,(win->width)-1);
        !            58:                _wputch(win,rs,WRAP);
        !            59:        }
        !            60: 
        !            61:        _wputch(win,bl,WRAP);
        !            62:        while ( ( win->width -1 ) - win->curs_x ) {
        !            63:                _wputch(win,bs,WRAP);
        !            64:        }
        !            65:        _wputch(win,br,NOWRAP); /* do not wrap last char to leave
        !            66:                                   cursor in last position */
        !            67:        _restore_curs_pos( win, &pos );
        !            68: 
        !            69:        return OK;
        !            70: }
        !            71: 
        !            72: /**
        !            73:  * Create a horizontal line in a window
        !            74:  *
        !            75:  * @v *win     subject window
        !            76:  * @v ch       rendition and character
        !            77:  * @v n                max number of chars (wide) to render
        !            78:  * @ret rc     return status code
        !            79:  */
        !            80: int whline ( WINDOW *win, chtype ch, int n ) {
        !            81:        struct cursor_pos pos;
        !            82: 
        !            83:        _store_curs_pos ( win, &pos );
        !            84:        while ( ( win->curs_x - win->width ) && n-- ) {
        !            85:                _wputch ( win, ch, NOWRAP );
        !            86:        }
        !            87:        _restore_curs_pos ( win, &pos );
        !            88: 
        !            89:        return OK;
        !            90: }
        !            91: 
        !            92: /**
        !            93:  * Create a vertical line in a window
        !            94:  *
        !            95:  * @v *win     subject window
        !            96:  * @v ch       rendition and character
        !            97:  * @v n                max number of chars (high) to render
        !            98:  * @ret rc     return status code
        !            99:  */
        !           100: int wvline ( WINDOW *win, chtype ch, int n ) {
        !           101:        struct cursor_pos pos;
        !           102: 
        !           103:        _store_curs_pos ( win, &pos );
        !           104:        while ( ( win->curs_y - win->height ) && n-- ) {
        !           105:                _wputch ( win, ch, NOWRAP );
        !           106:                wmove( win, ++(win->curs_y), pos.x);
        !           107:        }
        !           108:        _restore_curs_pos ( win, &pos );
        !           109: 
        !           110:        return OK;
        !           111: }

unix.superglobalmegacorp.com

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