Change-Id: I179264ee6681a7ba4488b9f1c6bce1a19b4e1772 Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net> Reviewed-on: https://review.coreboot.org/c/30160 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
		
			
				
	
	
		
			155 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Public Domain Curses */
 | 
						|
 | 
						|
#include <curspriv.h>
 | 
						|
 | 
						|
RCSID("$Id: clear.c,v 1.35 2008/07/13 16:08:18 wmcbrine Exp $")
 | 
						|
 | 
						|
/*man-start**************************************************************
 | 
						|
 | 
						|
  Name:                                                         clear
 | 
						|
 | 
						|
  Synopsis:
 | 
						|
        int clear(void);
 | 
						|
        int wclear(WINDOW *win);
 | 
						|
        int erase(void);
 | 
						|
        int werase(WINDOW *win);
 | 
						|
        int clrtobot(void);
 | 
						|
        int wclrtobot(WINDOW *win);
 | 
						|
        int clrtoeol(void);
 | 
						|
        int wclrtoeol(WINDOW *win);
 | 
						|
 | 
						|
  Description:
 | 
						|
        erase() and werase() copy blanks (i.e. the background chtype) to
 | 
						|
        every cell of the window.
 | 
						|
 | 
						|
        clear() and wclear() are similar to erase() and werase(), but
 | 
						|
        they also call clearok() to ensure that the window is
 | 
						|
        cleared on the next wrefresh().
 | 
						|
 | 
						|
        clrtobot() and wclrtobot() clear the window from the current
 | 
						|
        cursor position to the end of the window.
 | 
						|
 | 
						|
        clrtoeol() and wclrtoeol() clear the window from the current
 | 
						|
        cursor position to the end of the current line.
 | 
						|
 | 
						|
  Return Value:
 | 
						|
        All functions return OK on success and ERR on error.
 | 
						|
 | 
						|
  Portability                                X/Open    BSD    SYS V
 | 
						|
        clear                                   Y       Y       Y
 | 
						|
        wclear                                  Y       Y       Y
 | 
						|
        erase                                   Y       Y       Y
 | 
						|
        werase                                  Y       Y       Y
 | 
						|
        clrtobot                                Y       Y       Y
 | 
						|
        wclrtobot                               Y       Y       Y
 | 
						|
        clrtoeol                                Y       Y       Y
 | 
						|
        wclrtoeol                               Y       Y       Y
 | 
						|
 | 
						|
**man-end****************************************************************/
 | 
						|
 | 
						|
int wclrtoeol(WINDOW *win)
 | 
						|
{
 | 
						|
    int x, y, minx;
 | 
						|
    chtype blank, *ptr;
 | 
						|
 | 
						|
    PDC_LOG(("wclrtoeol() - called: Row: %d Col: %d\n",
 | 
						|
             win->_cury, win->_curx));
 | 
						|
 | 
						|
    if (!win)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    y = win->_cury;
 | 
						|
    x = win->_curx;
 | 
						|
 | 
						|
    /* wrs (4/10/93) account for window background */
 | 
						|
 | 
						|
    blank = win->_bkgd;
 | 
						|
 | 
						|
    for (minx = x, ptr = &win->_y[y][x]; minx < win->_maxx; minx++, ptr++)
 | 
						|
        *ptr = blank;
 | 
						|
 | 
						|
    if (x < win->_firstch[y] || win->_firstch[y] == _NO_CHANGE)
 | 
						|
        win->_firstch[y] = x;
 | 
						|
 | 
						|
    win->_lastch[y] = win->_maxx - 1;
 | 
						|
 | 
						|
    PDC_sync(win);
 | 
						|
    return OK;
 | 
						|
}
 | 
						|
 | 
						|
int clrtoeol(void)
 | 
						|
{
 | 
						|
    PDC_LOG(("clrtoeol() - called\n"));
 | 
						|
 | 
						|
    return wclrtoeol(stdscr);
 | 
						|
}
 | 
						|
 | 
						|
int wclrtobot(WINDOW *win)
 | 
						|
{
 | 
						|
    PDC_LOG(("wclrtobot() - called\n"));
 | 
						|
 | 
						|
    if (!win)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    int savey = win->_cury;
 | 
						|
    int savex = win->_curx;
 | 
						|
 | 
						|
    /* should this involve scrolling region somehow ? */
 | 
						|
 | 
						|
    if (win->_cury + 1 < win->_maxy)
 | 
						|
    {
 | 
						|
        win->_curx = 0;
 | 
						|
        win->_cury++;
 | 
						|
        for (; win->_maxy > win->_cury; win->_cury++)
 | 
						|
            wclrtoeol(win);
 | 
						|
        win->_cury = savey;
 | 
						|
        win->_curx = savex;
 | 
						|
    }
 | 
						|
    wclrtoeol(win);
 | 
						|
 | 
						|
    PDC_sync(win);
 | 
						|
    return OK;
 | 
						|
}
 | 
						|
 | 
						|
int clrtobot(void)
 | 
						|
{
 | 
						|
    PDC_LOG(("clrtobot() - called\n"));
 | 
						|
 | 
						|
    return wclrtobot(stdscr);
 | 
						|
}
 | 
						|
 | 
						|
int werase(WINDOW *win)
 | 
						|
{
 | 
						|
    PDC_LOG(("werase() - called\n"));
 | 
						|
 | 
						|
    if (wmove(win, 0, 0) == ERR)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    return wclrtobot(win);
 | 
						|
}
 | 
						|
 | 
						|
int erase(void)
 | 
						|
{
 | 
						|
    PDC_LOG(("erase() - called\n"));
 | 
						|
 | 
						|
    return werase(stdscr);
 | 
						|
}
 | 
						|
 | 
						|
int wclear(WINDOW *win)
 | 
						|
{
 | 
						|
    PDC_LOG(("wclear() - called\n"));
 | 
						|
 | 
						|
    if (!win)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    win->_clear = TRUE;
 | 
						|
    return werase(win);
 | 
						|
}
 | 
						|
 | 
						|
int clear(void)
 | 
						|
{
 | 
						|
    PDC_LOG(("clear() - called\n"));
 | 
						|
 | 
						|
    return wclear(stdscr);
 | 
						|
}
 |