iPXE
mucurses.c File Reference

MuCurses core functions. More...

#include <curses.h>
#include "mucurses.h"

Go to the source code of this file.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 FILE_SECBOOT (PERMITTED)
static void _wupdcurs (WINDOW *win)
 Update cursor position.
void _wputch (WINDOW *win, chtype ch, int wrap)
 Write a single character rendition to a window.
void _wputc (WINDOW *win, char c, int wrap)
 Write a single character to a window.
void _wcursback (WINDOW *win)
 Retreat the cursor back one position (useful for a whole host of ops)
void _wputchstr (WINDOW *win, const chtype *chstr, int wrap, int n)
 Write a chtype string to a window.
void _wputstr (WINDOW *win, const char *str, int wrap, int n)
 Write a standard c-style string to a window.
int wmove (WINDOW *win, int y, int x)
 Move a window's cursor to the specified position.
int curs_set (int visibility)
 Set cursor visibility.

Variables

WINDOW _stdscr

Detailed Description

MuCurses core functions.

Definition in file mucurses.c.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED )

References __nonnull, ch, x, and y.

◆ _wupdcurs()

void _wupdcurs ( WINDOW * win)
static

Update cursor position.

Parameters
*winwindow in which to update position

Definition at line 39 of file mucurses.c.

39 {
40 win->scr->movetoyx ( win->scr, win->ori_y + win->curs_y,
41 win->ori_x + win->curs_x );
42}
void(* movetoyx)(struct _curses_screen *scr, unsigned int y, unsigned int x)
Move cursor to position specified by x,y coords.
Definition curses.h:56
unsigned int ori_x
window origin coordinates
Definition curses.h:96
unsigned int curs_x
window cursor position
Definition curses.h:98
unsigned int ori_y
Definition curses.h:96
unsigned int curs_y
Definition curses.h:98
SCREEN * scr
screen with which window associates
Definition curses.h:92

References _curses_window::curs_x, _curses_window::curs_y, _curses_screen::movetoyx, _curses_window::ori_x, _curses_window::ori_y, and _curses_window::scr.

Referenced by _wcursback(), _wputch(), and wmove().

◆ _wputch()

void _wputch ( WINDOW * win,
chtype ch,
int wrap )

Write a single character rendition to a window.

Parameters
*winwindow in which to write
chcharacter rendition to write
wrapwrap "switch"

Definition at line 51 of file mucurses.c.

51 {
52 /* make sure we set the screen cursor to the right position
53 first! */
54 _wupdcurs(win);
55 win->scr->putc(win->scr, ch);
56 if ( ++(win->curs_x) - win->width == 0 ) {
57 if ( wrap == WRAP ) {
58 win->curs_x = 0;
59 /* specification says we should really scroll,
60 but we have no buffer to scroll with, so we
61 can only overwrite back at the beginning of
62 the window */
63 if ( ++(win->curs_y) - win->height == 0 )
64 win->curs_y = 0;
65 } else {
66 (win->curs_x)--;
67 }
68 }
69}
static void _wupdcurs(WINDOW *win) __nonnull
Update cursor position.
Definition mucurses.c:39
#define WRAP
Definition mucurses.h:13
uint8_t ch
Definition registers.h:1
void(* putc)(struct _curses_screen *scr, chtype c)
Write character to current cursor position.
Definition curses.h:64
unsigned int width
window dimensions
Definition curses.h:100
unsigned int height
Definition curses.h:100

References _wupdcurs(), ch, _curses_window::curs_x, _curses_window::curs_y, _curses_window::height, _curses_screen::putc, _curses_window::scr, _curses_window::width, and WRAP.

Referenced by _printw_handler(), _wgetc(), _wputc(), _wputchstr(), delwin(), slk_restore(), waddch(), wborder(), wgetch(), whline(), and wvline().

◆ _wputc()

void _wputc ( WINDOW * win,
char c,
int wrap )

Write a single character to a window.

Parameters
*winwindow in which to write
ccharacter rendition to write
wrapwrap "switch"

Definition at line 78 of file mucurses.c.

78 {
79 _wputch ( win, ( ( ( unsigned char ) c ) | win->attrs ), wrap );
80}
void _wputch(WINDOW *win, chtype ch, int wrap) __nonnull
Write a single character rendition to a window.
Definition mucurses.c:51
attr_t attrs
window attributes
Definition curses.h:94

References _wputch(), and _curses_window::attrs.

Referenced by _wputstr(), wclrtobot(), wclrtoeol(), and wdelch().

◆ _wcursback()

void _wcursback ( WINDOW * win)

Retreat the cursor back one position (useful for a whole host of ops)

Parameters
*winwindow in which to retreat

Definition at line 88 of file mucurses.c.

88 {
89 if ( win->curs_x == 0 ) {
90 if ( win->curs_y == 0 )
91 win->curs_y = win->height - 1;
92 win->curs_x = win->width = 1;
93 } else {
94 win->curs_x--;
95 }
96
97 _wupdcurs(win);
98}

References _wupdcurs(), _curses_window::curs_x, _curses_window::curs_y, _curses_window::height, and _curses_window::width.

Referenced by wdelch(), wgetch(), and wgetnstr().

◆ _wputchstr()

void _wputchstr ( WINDOW * win,
const chtype * chstr,
int wrap,
int n )

Write a chtype string to a window.

Parameters
*winwindow in which to write
*chstrchtype string
wrapwrap "switch"
nwrite at most n chtypes

Definition at line 108 of file mucurses.c.

108 {
109 for ( ; *chstr && n-- ; chstr++ ) {
110 _wputch(win,*chstr,wrap);
111 }
112}

References _wputch().

Referenced by waddchnstr().

◆ _wputstr()

void _wputstr ( WINDOW * win,
const char * str,
int wrap,
int n )

Write a standard c-style string to a window.

Parameters
*winwindow in which to write
*strstring
wrapwrap "switch"
nwrite at most n chars from *str

Definition at line 122 of file mucurses.c.

122 {
123 for ( ; *str && n-- ; str++ ) {
124 _wputc ( win, *str, wrap );
125 }
126}
void _wputc(WINDOW *win, char c, int wrap) __nonnull
Write a single character to a window.
Definition mucurses.c:78

References _wputc().

Referenced by _print_label(), and waddnstr().

◆ wmove()

int wmove ( WINDOW * win,
int y,
int x )

Move a window's cursor to the specified position.

Parameters
*winwindow to be operated on
yY position
xX position
Return values
rcreturn status code

Definition at line 136 of file mucurses.c.

136 {
137 /* chech for out-of-bounds errors */
138 if ( ( (unsigned)y >= win->height ) ||
139 ( (unsigned)x >= win->width ) ) {
140 return ERR;
141 }
142
143 win->curs_y = y;
144 win->curs_x = x;
145 _wupdcurs(win);
146 return OK;
147}
#define ERR
Definition curses.h:19
#define OK
Definition curses.h:25
static unsigned int unsigned int y
Definition pixbuf.h:63
static unsigned int x
Definition pixbuf.h:63

References _wupdcurs(), _curses_window::curs_x, _curses_window::curs_y, ERR, _curses_window::height, OK, _curses_window::width, x, and y.

Referenced by _enter_slk(), _restore_curs_pos(), delwin(), move(), mvaddch(), mvaddchnstr(), mvaddchstr(), mvaddnstr(), mvaddstr(), mvdelch(), mvgetch(), mvgetnstr(), mvgetstr(), mvhline(), mvvline(), mvwaddch(), mvwaddchnstr(), mvwaddchstr(), mvwaddnstr(), mvwaddstr(), mvwdelch(), mvwgetch(), mvwgetnstr(), mvwgetstr(), mvwhline(), mvwvline(), wborder(), wdeleteln(), werase(), and wvline().

◆ curs_set()

int curs_set ( int visibility)

Set cursor visibility.

Parameters
visibilitycursor visibility

Definition at line 154 of file mucurses.c.

154 {
155 stdscr->scr->cursor ( stdscr->scr, visibility );
156 return OK;
157}
#define stdscr
Definition curses.h:111

References OK, and stdscr.

Referenced by endwin(), main_loop(), settings_ui(), and show_menu().

Variable Documentation

◆ _stdscr

WINDOW _stdscr
Initial value:
= {
.attrs = A_DEFAULT,
.ori_y = 0,
.ori_x = 0,
.curs_y = 0,
.curs_x = 0,
.scr = &_ansi_screen,
}
SCREEN _ansi_screen
Definition ansi_screen.c:94
#define A_DEFAULT
Definition curses.h:136

Definition at line 21 of file mucurses.c.

21 {
22 .attrs = A_DEFAULT,
23 .ori_y = 0,
24 .ori_x = 0,
25 .curs_y = 0,
26 .curs_x = 0,
27 .scr = &_ansi_screen,
28};