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 extern ULONG UiScreenWidth
; // Screen Width
23 extern ULONG UiScreenHeight
; // Screen Height
25 extern UCHAR UiStatusBarFgColor
; // Status bar foreground color
26 extern UCHAR UiStatusBarBgColor
; // Status bar background color
27 extern UCHAR UiBackdropFgColor
; // Backdrop foreground color
28 extern UCHAR UiBackdropBgColor
; // Backdrop background color
29 extern UCHAR UiBackdropFillStyle
; // Backdrop fill style
30 extern UCHAR UiTitleBoxFgColor
; // Title box foreground color
31 extern UCHAR UiTitleBoxBgColor
; // Title box background color
32 extern UCHAR UiMessageBoxFgColor
; // Message box foreground color
33 extern UCHAR UiMessageBoxBgColor
; // Message box background color
34 extern UCHAR UiMenuFgColor
; // Menu foreground color
35 extern UCHAR UiMenuBgColor
; // Menu background color
36 extern UCHAR UiTextColor
; // Normal text color
37 extern UCHAR UiSelectedTextColor
; // Selected text color
38 extern UCHAR UiSelectedTextBgColor
; // Selected text background color
39 extern UCHAR UiEditBoxTextColor
; // Edit box text color
40 extern UCHAR UiEditBoxBgColor
; // Edit box text background color
42 extern CHAR UiTitleBoxTitleText
[260]; // Title box's title text
44 extern BOOLEAN UiUseSpecialEffects
; // Tells us if we should use fade effects
45 extern BOOLEAN UiCenterMenu
;
46 extern BOOLEAN UiMenuBox
;
47 extern CHAR UiTimeText
[];
48 extern BOOLEAN UiDrawTime
;
50 extern const CHAR UiMonthNames
[12][15];
52 ///////////////////////////////////////////////////////////////////////////////////////
54 // User Interface Functions
56 ///////////////////////////////////////////////////////////////////////////////////////
57 BOOLEAN
UiInitialize(BOOLEAN ShowGui
); // Initialize User-Interface
58 BOOLEAN
SetupUiInitialize(VOID
); // Initialize User-Interface
59 VOID
UiUnInitialize(PCSTR BootText
); // Un-initialize User-Interface
60 VOID
UiDrawBackdrop(VOID
); // Fills the entire screen with a backdrop
61 VOID
UiFillArea(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, CHAR FillChar
, UCHAR Attr
/* Color Attributes */); // Fills the area specified with FillChar and Attr
62 VOID
UiDrawShadow(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
); // Draws a shadow on the bottom and right sides of the area specified
63 VOID
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 VOID
UiDrawText(ULONG X
, ULONG Y
, PCSTR Text
, UCHAR Attr
); // Draws text at coordinates specified
65 VOID
UiDrawCenteredText(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, PCSTR TextString
, UCHAR Attr
); // Draws centered text at the coordinates specified and clips the edges
66 VOID
UiDrawStatusText(PCSTR StatusText
); // Draws text at the very bottom line on the screen
67 VOID
UiUpdateDateTime(VOID
); // Updates the date and time
68 VOID
UiInfoBox(PCSTR MessageText
); // Displays a info box on the screen
69 VOID
UiMessageBox(PCSTR MessageText
); // Displays a message box on the screen with an ok button
70 VOID
UiMessageBoxCritical(PCSTR MessageText
); // Displays a message box on the screen with an ok button using no system resources
71 VOID
UiDrawProgressBarCenter(ULONG Position
, ULONG Range
, PCHAR ProgressText
); // Draws the progress bar showing nPos percent filled
72 VOID
UiDrawProgressBar(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, ULONG Position
, ULONG Range
, PCHAR ProgressText
); // Draws the progress bar showing nPos percent filled
73 VOID
UiShowMessageBoxesInSection(PCSTR SectionName
); // Displays all the message boxes in a given section
74 VOID
UiEscapeString(PCHAR String
); // Processes a string and changes all occurances of "\n" to '\n'
75 BOOLEAN
UiEditBox(PCSTR MessageText
, PCHAR EditTextBuffer
, ULONG Length
);
77 UCHAR
UiTextToColor(PCSTR ColorText
); // Converts the text color into it's equivalent color value
78 UCHAR
UiTextToFillStyle(PCSTR FillStyleText
); // Converts the text fill into it's equivalent fill value
80 VOID
UiTruncateStringEllipsis(PCHAR StringText
, ULONG MaxChars
); // Truncates a string to MaxChars by adding an ellipsis on the end '...'
82 VOID
UiFadeInBackdrop(VOID
); // Draws the backdrop and fades the screen in
83 VOID
UiFadeOut(VOID
); // Fades the screen out
85 ///////////////////////////////////////////////////////////////////////////////////////
89 ///////////////////////////////////////////////////////////////////////////////////////
91 struct tagUI_MENU_INFO
;
92 typedef struct tagUI_MENU_INFO UI_MENU_INFO
, *PUI_MENU_INFO
;
94 typedef BOOLEAN (*UiMenuKeyPressFilterCallback
)(ULONG KeyPress
);
96 BOOLEAN
UiDisplayMenu(PCSTR MenuItemList
[], ULONG MenuItemCount
, ULONG DefaultMenuItem
, LONG MenuTimeOut
, ULONG
* SelectedMenuItem
, BOOLEAN CanEscape
, UiMenuKeyPressFilterCallback KeyPressFilter
);
98 ///////////////////////////////////////////////////////////////////////////////////////
102 ///////////////////////////////////////////////////////////////////////////////////////
103 typedef struct tagUIVTBL
105 BOOLEAN (*Initialize
)(VOID
);
106 VOID (*UnInitialize
)(VOID
);
108 VOID (*DrawBackdrop
)(VOID
);
109 VOID (*FillArea
)(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, CHAR FillChar
, UCHAR Attr
);
110 VOID (*DrawShadow
)(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
);
111 VOID (*DrawBox
)(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, UCHAR VertStyle
, UCHAR HorzStyle
, BOOLEAN Fill
, BOOLEAN Shadow
, UCHAR Attr
);
112 VOID (*DrawText
)(ULONG X
, ULONG Y
, PCSTR Text
, UCHAR Attr
);
113 VOID (*DrawCenteredText
)(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, PCSTR TextString
, UCHAR Attr
);
114 VOID (*DrawStatusText
)(PCSTR StatusText
);
115 VOID (*UpdateDateTime
)(VOID
);
116 VOID (*MessageBox
)(PCSTR MessageText
);
117 VOID (*MessageBoxCritical
)(PCSTR MessageText
);
118 VOID (*DrawProgressBarCenter
)(ULONG Position
, ULONG Range
, PCHAR ProgressText
);
119 VOID (*DrawProgressBar
)(ULONG Left
, ULONG Top
, ULONG Right
, ULONG Bottom
, ULONG Position
, ULONG Range
, PCHAR ProgressText
);
120 BOOLEAN (*EditBox
)(PCSTR MessageText
, PCHAR EditTextBuffer
, ULONG Length
);
121 UCHAR (*TextToColor
)(PCSTR ColorText
);
122 UCHAR (*TextToFillStyle
)(PCSTR FillStyleText
);
123 VOID (*FadeInBackdrop
)(VOID
);
124 VOID (*FadeOut
)(VOID
);
126 BOOLEAN (*DisplayMenu
)(PCSTR MenuItemList
[], ULONG MenuItemCount
, ULONG DefaultMenuItem
, LONG MenuTimeOut
, ULONG
* SelectedMenuItem
, BOOLEAN CanEscape
, UiMenuKeyPressFilterCallback KeyPressFilter
);
127 VOID (*DrawMenu
)(PUI_MENU_INFO MenuInfo
);
130 VOID
UiInit(const char *CmdLine
);
132 extern UIVTBL UiVtbl
;
135 * Combines the foreground and background colors into a single attribute byte
137 #define ATTR(cFore, cBack) ((cBack << 4)|cFore)
140 * Fill styles for DrawBackdrop()
142 #define LIGHT_FILL 0xB0
143 #define MEDIUM_FILL 0xB1
144 #define DARK_FILL 0xB2
149 #define COLOR_BLACK 0
151 #define COLOR_GREEN 2
154 #define COLOR_MAGENTA 5
155 #define COLOR_BROWN 6
158 #define COLOR_DARKGRAY 8
159 #define COLOR_LIGHTBLUE 9
160 #define COLOR_LIGHTGREEN 10
161 #define COLOR_LIGHTCYAN 11
162 #define COLOR_LIGHTRED 12
163 #define COLOR_LIGHTMAGENTA 13
164 #define COLOR_YELLOW 14
165 #define COLOR_WHITE 15
167 /* Add COLOR_BLINK to a background to cause blinking */
168 //#define COLOR_BLINK 8
171 * Defines for IBM box drawing characters
173 #define HORZ (0xc4) /* Single horizontal line */
174 #define D_HORZ (0xcd) /* Double horizontal line.*/
175 #define VERT (0xb3) /* Single vertical line */
176 #define D_VERT (0xba) /* Double vertical line. */