diff options
Diffstat (limited to 'Library/UefiShellUfmCommandLib/tbi')
-rw-r--r-- | Library/UefiShellUfmCommandLib/tbi/win.c | 30 | ||||
-rw-r--r-- | Library/UefiShellUfmCommandLib/tbi/win.h | 26 |
2 files changed, 32 insertions, 24 deletions
diff --git a/Library/UefiShellUfmCommandLib/tbi/win.c b/Library/UefiShellUfmCommandLib/tbi/win.c index 5b3dd81..bada79e 100644 --- a/Library/UefiShellUfmCommandLib/tbi/win.c +++ b/Library/UefiShellUfmCommandLib/tbi/win.c @@ -176,36 +176,42 @@ BOOLEAN wborder(struct window *w, CHAR16 ls, CHAR16 rs, CHAR16 ts, return TRUE; } -BOOLEAN mvwhline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 n) +BOOLEAN wvline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 attr, UINTN n) { UINTN i, length; ASSERT(w != NULL); CHECK_POSITION(w, x, y); - length = w->width - x; - if(length > n) + length = w->height - y; + if(n != 0 && length > n) length = n; - length += x; - for(i = x; i < length; i++) { - SET_WINDOW_CHAR2(w, i, y, ch); + length += y; + for(i = y; i < length; i++) { + if(ch != 0) + w->text[i][x] = ch; + if(attr != -1) + w->attr[i][x] = attr; } return TRUE; } -BOOLEAN mvwvline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 n) +BOOLEAN whline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 attr, UINTN n) { UINTN i, length; ASSERT(w != NULL); CHECK_POSITION(w, x, y); - length = w->height - y; - if(length > n) + length = w->width - x; + if(n != 0 && length > n) length = n; - length += y; - for(i = y; i < length; i++) { - SET_WINDOW_CHAR2(w, x, i, ch); + length += x; + for(i = x; i < length; i++) { + if(ch != 0) + w->text[y][i] = ch; + if(attr != -1) + w->attr[y][i] = attr; } return TRUE; } diff --git a/Library/UefiShellUfmCommandLib/tbi/win.h b/Library/UefiShellUfmCommandLib/tbi/win.h index 0dfe41b..a5aacce 100644 --- a/Library/UefiShellUfmCommandLib/tbi/win.h +++ b/Library/UefiShellUfmCommandLib/tbi/win.h @@ -126,34 +126,36 @@ 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. + * Draws a vertical line using ch and attr 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 + * ch: the character used to draw the line. If 0, then chars won't changed + * attr: the attributes used to draw the line. If -1, then attrs won't changed + * n: the maximum number of chars to draw. if 0, then the number of chars to + the end of the line * * return: FALSE upon failure and TRUE upon successful completion */ -BOOLEAN mvwhline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 n); +BOOLEAN wvline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 attr, UINTN 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. + * Draws a horizontal line using ch and attr 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 + * ch: the character used to draw the line. If 0, then chars won't changed + * attr: the attributes used to draw the line. If -1, then attrs won't changed + * n: the maximum number of chars to draw. if 0, then the number of chars to + the end of the line * * return: FALSE upon failure and TRUE upon successful completion */ -BOOLEAN mvwvline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 n); +BOOLEAN whline(struct window *w, INT32 x, INT32 y, CHAR16 ch, INT32 attr, UINTN n); /* * Prints formatted output on the cursor coordinates |