Annotation of qemu/roms/ipxe/src/hci/mucurses/edging.c, revision 1.1.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.