iPXE
clear.c
Go to the documentation of this file.
1#include <curses.h>
2#include "mucurses.h"
3#include "cursor.h"
4
5/** @file
6 *
7 * MuCurses clearing functions
8 *
9 */
10
11FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
12FILE_SECBOOT ( PERMITTED );
13
14/**
15 * Clear a window to the bottom from current cursor position
16 *
17 * @v *win subject window
18 * @ret rc return status code
19 */
20int wclrtobot ( WINDOW *win ) {
21 struct cursor_pos pos;
22
23 _store_curs_pos( win, &pos );
24 do {
25 _wputc( win, ' ', WRAP );
26 } while ( win->curs_y + win->curs_x );
27 _restore_curs_pos( win, &pos );
28
29 return OK;
30}
31
32/**
33 * Clear a window to the end of the current line
34 *
35 * @v *win subject window
36 * @ret rc return status code
37 */
38int wclrtoeol ( WINDOW *win ) {
39 struct cursor_pos pos;
40
41 _store_curs_pos( win, &pos );
42 while ( ( win->curs_y - pos.y ) == 0 ) {
43 _wputc( win, ' ', WRAP );
44 }
45 _restore_curs_pos( win, &pos );
46
47 return OK;
48}
49
50/**
51 * Delete character under the cursor in a window
52 *
53 * @v *win subject window
54 * @ret rc return status code
55 */
56int wdelch ( WINDOW *win ) {
57 _wputc( win, ' ', NOWRAP );
58 _wcursback( win );
59
60 return OK;
61}
62
63/**
64 * Delete line under a window's cursor
65 *
66 * @v *win subject window
67 * @ret rc return status code
68 */
69int wdeleteln ( WINDOW *win ) {
70 struct cursor_pos pos;
71
72 _store_curs_pos( win, &pos );
73 /* let's just set the cursor to the beginning of the line and
74 let wclrtoeol do the work :) */
75 wmove( win, win->curs_y, 0 );
76 wclrtoeol( win );
77 _restore_curs_pos( win, &pos );
78 return OK;
79}
80
81/**
82 * Completely clear a window
83 *
84 * @v *win subject window
85 * @ret rc return status code
86 */
87int werase ( WINDOW *win ) {
88 wmove( win, 0, 0 );
89 wclrtobot( win );
90 return OK;
91}
92
93/**
94 * Completely clear the screen
95 *
96 * @ret rc return status code
97 */
98int erase ( void ) {
99 stdscr->scr->erase( stdscr->scr, stdscr->attrs );
100 return OK;
101}
int wdelch(WINDOW *win)
Delete character under the cursor in a window.
Definition clear.c:56
int erase(void)
Completely clear the screen.
Definition clear.c:98
int werase(WINDOW *win)
Completely clear a window.
Definition clear.c:87
int wdeleteln(WINDOW *win)
Delete line under a window's cursor.
Definition clear.c:69
int wclrtobot(WINDOW *win)
Clear a window to the bottom from current cursor position.
Definition clear.c:20
int wclrtoeol(WINDOW *win)
Clear a window to the end of the current line.
Definition clear.c:38
MuCurses header file.
#define stdscr
Definition curses.h:111
#define OK
Definition curses.h:25
struct _curses_window WINDOW
Curses Window struct.
MuCurses cursor implementation specific header file.
static void _store_curs_pos(WINDOW *win, struct cursor_pos *pos)
Store cursor position for later restoration.
Definition cursor.h:33
static void _restore_curs_pos(WINDOW *win, struct cursor_pos *pos)
Restore cursor position from encoded backup variable.
Definition cursor.h:23
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
Definition compiler.h:926
int wmove(WINDOW *win, int y, int x) __nonnull
Move a window's cursor to the specified position.
Definition mucurses.c:136
void _wcursback(WINDOW *win) __nonnull
Retreat the cursor back one position (useful for a whole host of ops)
Definition mucurses.c:88
void _wputc(WINDOW *win, char c, int wrap) __nonnull
Write a single character to a window.
Definition mucurses.c:78
MuCurses core implementation specific header file.
#define WRAP
Definition mucurses.h:13
#define NOWRAP
Definition mucurses.h:14
unsigned int curs_x
window cursor position
Definition curses.h:98
unsigned int curs_y
Definition curses.h:98
unsigned int y
Definition cursor.h:14