3 * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
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.
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.
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.
22 #define TUI_SCREEN_MEM 0xB8000
23 #define TUI_TITLE_BOX_CHAR_HEIGHT 5
25 ///////////////////////////////////////////////////////////////////////////////////////
27 // Textual User Interface Functions
29 ///////////////////////////////////////////////////////////////////////////////////////
30 BOOLEAN
TuiInitialize(VOID
); // Initialize User-Interface
31 VOID
TuiUnInitialize(VOID
); // Un-initialize User-Interface
33 VOID
TuiDrawBackdrop(VOID
); // Fills the entire screen with a backdrop
34 VOID
TuiFillArea(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, CHAR FillChar
, UCHAR Attr
/* Color Attributes */); // Fills the area specified with FillChar and Attr
35 VOID
TuiDrawShadow(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
); // Draws a shadow on the bottom and right sides of the area specified
36 VOID
TuiDrawBox(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
37 VOID
TuiDrawText(ULONG X
, ULONG Y
, PCSTR Text
, UCHAR Attr
); // Draws text at coordinates specified
38 VOID
TuiDrawText2(ULONG X
, ULONG Y
, ULONG MaxNumChars
, PCSTR Text
, UCHAR Attr
); // Draws text at coordinates specified
39 VOID
TuiDrawCenteredText(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, PCSTR TextString
, UCHAR Attr
); // Draws centered text at the coordinates specified and clips the edges
40 VOID
TuiDrawStatusText(PCSTR StatusText
); // Draws text at the very bottom line on the screen
41 VOID
TuiUpdateDateTime(VOID
); // Updates the date and time
42 VOID
TuiSaveScreen(PUCHAR Buffer
); // Saves the screen so that it can be restored later
43 VOID
TuiRestoreScreen(PUCHAR Buffer
); // Restores the screen from a previous save
44 VOID
TuiMessageBox(PCSTR MessageText
); // Displays a message box on the screen with an ok button
45 VOID
TuiMessageBoxCritical(PCSTR MessageText
); // Displays a message box on the screen with an ok button using no system resources
46 VOID
TuiDrawProgressBarCenter(ULONG Position
, ULONG Range
, PCHAR ProgressText
); // Draws the progress bar showing nPos percent filled
47 VOID
TuiDrawProgressBar(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, ULONG Position
, ULONG Range
, PCHAR ProgressText
); // Draws the progress bar showing nPos percent filled
48 BOOLEAN
TuiEditBox(PCSTR MessageText
, PCHAR EditTextBuffer
, ULONG Length
);
49 int TuiPrintf(const char *format
, ... );
50 UCHAR
TuiTextToColor(PCSTR ColorText
); // Converts the text color into it's equivalent color value
51 UCHAR
TuiTextToFillStyle(PCSTR FillStyleText
); // Converts the text fill into it's equivalent fill value
53 VOID
TuiFadeInBackdrop(VOID
); // Draws the backdrop and fades the screen in
54 VOID
TuiFadeOut(VOID
); // Fades the screen out
56 ///////////////////////////////////////////////////////////////////////////////////////
60 ///////////////////////////////////////////////////////////////////////////////////////
62 VOID NTAPI
TuiCalcMenuBoxSize(PUI_MENU_INFO MenuInfo
);
63 VOID
TuiDrawMenu(PUI_MENU_INFO MenuInfo
);
64 VOID NTAPI
TuiDrawMenuBox(PUI_MENU_INFO MenuInfo
);
65 VOID NTAPI
TuiDrawMenuItem(PUI_MENU_INFO MenuInfo
, ULONG MenuItemNumber
);
66 ULONG NTAPI
TuiProcessMenuKeyboardEvent(PUI_MENU_INFO MenuInfo
, UiMenuKeyPressFilterCallback KeyPressFilter
);
67 BOOLEAN
TuiDisplayMenu(PCSTR MenuHeader
, PCSTR MenuFooter
, BOOLEAN ShowBootOptions
, PCSTR MenuItemList
[], ULONG MenuItemCount
, ULONG DefaultMenuItem
, LONG MenuTimeOut
, ULONG
* SelectedMenuItem
, BOOLEAN CanEscape
, UiMenuKeyPressFilterCallback KeyPressFilter
);
69 /* Definitions for corners, depending on HORIZ and VERT */
71 #define UR (0xbf) /* HORZ and VERT */
76 #define D_UR (0xbb) /* D_HORZ and D_VERT */
81 #define HD_UR (0xb8) /* D_HORZ and VERT */
86 #define VD_UR (0xb7) /* HORZ and D_VERT */
90 extern const UIVTBL TuiVtbl
;