aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/tbi/screen.c36
-rw-r--r--lib/tbi/screen.h36
-rw-r--r--lib/tbi/win.c290
-rw-r--r--lib/tbi/win.h186
4 files changed, 0 insertions, 548 deletions
diff --git a/lib/tbi/screen.c b/lib/tbi/screen.c
deleted file mode 100644
index ae4f2be..0000000
--- a/lib/tbi/screen.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <Uefi.h>
-#include <Library/DebugLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-
-#include "screen.h"
-
-struct screen *prepare_screen(VOID)
-{
- struct screen *scr;
- scr = AllocateZeroPool(sizeof(struct screen));
- if(!scr)
- return NULL;
-
- scr->stdin = gST->ConIn;
- scr->stdout = gST->ConOut;
- scr->stderr = gST->StdErr;
-
- gST->ConOut->QueryMode(
- gST->ConOut,
- gST->ConOut->Mode->Mode,
- &(scr->columns),
- &(scr->lines)
- );
- scr->attr = gST->ConOut->Mode->Attribute;
-
- return scr;
-}
-
-VOID forget_screen(struct screen *scr)
-{
- ASSERT(scr != NULL);
-
- FreePool(scr);
-}
diff --git a/lib/tbi/screen.h b/lib/tbi/screen.h
deleted file mode 100644
index e97bf64..0000000
--- a/lib/tbi/screen.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef UFM_TBI_SCREEN_H
-#define UFM_TBI_SCREEN_H
-
-/*
- EDK2 NOTE: All devices that support the Simple Text Output Protocol must
- minimally support an 80x25 character mode. Additional modes are optional
-*/
-
-#include <Uefi.h>
-
-struct screen
-{
- EFI_SIMPLE_TEXT_INPUT_PROTOCOL *stdin;
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *stdout;
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *stderr;
- UINTN columns, lines; // current screen size
- INT32 attr; // main screen attributes
-};
-
-/*
- * Prepares a structure with information about screen
- *
- * return: A pointer to the allocated structure or NULL if allocation fails
-*/
-struct screen *prepare_screen(VOID);
-
-/*
- * Frees the structure of the screen
- *
- * scr: the screen on which to operate
- *
- * return: VOID
-*/
-VOID forget_screen(struct screen *scr);
-
-#endif /* UFM_TBI_SCREEN_H */
diff --git a/lib/tbi/win.c b/lib/tbi/win.c
deleted file mode 100644
index 3d82e58..0000000
--- a/lib/tbi/win.c
+++ /dev/null
@@ -1,290 +0,0 @@
-#include <Uefi.h>
-#include <Library/UefiLib.h>
-#include <Library/DebugLib.h>
-#include <Library/ShellLib.h>
-#include <Library/PrintLib.h> // UnicodeVSPrint()
-#include <Library/BaseMemoryLib.h>
-#include <Library/MemoryAllocationLib.h>
-
-#include "screen.h"
-#include "win.h"
-
-#define CHECK_POSITION(win, x, y) \
- if(x < 0 || y < 0 || x >= win->width || y >= win->height) \
- return FALSE
-
-#define SET_WINDOW_CHAR(win, col, row, character, attrib) \
- win->text[row][col] = character; \
- win->attr[row][col] = attrib
-
-#define SET_WINDOW_CHAR2(win, col, row, character) \
- SET_WINDOW_CHAR(win, col, row, character, win->cur_attr)
-
-struct window *newwin(struct screen *s,
- INT32 ncols, INT32 nlines, INT32 begin_x, INT32 begin_y)
-{
- INTN x, y;
- struct window *win;
-
- ASSERT(s != NULL);
-
- if(ncols <= 0 || nlines <= 0 || begin_x < 0 || begin_y < 0)
- return NULL;
-
- if((begin_x + ncols) > s->columns || (begin_y + nlines) > s->lines)
- return NULL;
-
- win = AllocateZeroPool(sizeof(struct window));
- if(!win)
- return NULL;
-
- win->text = AllocatePool(nlines * sizeof(CHAR16 *));
- if(!win->text) {
- delwin(win);
- return NULL;
- }
-
- win->attr = AllocatePool(nlines * sizeof(INT32 *));
- if(!win->attr) {
- delwin(win);
- return NULL;
- }
-
- win->scr = s;
- win->curx = 0;
- win->cury = 0;
- win->begx = begin_x;
- win->begy = begin_y;
- win->width = ncols;
- win->height = nlines;
- win->cur_attr = s->attr;
-
- for(y = 0; y < nlines; y++) {
- win->text[y] = AllocatePool((ncols + 1) * sizeof(CHAR16));
- win->attr[y] = AllocatePool((ncols + 1) * sizeof(INT32));
- if(!win->text[y] || !win->attr[y]) {
- delwin(win);
- return NULL;
- }
-
- for(x = 0; x < ncols; x++) {
- win->text[y][x] = L' ';
- win->attr[y][x] = win->cur_attr;
- }
- win->text[y][x] = CHAR_NULL;
- win->attr[y][x] = win->cur_attr;
- }
-
- return win;
-}
-
-VOID delwin(struct window *w)
-{
- INTN i;
- ASSERT(w != NULL);
-
- if(w->text) {
- for(i = 0; i < w->height; i++) {
- if(w->text[i])
- FreePool(w->text[i]);
- }
- FreePool(w->text);
- }
-
- if(w->attr) {
- for(i = 0; i < w->height; i++) {
- if(w->attr[i])
- FreePool(w->attr[i]);
- }
- FreePool(w->attr);
- }
-
- FreePool(w);
-}
-
-VOID wattrset(struct window *w, INT32 attr)
-{
- ASSERT(w != NULL);
-
- w->cur_attr = attr;
-}
-
-VOID wattroff(struct window *w)
-{
- ASSERT(w != NULL);
-
- w->cur_attr = w->scr->attr;
-}
-
-BOOLEAN wmove(struct window *w, INT32 x, INT32 y)
-{
- ASSERT(w != NULL);
- CHECK_POSITION(w, x, y);
-
- w->curx = x;
- w->cury = y;
- return TRUE;
-}
-
-BOOLEAN wborder(struct window *w, CHAR16 ls, CHAR16 rs, CHAR16 ts,
- CHAR16 bs, CHAR16 tl, CHAR16 tr, CHAR16 bl, CHAR16 br)
-{
- INT32 i, endx, endy;
- ASSERT(w != NULL);
-
- endx = w->width - 1;
- endy = w->height - 1;
-
- for(i = 0; i <= endx; i++) {
- SET_WINDOW_CHAR2(w, i, 0, ts);
- SET_WINDOW_CHAR2(w, i, endy, bs);
- }
-
- for(i = 0; i <= endy; i++) {
- SET_WINDOW_CHAR2(w, 0, i, ls);
- SET_WINDOW_CHAR2(w, endx, i, rs);
- }
-
- SET_WINDOW_CHAR2(w, 0, 0, tl);
- SET_WINDOW_CHAR2(w, endx, 0, tr);
- SET_WINDOW_CHAR2(w, 0, endy, bl);
- SET_WINDOW_CHAR2(w, endx, endy, br);
- return TRUE;
-}
-
-BOOLEAN mvwhline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 n)
-{
- UINTN i, length;
- ASSERT(w != NULL);
- CHECK_POSITION(w, x, y);
-
- length = w->width - x;
- if(length > n)
- length = n;
-
- length += x;
- for(i = x; i < length; i++) {
- w->text[y][i] = ch;
- w->attr[y][i] = w->cur_attr;
- }
- return TRUE;
-}
-
-BOOLEAN mvwvline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 n)
-{
- UINTN i, length;
- ASSERT(w != NULL);
- CHECK_POSITION(w, x, y);
-
- length = w->height - y;
- if(length > n)
- length = n;
-
- length += y;
- for(i = y; i < length; i++) {
- w->text[i][x] = ch;
- w->attr[i][x] = w->cur_attr;
- }
- return TRUE;
-}
-
-UINTN EFIAPI wprintf(struct window *w, CONST CHAR16 *fmt, ...)
-{
- VA_LIST arg;
- UINTN retval;
-
- VA_START(arg, fmt);
- retval = wvprintf(w, fmt, arg);
- VA_END(arg);
- return retval;
-}
-
-UINTN EFIAPI mvwprintf(struct window *w, INT32 x, INT32 y, CONST CHAR16 *fmt, ...)
-{
- VA_LIST arg;
- UINTN retval;
- BOOLEAN moved;
-
- moved = wmove(w, x, y);
- if(moved == FALSE)
- return 0;
-
- VA_START(arg, fmt);
- retval = wvprintf(w, fmt, arg);
- VA_END(arg);
- return retval;
-}
-
-UINTN EFIAPI wvprintf(struct window *w, CONST CHAR16 *fmt, VA_LIST args)
-{
- INT32 x, y;
- UINTN i, length, max_length, walker_size;
- CHAR16 *fmt_walker;
-
- ASSERT(w != NULL);
- ASSERT(fmt != NULL);
-
- x = w->curx;
- y = w->cury;
-
- walker_size = w->width * sizeof(CHAR16);
- fmt_walker = AllocateZeroPool(walker_size);
- if(!fmt_walker)
- return 0;
-
- UnicodeVSPrint(fmt_walker, walker_size, fmt, args);
- length = StrLen(fmt_walker);
- max_length = w->width - x;
- if(length >= max_length) {
- length = max_length;
-
- w->curx = 0;
- if(++w->cury >= w->height)
- w->cury = 0;
- }
- else
- w->curx += length;
-
- CopyMem(w->text[y] + x, fmt_walker, length * 2); // multiply by 2 because CHAR16
- for(i = 0; i < length; i++)
- w->attr[y][x + i] = w->cur_attr;
- FreePool(fmt_walker);
- return length;
-}
-
-VOID wrefresh(struct window *w)
-{
- UINTN x, y;
- INT32 attributes;
- CHAR16 tmp_ch, *print_ptr;
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *stdout;
-
- ASSERT(w != NULL);
-
- attributes = w->attr[0][0];
- stdout = w->scr->stdout;
- stdout->SetAttribute(stdout, attributes);
-
- for(y = 0; y < w->height; y++) {
- stdout->SetCursorPosition(stdout, w->begx, w->begy + y);
- print_ptr = w->text[y];
-
- for(x = 0; x <= (w->width); x++) {
- if(w->text[y][x] == CHAR_NULL || attributes != w->attr[y][x])
- {
- tmp_ch = w->text[y][x];
- w->text[y][x] = CHAR_NULL;
- stdout->OutputString(stdout, print_ptr);
- w->text[y][x] = tmp_ch;
-
- print_ptr = &(w->text[y][x]);
- if(w->text[y][x] != CHAR_NULL) {
- attributes = w->attr[y][x];
- stdout->SetAttribute(stdout, attributes);
- }
- }
- }
- }
-
- stdout->SetAttribute(stdout, w->scr->attr);
-}
diff --git a/lib/tbi/win.h b/lib/tbi/win.h
deleted file mode 100644
index 76be2d8..0000000
--- a/lib/tbi/win.h
+++ /dev/null
@@ -1,186 +0,0 @@
-#ifndef UFM_TBI_WINDOW_H
-#define UFM_TBI_WINDOW_H
-
-/*
- Window - rectangular area of the screen with which you can work as a separate
- screen (display text, clear, etc). The output should be carried out only in
- the specified rectangular area of the screen
-
- NOTE: SimpleTextOut.h has defined box-drawing character ("BOXDRAW_*", for
- example BOXDRAW_VERTICAL)
-*/
-
-#include <Uefi.h>
-
-struct screen;
-
-struct window {
- struct screen *scr; // parent screen
-
- INT32 curx, cury; // current cursor position
- INT32 begx, begy; // screen coords of upper left corner
- INT32 width, height; // window size
-
- CHAR16 **text; // the actual text of whole screen
- /* ATTRIBUTES:
- Bits 0..3 are the foreground color.
- Bits 4..6 are the background color.
- ALl other bits are undefined and must be zero */
- INT32 **attr;
-
- INT32 cur_attr;
-};
-
-/*
- * Creates a window with given parameters
- *
- * s: the information of the screen
- * ncols: the number of columns
- * nlines: the number of lines
- * begin_x: the column coordinate (starts from 0) of upper left corner of the window
- * begin_y: the line coordinate (starts from 0) of upper left corner of the window
- *
- * return: A pointer to the allocated structure or NULL if allocation fails
-*/
-struct window *newwin(struct screen *s,
- INT32 ncols, INT32 nlines, INT32 begin_x, INT32 begin_y);
-
-/*
- * Deletes the window, frees the structure
- *
- * w: the window on which to operate
- *
- * return: VOID
-*/
-VOID delwin(struct window *w);
-
-/*
- * Sets the current attributes of the given window
- *
- * w: the window on which to operate
- * attr: the attributes
- *
- * return: VOID
-*/
-VOID wattrset(struct window *w, INT32 attr);
-
-/*
- * Resets the current attributes of the given window to standard screen
- * attributes
- *
- * w: the window on which to operate
- *
- * return: VOID
-*/
-VOID wattroff(struct window *w);
-
-/*
- * Moves cursor position to specified coordinates
- *
- * w: the window on which to operate
- * x: the X(column) coordinate
- * y: the Y(row) coordinate
- *
- * return: FALSE upon failure and TRUE upon successful completion
-*/
-BOOLEAN wmove(struct window *w, INT32 x, INT32 y);
-
-/*
- * Draws a box around the edges of a window
- *
- * w: the window on which to operate
- * ls: the left side character
- * rs: the right side character
- * ts: the top side character
- * bs: the bottom side character
- * tl: the top left corner character
- * tr: the top right corner character
- * bl: the bottom left corner character
- * br: the bottom right corner character
- *
- * return: FALSE upon failure and TRUE upon successful completion
-*/
-BOOLEAN wborder(struct window *w, CHAR16 ls, CHAR16 rs, CHAR16 ts,
- CHAR16 bs, CHAR16 tl, CHAR16 tr, CHAR16 bl, CHAR16 br);
-
-/*
- * Moves to specified coordinates, draws a horizontal line using ch
- * starting at (x, y) in the window. The current cursor position is
- * not changed.
- *
- * w: the window on which to operate
- * x: the X(column) coordinate for the start of the line
- * y: the Y(row) coordinate for the start of the line
- * ch: the character used to draw the line
- * n: the maximum number of chars in the line
- *
- * return: FALSE upon failure and TRUE upon successful completion
-*/
-BOOLEAN mvwhline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 n);
-
-/*
- * Moves to specified coordinates, draws a vertical line using ch
- * starting at (x, y) in the window. The current cursor position is
- * not changed.
- *
- * w: the window on which to operate
- * x: the X(column) coordinate for the start of the line
- * y: the Y(row) coordinate for the start of the line
- * ch: the character used to draw the line
- * n: the maximum number of chars in the line
- *
- * return: FALSE upon failure and TRUE upon successful completion
-*/
-BOOLEAN mvwvline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 n);
-
-/*
- * Prints formatted output on the cursor coordinates
- *
- * w: the window on which to operate
- * fmt: a null-terminated unicode format string
- * ...: variable arguments list whose contents are accessed based on the
- fmt string specified by FormatString
- *
- * return: the number of unicode chars in the produced output buffer
- not including the null-terminator
-*/
-UINTN EFIAPI wprintf(struct window *w, CONST CHAR16 *fmt, ...);
-
-/*
- * Moves to specified coordinates, prints formatted output
- *
- * w: the window on which to operate
- * x: the X(column) coordinate to move
- * y: the Y(row) coordinate to move
- * fmt: a null-terminated unicode format string
- * ...: variable arguments list whose contents are accessed based on the
- fmt string specified by FormatString
- *
- * return: the number of unicode chars in the produced output buffer
- not including the null-terminator
-*/
-UINTN EFIAPI mvwprintf(struct window *w, INT32 x, INT32 y, CONST CHAR16 *fmt, ...);
-
-/*
- * Prints output based on a null-terminated unicode format string
- and a arguments list
- *
- * w: the window on which to operate
- * fmt: a null-terminated unicode format string
- * arg: the variable argument list
- *
- * return: the number of unicode chars in the produced output buffer
- not including the null-terminator
-*/
-UINTN EFIAPI wvprintf(struct window *w, CONST CHAR16 *fmt, VA_LIST args);
-
-/*
- * Does the output of window to the terminal
- *
- * w: the window on which to operate
- *
- * return: VOID
-*/
-VOID wrefresh(struct window *w);
-
-#endif /* UFM_TBI_WINDOW_H */