ReactOS  0.4.14-dev-115-g4576127
minitui.c
Go to the documentation of this file.
1 /*
2  * COPYRIGHT: See COPYING in the top level directory
3  * PROJECT: FreeLoader
4  * FILE: boot/freeldr/freeldr/ui/minitui.c
5  * PURPOSE: Mini Text UI interface
6  * PROGRAMMERS: Brian Palmer <brianp@sginet.com>
7  * Hervé Poussineau
8  */
9 #ifndef _M_ARM
10 #include <freeldr.h>
11 
13 {
14  //
15  // Fill in a black background
16  //
17  TuiFillArea(0, 0, UiScreenWidth - 1, UiScreenHeight - 1, 0, 0);
18 
19  //
20  // Update the screen buffer
21  //
23 }
24 
26 {
27  //
28  // Minimal UI doesn't have a status bar
29  //
30 }
31 
33 {
34  ULONG Left, Top, Right, Bottom;
35  ULONG Width = 50; // Allow for 50 "bars"
36  ULONG Height = 2;
37 
38  Width = 80;
39  Left = 0;
40  Right = Left + Width;
41  Top = UiScreenHeight - Height - 4;
42  Bottom = Top + Height + 1;
43 
44  MiniTuiDrawProgressBar(Left, Top, Right, Bottom, Position, Range, ProgressText);
45 }
46 
48 {
49  ULONG i;
50  ULONG ProgressBarWidth = (Right - Left) - 4;
51 
52  // First make sure the progress bar text fits
53  UiTruncateStringEllipsis(ProgressText, ProgressBarWidth - 4);
54 
55  if (Position > Range)
56  {
57  Position = Range;
58  }
59 
60  //
61  // Draw the "Loading..." text
62  //
63  TuiDrawCenteredText(Left + 2, Top + 1, Right - 2, Top + 1, ProgressText, ATTR(7, 0));
64 
65  // Draw the percent complete
66  for (i=0; i<(Position*ProgressBarWidth)/Range; i++)
67  {
68  TuiDrawText(Left+2+i, Top+2, "\xDB", ATTR(UiTextColor, UiMenuBgColor));
69  }
70 
73 }
74 
75 VOID
77 {
78  ULONG i;
79 
80  //
81  // Draw the backdrop
82  //
84 
85  //
86  // No GUI status bar text, just minimal text. Show the menu header.
87  //
88  if (MenuInfo->MenuHeader)
89  {
90  UiVtbl.DrawText(0,
91  MenuInfo->Top - 2,
92  MenuInfo->MenuHeader,
94  }
95 
96  //
97  // Now tell the user how to choose
98  //
99  UiVtbl.DrawText(0,
100  MenuInfo->Bottom + 1,
101  "Use \x18 and \x19 to move the highlight to your choice.",
103  UiVtbl.DrawText(0,
104  MenuInfo->Bottom + 2,
105  "Press ENTER to choose.",
107 
108  //
109  // And show the menu footer
110  //
111  if (MenuInfo->MenuFooter)
112  {
113  UiVtbl.DrawText(0,
114  UiScreenHeight - 4,
115  MenuInfo->MenuFooter,
117  }
118 
119  //
120  // Draw the menu box
121  //
123 
124  //
125  // Draw each line of the menu
126  //
127  for (i = 0; i < MenuInfo->MenuItemCount; i++)
128  {
130  }
131 
132  //
133  // Display the boot options if needed
134  //
135  if (MenuInfo->ShowBootOptions)
136  {
138  }
139 
141 }
142 
144 {
148  TuiFillArea,
150  TuiDrawBox,
151  TuiDrawText,
152  TuiDrawText2,
160  TuiEditBox,
163  MiniTuiDrawBackdrop, /* no FadeIn */
164  TuiFadeOut,
167 };
168 #endif
signed char * PCHAR
Definition: retypes.h:7
UCHAR TuiTextToColor(PCSTR ColorText)
Definition: tui.c:700
UCHAR UiTextColor
Definition: ui.c:42
VOID TuiMessageBoxCritical(PCSTR MessageText)
Definition: tui.c:562
VOID(* DrawText)(ULONG X, ULONG Y, PCSTR Text, UCHAR Attr)
Definition: ui.h:154
VOID TuiUpdateDateTime(VOID)
Definition: tui.c:428
static COORD Position
Definition: mouse.c:34
VOID TuiMessageBox(PCSTR MessageText)
Definition: tui.c:545
VOID TuiDrawMenuBox(PUI_MENU_INFO MenuInfo)
Definition: tuimenu.c:270
BOOLEAN TuiEditBox(PCSTR MessageText, PCHAR EditTextBuffer, ULONG Length)
Definition: tui.c:815
ULONG UiScreenHeight
Definition: ui.c:29
VOID VideoCopyOffScreenBufferToVRAM(VOID)
Definition: video.c:34
VOID MiniTuiDrawMenu(PUI_MENU_INFO MenuInfo)
Definition: minitui.c:76
VOID TuiDrawMenuItem(PUI_MENU_INFO MenuInfo, ULONG MenuItemNumber)
Definition: tuimenu.c:395
struct tagRange Range
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
UIVTBL UiVtbl
Definition: ui.c:58
VOID TuiDrawShadow(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom)
Definition: tui.c:188
#define ATTR(cFore, cBack)
Definition: ui.h:192
VOID TuiUnInitialize(VOID)
Definition: tui.c:67
UCHAR UiMenuBgColor
Definition: ui.c:41
VOID MiniTuiDrawBackdrop(VOID)
Definition: minitui.c:12
VOID TuiDrawText(ULONG X, ULONG Y, PCSTR Text, UCHAR Attr)
Definition: tui.c:320
BOOLEAN TuiInitialize(VOID)
Definition: tui.c:52
Definition: ui.h:145
Definition: range.c:43
VOID UiDrawBackdrop(VOID)
Definition: ui.c:214
menu info structure
Definition: window.h:275
UCHAR TuiTextToFillStyle(PCSTR FillStyleText)
Definition: tui.c:736
const UIVTBL MiniTuiVtbl
Definition: minitui.c:143
VOID TuiFadeOut(VOID)
Definition: tui.c:785
BOOLEAN TuiDisplayMenu(IN PCSTR MenuHeader, IN PCSTR MenuFooter OPTIONAL, IN BOOLEAN ShowBootOptions, IN PCSTR MenuItemList[], IN ULONG MenuItemCount, IN ULONG DefaultMenuItem, IN LONG MenuTimeOut, OUT PULONG SelectedMenuItem, IN BOOLEAN CanEscape, IN UiMenuKeyPressFilterCallback KeyPressFilter OPTIONAL, IN PVOID Context OPTIONAL)
Definition: tuimenu.c:17
VOID UiTruncateStringEllipsis(PCHAR StringText, ULONG MaxChars)
Definition: ui.c:455
static LPHIST_ENTRY Bottom
Definition: history.c:54
VOID TuiDrawCenteredText(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, PCSTR TextString, UCHAR Attr)
Definition: tui.c:352
VOID TuiDrawText2(ULONG X, ULONG Y, ULONG MaxNumChars, PCSTR Text, UCHAR Attr)
Definition: tui.c:339
VOID MiniTuiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, ULONG Position, ULONG Range, PCHAR ProgressText)
Definition: minitui.c:47
VOID TuiFillArea(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, CHAR FillChar, UCHAR Attr)
Definition: tui.c:153
VOID DisplayBootTimeOptions(VOID)
Definition: options.c:181
unsigned int ULONG
Definition: retypes.h:1
VOID TuiDrawBox(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, UCHAR VertStyle, UCHAR HorzStyle, BOOLEAN Fill, BOOLEAN Shadow, UCHAR Attr)
Definition: tui.c:248
UCHAR UiMenuFgColor
Definition: ui.c:40
const char * PCSTR
Definition: typedefs.h:51
VOID MiniTuiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText)
Definition: minitui.c:32
ULONG UiScreenWidth
Definition: ui.c:28
static LPHIST_ENTRY Top
Definition: history.c:53
VOID MiniTuiDrawStatusText(PCSTR StatusText)
Definition: minitui.c:25