ReactOS 0.4.15-dev-6042-g2eb6700
ui.h
Go to the documentation of this file.
1/*
2 * FreeLoader
3 * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20#pragma once
21
22extern ULONG UiScreenWidth; // Screen Width
23extern ULONG UiScreenHeight; // Screen Height
24
25extern UCHAR UiStatusBarFgColor; // Status bar foreground color
26extern UCHAR UiStatusBarBgColor; // Status bar background color
27extern UCHAR UiBackdropFgColor; // Backdrop foreground color
28extern UCHAR UiBackdropBgColor; // Backdrop background color
29extern UCHAR UiBackdropFillStyle; // Backdrop fill style
30extern UCHAR UiTitleBoxFgColor; // Title box foreground color
31extern UCHAR UiTitleBoxBgColor; // Title box background color
32extern UCHAR UiMessageBoxFgColor; // Message box foreground color
33extern UCHAR UiMessageBoxBgColor; // Message box background color
34extern UCHAR UiMenuFgColor; // Menu foreground color
35extern UCHAR UiMenuBgColor; // Menu background color
36extern UCHAR UiTextColor; // Normal text color
37extern UCHAR UiSelectedTextColor; // Selected text color
38extern UCHAR UiSelectedTextBgColor; // Selected text background color
39extern UCHAR UiEditBoxTextColor; // Edit box text color
40extern UCHAR UiEditBoxBgColor; // Edit box text background color
41
42extern BOOLEAN UiShowTime; // Whether to draw the time
43extern BOOLEAN UiMenuBox; // Whether to draw a box around the menu
44extern BOOLEAN UiCenterMenu; // Whether to use a centered or left-aligned menu
45extern BOOLEAN UiUseSpecialEffects; // Whether to use fade effects
46
47extern CHAR UiTitleBoxTitleText[260]; // Title box's title text
48extern CHAR UiTimeText[260];
49
50extern const PCSTR UiMonthNames[12];
51
53//
54// User Interface Functions
55//
57
58BOOLEAN UiInitialize(BOOLEAN ShowUi); // Initialize User-Interface
59VOID UiUnInitialize(PCSTR BootText); // Un-initialize User-Interface
60VOID UiDrawBackdrop(VOID); // Fills the entire screen with a backdrop
61VOID UiFillArea(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, CHAR FillChar, UCHAR Attr /* Color Attributes */); // Fills the area specified with FillChar and Attr
62VOID UiDrawShadow(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom); // Draws a shadow on the bottom and right sides of the area specified
63VOID UiDrawBox(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, UCHAR VertStyle, UCHAR HorzStyle, BOOLEAN Fill, BOOLEAN Shadow, UCHAR Attr); // Draws a box around the area specified
64
65/* Draws text at coordinates specified */
66VOID
68 _In_ ULONG X,
69 _In_ ULONG Y,
71 _In_ UCHAR Attr);
72
73/* Draws text at coordinates specified */
74VOID
76 _In_ ULONG X,
77 _In_ ULONG Y,
78 _In_opt_ ULONG MaxNumChars,
79 _In_reads_or_z_(MaxNumChars) PCSTR Text,
80 _In_ UCHAR Attr);
81
82/* Draws centered text at the coordinates specified and clips the edges */
83VOID
85 _In_ ULONG Left,
87 _In_ ULONG Right,
89 _In_ PCSTR TextString,
90 _In_ UCHAR Attr);
91
92VOID UiDrawStatusText(PCSTR StatusText); // Draws text at the very bottom line on the screen
93VOID UiUpdateDateTime(VOID); // Updates the date and time
94VOID UiInfoBox(PCSTR MessageText); // Displays a info box on the screen
95VOID UiMessageBox(PCSTR Format, ...); // Displays a message box on the screen with an ok button
96VOID UiMessageBoxCritical(PCSTR MessageText); // Displays a message box on the screen with an ok button using no system resources
97
98
99/* Loading Progress-Bar Functions ********************************************/
100
101/*
102 * Loading progress bar, based on the one from NTOS Inbv.
103 * Supports progress within sub-ranges, used when loading
104 * with an unknown number of steps.
105 */
106typedef struct _UI_PROGRESS_BAR
107{
108 // UI_PROGRESS_STATE
109 struct
110 {
112 // ULONG Ceiling;
115
116 // BT_PROGRESS_INDICATOR
117 struct
118 {
123
128 // ULONG Width; // == Right - Left + 1;
131
133
134VOID
136 _In_ ULONG Left,
137 _In_ ULONG Top,
138 _In_ ULONG Right,
140 _In_ PCSTR ProgressText);
141
142/* Indicate loading progress without any specific number of steps */
143VOID
145
146/* Set a progress loading percentage range */
147VOID
149 _In_ ULONG Floor,
150 _In_ ULONG Ceiling);
151
152/* Update the loading progress percentage within a selected range */
153VOID
155 _In_ ULONG Percentage,
156 _In_opt_ PCSTR ProgressText);
157
158VOID
160 _In_ PCSTR ProgressText);
161
162/* Draws the progress bar showing nPos percent filled */
163VOID
165 _In_ PCSTR ProgressText);
166
167/* Draws the progress bar showing nPos percent filled */
168VOID
170 _In_ ULONG Left,
171 _In_ ULONG Top,
172 _In_ ULONG Right,
174 _In_ PCSTR ProgressText);
175
176
177// Displays all the message boxes in a given section.
178VOID
180 IN ULONG_PTR SectionId);
181
182VOID
184 IN ULONG Argc,
185 IN PCHAR Argv[]);
186
187BOOLEAN UiEditBox(PCSTR MessageText, PCHAR EditTextBuffer, ULONG Length);
188
189UCHAR UiTextToColor(PCSTR ColorText); // Converts the text color into it's equivalent color value
190UCHAR UiTextToFillStyle(PCSTR FillStyleText); // Converts the text fill into it's equivalent fill value
191
192VOID UiFadeInBackdrop(VOID); // Draws the backdrop and fades the screen in
193VOID UiFadeOut(VOID); // Fades the screen out
194
196//
197// Menu Functions
198//
200
201typedef struct tagUI_MENU_INFO
202{
206
212
218
219typedef
222 IN ULONG KeyPress,
223 IN ULONG SelectedMenuItem,
225
228 IN PCSTR MenuHeader,
229 IN PCSTR MenuFooter OPTIONAL,
230 IN BOOLEAN ShowBootOptions,
231 IN PCSTR MenuItemList[],
232 IN ULONG MenuItemCount,
233 IN ULONG DefaultMenuItem,
234 IN LONG MenuTimeOut,
235 OUT PULONG SelectedMenuItem,
236 IN BOOLEAN CanEscape,
239
241//
242// UI virtual table
243//
245typedef struct tagUIVTBL
246{
249
251 VOID (*FillArea)(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, CHAR FillChar, UCHAR Attr);
253 VOID (*DrawBox)(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, UCHAR VertStyle, UCHAR HorzStyle, BOOLEAN Fill, BOOLEAN Shadow, UCHAR Attr);
255 VOID (*DrawText2)(ULONG X, ULONG Y, ULONG MaxNumChars, PCSTR Text, UCHAR Attr);
256 VOID (*DrawCenteredText)(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, PCSTR TextString, UCHAR Attr);
257 VOID (*DrawStatusText)(PCSTR StatusText);
259 VOID (*MessageBox)(PCSTR MessageText);
261
263 _In_ PCSTR ProgressText);
264
266 _In_ ULONG Left,
267 _In_ ULONG Top,
268 _In_ ULONG Right,
270 _In_ PCSTR ProgressText);
271
273 _In_ PCSTR ProgressText);
274
276 _In_ ULONG SubPercentTimes100);
277
278 BOOLEAN (*EditBox)(PCSTR MessageText, PCHAR EditTextBuffer, ULONG Length);
279 UCHAR (*TextToColor)(PCSTR ColorText);
280 UCHAR (*TextToFillStyle)(PCSTR FillStyleText);
283
285 IN PCSTR MenuHeader,
286 IN PCSTR MenuFooter OPTIONAL,
287 IN BOOLEAN ShowBootOptions,
288 IN PCSTR MenuItemList[],
289 IN ULONG MenuItemCount,
290 IN ULONG DefaultMenuItem,
291 IN LONG MenuTimeOut,
292 OUT PULONG SelectedMenuItem,
293 IN BOOLEAN CanEscape,
296
299
300VOID UiInit(const char *CmdLine);
301
302extern UIVTBL UiVtbl;
303
304/*
305 * Fill styles for DrawBackdrop()
306 */
307#define LIGHT_FILL 0xB0
308#define MEDIUM_FILL 0xB1
309#define DARK_FILL 0xB2
310
311/*
312 * Combines the foreground and background colors into a single attribute byte
313 */
314#define ATTR(cFore, cBack) ((cBack << 4) | cFore)
315
316/*
317 * Screen colors
318 */
319#define COLOR_BLACK 0
320#define COLOR_BLUE 1
321#define COLOR_GREEN 2
322#define COLOR_CYAN 3
323#define COLOR_RED 4
324#define COLOR_MAGENTA 5
325#define COLOR_BROWN 6
326#define COLOR_GRAY 7
327
328#define COLOR_DARKGRAY 8
329#define COLOR_LIGHTBLUE 9
330#define COLOR_LIGHTGREEN 10
331#define COLOR_LIGHTCYAN 11
332#define COLOR_LIGHTRED 12
333#define COLOR_LIGHTMAGENTA 13
334#define COLOR_YELLOW 14
335#define COLOR_WHITE 15
336
337/* Add COLOR_BLINK to a background to cause blinking */
338// #define COLOR_BLINK 8
339
340/*
341 * Defines for IBM box drawing characters
342 */
343#define HORZ 0xC4 // Single horizontal line
344#define D_HORZ 0xCD // Double horizontal line
345#define VERT 0xB3 // Single vertical line
346#define D_VERT 0xBA // Double vertical line
347
348
349/* THEME HEADERS *************************************************************/
350
351// #include <ui/gui.h>
352#include <ui/minitui.h>
353#include <ui/noui.h>
354#include <ui/tui.h>
unsigned char BOOLEAN
#define VOID
Definition: acefi.h:82
static LPHIST_ENTRY Bottom
Definition: history.c:54
static LPHIST_ENTRY Top
Definition: history.c:53
char * Text
Definition: combotst.c:136
#define Y(I)
static const WCHAR CmdLine[]
Definition: install.c:48
void Fill(HDC hdc, LONG x, LONG y, COLORREF color)
Definition: drawing.cpp:109
#define X(b, s)
#define _In_reads_or_z_(size)
Definition: ms_sal.h:325
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
#define BOOLEAN
Definition: pedump.c:73
long LONG
Definition: pedump.c:60
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
menu info structure
Definition: window.h:276
ULONG Top
Definition: ui.h:125
ULONG Bottom
Definition: ui.h:127
struct _UI_PROGRESS_BAR::@174 State
struct _UI_PROGRESS_BAR::@175 Indicator
ULONG Count
Definition: ui.h:119
ULONG Bias
Definition: ui.h:113
ULONG Percentage
Definition: ui.h:121
BOOLEAN Show
Definition: ui.h:129
ULONG Left
Definition: ui.h:124
ULONG Right
Definition: ui.h:126
ULONG Expected
Definition: ui.h:120
ULONG Floor
Definition: ui.h:111
Definition: ui.h:246
VOID(* DrawBackdrop)(VOID)
Definition: ui.h:250
VOID(* FadeInBackdrop)(VOID)
Definition: ui.h:281
VOID(* DrawText)(ULONG X, ULONG Y, PCSTR Text, UCHAR Attr)
Definition: ui.h:254
VOID(* FillArea)(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, CHAR FillChar, UCHAR Attr)
Definition: ui.h:251
VOID(* DrawBox)(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, UCHAR VertStyle, UCHAR HorzStyle, BOOLEAN Fill, BOOLEAN Shadow, UCHAR Attr)
Definition: ui.h:253
VOID(* DrawMenu)(PUI_MENU_INFO MenuInfo)
Definition: ui.h:297
VOID(* DrawStatusText)(PCSTR StatusText)
Definition: ui.h:257
UCHAR(* TextToFillStyle)(PCSTR FillStyleText)
Definition: ui.h:280
VOID(* TickProgressBar)(_In_ ULONG SubPercentTimes100)
Definition: ui.h:275
BOOLEAN(* EditBox)(PCSTR MessageText, PCHAR EditTextBuffer, ULONG Length)
Definition: ui.h:278
VOID(* DrawCenteredText)(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, PCSTR TextString, UCHAR Attr)
Definition: ui.h:256
VOID(* MessageBox)(PCSTR MessageText)
Definition: ui.h:259
BOOLEAN(* Initialize)(VOID)
Definition: ui.h:247
VOID(* DrawProgressBarCenter)(_In_ PCSTR ProgressText)
Definition: ui.h:262
VOID(* UnInitialize)(VOID)
Definition: ui.h:248
VOID(* DrawShadow)(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom)
Definition: ui.h:252
VOID(* DrawProgressBar)(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ PCSTR ProgressText)
Definition: ui.h:265
VOID(* MessageBoxCritical)(PCSTR MessageText)
Definition: ui.h:260
VOID(* DrawText2)(ULONG X, ULONG Y, ULONG MaxNumChars, PCSTR Text, UCHAR Attr)
Definition: ui.h:255
VOID(* SetProgressBarText)(_In_ PCSTR ProgressText)
Definition: ui.h:272
VOID(* FadeOut)(VOID)
Definition: ui.h:282
VOID(* UpdateDateTime)(VOID)
Definition: ui.h:258
UCHAR(* TextToColor)(PCSTR ColorText)
Definition: ui.h:279
BOOLEAN(* DisplayMenu)(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: ui.h:284
PCSTR MenuHeader
Definition: ui.h:203
BOOLEAN ShowBootOptions
Definition: ui.h:205
ULONG Right
Definition: ui.h:215
LONG MenuTimeRemaining
Definition: ui.h:209
ULONG Bottom
Definition: ui.h:216
ULONG SelectedMenuItem
Definition: ui.h:210
ULONG Left
Definition: ui.h:213
PCSTR MenuFooter
Definition: ui.h:204
ULONG MenuItemCount
Definition: ui.h:208
PCSTR * MenuItemList
Definition: ui.h:207
PVOID Context
Definition: ui.h:211
ULONG Top
Definition: ui.h:214
#define OPTIONAL
Definition: typedefs.h:41
uint32_t * PULONG
Definition: typedefs.h:59
const char * PCSTR
Definition: typedefs.h:52
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char * PCHAR
Definition: typedefs.h:51
BOOLEAN UiEditBox(PCSTR MessageText, PCHAR EditTextBuffer, ULONG Length)
Definition: ui.c:629
struct tagUIVTBL * PUIVTBL
VOID UiInfoBox(PCSTR MessageText)
Definition: ui.c:296
VOID UiMessageBoxCritical(PCSTR MessageText)
Definition: ui.c:368
struct _UI_PROGRESS_BAR UI_PROGRESS_BAR
UCHAR UiMessageBoxFgColor
Definition: ui.c:32
UCHAR UiTextToFillStyle(PCSTR FillStyleText)
Definition: ui.c:378
UCHAR UiMessageBoxBgColor
Definition: ui.c:33
UI_PROGRESS_BAR UiProgressBar
Definition: ui.c:62
ULONG UiScreenWidth
Definition: ui.c:54
VOID UiSetProgressBarText(_In_ PCSTR ProgressText)
Definition: ui.c:471
UCHAR UiTextToColor(PCSTR ColorText)
Definition: ui.c:373
UCHAR UiEditBoxTextColor
Definition: ui.c:39
UCHAR UiStatusBarBgColor
Definition: ui.c:26
BOOLEAN UiDisplayMenu(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: ui.c:600
VOID UiDrawText(_In_ ULONG X, _In_ ULONG Y, _In_ PCSTR Text, _In_ UCHAR Attr)
Definition: ui.c:254
BOOLEAN UiUseSpecialEffects
Definition: ui.c:45
BOOLEAN UiCenterMenu
Definition: ui.c:44
VOID UiDrawText2(_In_ ULONG X, _In_ ULONG Y, _In_opt_ ULONG MaxNumChars, _In_reads_or_z_(MaxNumChars) PCSTR Text, _In_ UCHAR Attr)
Definition: ui.c:264
UCHAR UiTitleBoxBgColor
Definition: ui.c:31
VOID UiShowMessageBoxesInArgv(IN ULONG Argc, IN PCHAR Argv[])
Definition: ui.c:563
VOID UiIndicateProgress(VOID)
Definition: ui.c:413
const PCSTR UiMonthNames[12]
Definition: ui.c:50
UCHAR UiTextColor
Definition: ui.c:36
VOID UiShowMessageBoxesInSection(IN ULONG_PTR SectionId)
Definition: ui.c:519
UCHAR UiMenuBgColor
Definition: ui.c:35
struct tagUIVTBL UIVTBL
struct tagUI_MENU_INFO * PUI_MENU_INFO
CHAR UiTimeText[260]
Definition: ui.c:48
VOID UiDrawShadow(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom)
Definition: ui.c:243
BOOLEAN(* UiMenuKeyPressFilterCallback)(IN ULONG KeyPress, IN ULONG SelectedMenuItem, IN PVOID Context OPTIONAL)
Definition: ui.h:221
struct _UI_PROGRESS_BAR * PUI_PROGRESS_BAR
struct tagUI_MENU_INFO UI_MENU_INFO
VOID UiUpdateProgressBar(_In_ ULONG Percentage, _In_opt_ PCSTR ProgressText)
Definition: ui.c:449
CHAR UiTitleBoxTitleText[260]
Definition: ui.c:47
VOID UiFadeOut(VOID)
Definition: ui.c:624
UCHAR UiTitleBoxFgColor
Definition: ui.c:30
UCHAR UiBackdropFgColor
Definition: ui.c:27
BOOLEAN UiShowTime
Definition: ui.c:42
UCHAR UiBackdropFillStyle
Definition: ui.c:29
VOID UiFillArea(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, CHAR FillChar, UCHAR Attr)
Definition: ui.c:238
VOID UiSetProgressBarSubset(_In_ ULONG Floor, _In_ ULONG Ceiling)
Definition: ui.c:434
UCHAR UiBackdropBgColor
Definition: ui.c:28
ULONG UiScreenHeight
Definition: ui.c:55
BOOLEAN UiMenuBox
Definition: ui.c:43
UIVTBL UiVtbl
Definition: ui.c:64
VOID UiUnInitialize(PCSTR BootText)
Definition: ui.c:224
VOID UiDrawBackdrop(VOID)
Definition: ui.c:233
VOID UiDrawProgressBar(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ PCSTR ProgressText)
Definition: ui.c:489
VOID UiDrawProgressBarCenter(_In_ PCSTR ProgressText)
Definition: ui.c:482
VOID UiDrawStatusText(PCSTR StatusText)
Definition: ui.c:286
UCHAR UiStatusBarFgColor
Definition: ui.c:25
VOID UiMessageBox(PCSTR Format,...)
Definition: ui.c:357
VOID UiDrawBox(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, UCHAR VertStyle, UCHAR HorzStyle, BOOLEAN Fill, BOOLEAN Shadow, UCHAR Attr)
Definition: ui.c:248
UCHAR UiSelectedTextColor
Definition: ui.c:37
UCHAR UiSelectedTextBgColor
Definition: ui.c:38
UCHAR UiMenuFgColor
Definition: ui.c:34
BOOLEAN UiInitialize(BOOLEAN ShowUi)
Definition: ui.c:92
VOID UiInitProgressBar(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ PCSTR ProgressText)
Definition: ui.c:384
VOID UiDrawCenteredText(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ PCSTR TextString, _In_ UCHAR Attr)
Definition: ui.c:275
VOID UiInit(const char *CmdLine)
VOID UiUpdateDateTime(VOID)
Definition: ui.c:291
UCHAR UiEditBoxBgColor
Definition: ui.c:40
VOID UiFadeInBackdrop(VOID)
Definition: ui.c:619
unsigned char UCHAR
Definition: xmlstorage.h:181
char CHAR
Definition: xmlstorage.h:175