--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ Ui.h \r
+\r
+Abstract:\r
+\r
+ Head file UI\r
+\r
+Revision History\r
+\r
+--*/\r
+\r
+#ifndef _UI_H\r
+#define _UI_H\r
+\r
+//\r
+// Include common header file for this module.\r
+//\r
+#include "CommonHeader.h"\r
+\r
+//\r
+// Globals\r
+//\r
+#define REGULAR_NUMERIC 0\r
+#define TIME_NUMERIC 1\r
+#define DATE_NUMERIC 2\r
+\r
+typedef enum {\r
+ UiNoOperation,\r
+ UiDefault,\r
+ UiSelect,\r
+ UiUp,\r
+ UiDown,\r
+ UiLeft,\r
+ UiRight,\r
+ UiReset,\r
+ UiSave,\r
+ UiPrevious,\r
+ UiPageUp,\r
+ UiPageDown,\r
+ UiMaxOperation\r
+} UI_SCREEN_OPERATION;\r
+\r
+typedef enum {\r
+ CfInitialization,\r
+ CfCheckSelection,\r
+ CfRepaint,\r
+ CfRefreshHighLight,\r
+ CfUpdateHelpString,\r
+ CfPrepareToReadKey,\r
+ CfReadKey,\r
+ CfScreenOperation,\r
+ CfUiPrevious,\r
+ CfUiSelect,\r
+ CfUiReset,\r
+ CfUiLeft,\r
+ CfUiRight,\r
+ CfUiUp,\r
+ CfUiPageUp,\r
+ CfUiPageDown,\r
+ CfUiDown,\r
+ CfUiSave,\r
+ CfUiDefault,\r
+ CfUiNoOperation,\r
+ CfExit,\r
+ CfMaxControlFlag\r
+} UI_CONTROL_FLAG;\r
+\r
+#define UI_MENU_OPTION_SIGNATURE EFI_SIGNATURE_32 ('u', 'i', 'm', 'm')\r
+#define UI_MENU_LIST_SIGNATURE EFI_SIGNATURE_32 ('u', 'i', 'm', 'l')\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ LIST_ENTRY Link;\r
+\r
+ UINTN Row;\r
+ UINTN Col;\r
+ UINTN OptCol;\r
+ CHAR16 *Description;\r
+ UINTN Skip;\r
+\r
+ UINTN IfrNumber;\r
+ VOID *FormBinary;\r
+ EFI_HII_HANDLE Handle;\r
+ EFI_TAG *Tags;\r
+ UINTN TagIndex;\r
+ EFI_TAG *ThisTag;\r
+ UINT16 FormId;\r
+ BOOLEAN Previous;\r
+ UINT16 EntryNumber;\r
+ UINT16 Consistency;\r
+ BOOLEAN GrayOut;\r
+} UI_MENU_OPTION;\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ LIST_ENTRY MenuLink;\r
+\r
+ UI_MENU_OPTION Selection;\r
+ UINTN FormerEntryNumber;\r
+} UI_MENU_LIST;\r
+\r
+typedef struct _MENU_REFRESH_ENTRY {\r
+ struct _MENU_REFRESH_ENTRY *Next;\r
+ EFI_FILE_FORM_TAGS *FileFormTagsHead;\r
+ UINTN CurrentColumn;\r
+ UINTN CurrentRow;\r
+ UINTN CurrentAttribute;\r
+ UI_MENU_OPTION *MenuOption; // Describes the entry needing an update\r
+} MENU_REFRESH_ENTRY;\r
+\r
+typedef struct {\r
+ UINT16 ScanCode;\r
+ UI_SCREEN_OPERATION ScreenOperation;\r
+} SCAN_CODE_TO_SCREEN_OPERATION;\r
+\r
+typedef struct {\r
+ UI_SCREEN_OPERATION ScreenOperation;\r
+ UI_CONTROL_FLAG ControlFlag;\r
+} SCREEN_OPERATION_T0_CONTROL_FLAG;\r
+\r
+LIST_ENTRY Menu;\r
+LIST_ENTRY gMenuList;\r
+MENU_REFRESH_ENTRY *gMenuRefreshHead;\r
+\r
+INTN gEntryNumber;\r
+BOOLEAN gLastOpr;\r
+//\r
+// Global Functions\r
+//\r
+VOID\r
+UiInitMenu (\r
+ VOID\r
+ )\r
+;\r
+\r
+VOID\r
+UiInitMenuList (\r
+ VOID\r
+ )\r
+;\r
+\r
+VOID\r
+UiRemoveMenuListEntry (\r
+ IN UI_MENU_OPTION *Selection,\r
+ OUT UI_MENU_OPTION **PreviousSelection\r
+ )\r
+;\r
+\r
+VOID\r
+UiFreeMenuList (\r
+ VOID\r
+ )\r
+;\r
+\r
+VOID\r
+UiAddMenuListEntry (\r
+ IN UI_MENU_OPTION *Selection\r
+ )\r
+;\r
+\r
+VOID\r
+UiFreeMenu (\r
+ VOID\r
+ )\r
+;\r
+\r
+VOID\r
+UiAddMenuOption (\r
+ IN CHAR16 *String,\r
+ IN EFI_HII_HANDLE Handle,\r
+ IN EFI_TAG *Tag,\r
+ IN VOID *FormBinary,\r
+ IN UINTN IfrNumber\r
+ )\r
+;\r
+\r
+VOID\r
+UiAddSubMenuOption (\r
+ IN CHAR16 *String,\r
+ IN EFI_HII_HANDLE Handle,\r
+ IN EFI_TAG *Tag,\r
+ IN UINTN TagIndex,\r
+ IN UINT16 FormId,\r
+ IN UINT16 MenuItemCount\r
+ )\r
+;\r
+\r
+UI_MENU_OPTION *\r
+UiDisplayMenu (\r
+ IN BOOLEAN SubMenu,\r
+ IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
+ OUT EFI_IFR_DATA_ARRAY *PageData\r
+ )\r
+;\r
+\r
+VOID\r
+InitPage (\r
+ VOID\r
+ )\r
+;\r
+\r
+UI_MENU_OPTION *\r
+SetupBrowser (\r
+ IN UI_MENU_OPTION *Selection,\r
+ IN BOOLEAN Callback,\r
+ IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
+ IN UINT8 *CallbackData\r
+ )\r
+;\r
+\r
+\r
+VOID\r
+SetUnicodeMem (\r
+ IN VOID *Buffer,\r
+ IN UINTN Size,\r
+ IN CHAR16 Value\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+UiWaitForSingleEvent (\r
+ IN EFI_EVENT Event,\r
+ IN UINT64 Timeout OPTIONAL\r
+ )\r
+;\r
+\r
+VOID\r
+CreatePopUp (\r
+ IN UINTN ScreenWidth,\r
+ IN UINTN NumberOfLines,\r
+ IN CHAR16 *ArrayOfStrings,\r
+ ...\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+ReadString (\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ OUT CHAR16 *StringPtr\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+ReadPassword (\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ IN BOOLEAN PromptForPassword,\r
+ IN EFI_TAG *Tag,\r
+ IN EFI_IFR_DATA_ARRAY *PageData,\r
+ IN BOOLEAN SecondEntry,\r
+ IN EFI_FILE_FORM_TAGS *FileFormTags,\r
+ OUT CHAR16 *StringPtr\r
+ )\r
+;\r
+\r
+VOID\r
+EncodePassword (\r
+ IN CHAR16 *Password,\r
+ IN UINT8 MaxSize\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+GetSelectionInputPopUp (\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ IN EFI_TAG *Tag,\r
+ IN UINTN ValueCount,\r
+ OUT UINT16 *Value,\r
+ OUT UINT16 *KeyValue\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+GetSelectionInputLeftRight (\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ IN EFI_TAG *Tag,\r
+ IN UINTN ValueCount,\r
+ OUT UINT16 *Value\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+GetNumericInput (\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
+ IN BOOLEAN ManualInput,\r
+ IN EFI_TAG *Tag,\r
+ IN UINTN NumericType,\r
+ OUT UINT16 *Value\r
+ )\r
+;\r
+\r
+VOID\r
+UpdateStatusBar (\r
+ IN UINTN MessageType,\r
+ IN UINT8 Flags,\r
+ IN BOOLEAN State\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+ProcessOptions (\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ IN BOOLEAN Selected,\r
+ IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
+ IN EFI_IFR_DATA_ARRAY *PageData,\r
+ OUT CHAR16 **OptionString\r
+ )\r
+;\r
+\r
+VOID\r
+ProcessHelpString (\r
+ IN CHAR16 *StringPtr,\r
+ OUT CHAR16 **FormattedString,\r
+ IN UINTN RowCount\r
+ )\r
+;\r
+\r
+VOID\r
+UpdateKeyHelp (\r
+ IN UI_MENU_OPTION *Selection,\r
+ IN BOOLEAN Selected\r
+ )\r
+;\r
+\r
+BOOLEAN\r
+ValueIsNotValid (\r
+ IN BOOLEAN Complex,\r
+ IN UINT16 Value,\r
+ IN EFI_TAG *Tag,\r
+ IN EFI_FILE_FORM_TAGS *FileFormTags,\r
+ IN STRING_REF *PopUp\r
+ )\r
+;\r
+\r
+VOID\r
+FreeData (\r
+ IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
+ IN CHAR16 *FormattedString,\r
+ IN CHAR16 *OptionString\r
+ )\r
+;\r
+\r
+VOID\r
+ClearLines (\r
+ UINTN LeftColumn,\r
+ UINTN RightColumn,\r
+ UINTN TopRow,\r
+ UINTN BottomRow,\r
+ UINTN TextAttribute\r
+ )\r
+;\r
+\r
+UINTN\r
+GetStringWidth (\r
+ CHAR16 *String\r
+ )\r
+;\r
+\r
+UINT16\r
+GetLineByWidth (\r
+ IN CHAR16 *InputString,\r
+ IN UINT16 LineWidth,\r
+ IN OUT UINTN *Index,\r
+ OUT CHAR16 **OutputString\r
+ )\r
+;\r
+\r
+UINT16\r
+GetWidth (\r
+ IN EFI_TAG *Tag,\r
+ IN EFI_HII_HANDLE Handle\r
+ )\r
+;\r
+\r
+VOID\r
+NewStrCat (\r
+ CHAR16 *Destination,\r
+ CHAR16 *Source\r
+ )\r
+;\r
+\r
+VOID\r
+IfrToFormTag (\r
+ IN UINT8 OpCode,\r
+ IN EFI_TAG *TargetTag,\r
+ IN VOID *FormData,\r
+ EFI_VARIABLE_DEFINITION *VariableDefinitionsHead\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+ExtractNvValue (\r
+ IN EFI_FILE_FORM_TAGS *FileFormTags,\r
+ IN UINT16 VariableId,\r
+ IN UINT16 VariableSize,\r
+ IN UINT16 OffsetValue,\r
+ OUT VOID **Buffer\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+ExtractRequestedNvMap (\r
+ IN EFI_FILE_FORM_TAGS *FileFormTags,\r
+ IN UINT16 VariableId,\r
+ OUT EFI_VARIABLE_DEFINITION **VariableDefinition\r
+ )\r
+;\r
+\r
+BOOLEAN\r
+ValueIsScroll (\r
+ IN BOOLEAN Direction,\r
+ IN LIST_ENTRY *CurrentPos\r
+ )\r
+;\r
+\r
+UINTN\r
+AdjustDateAndTimePosition (\r
+ IN BOOLEAN DirectionUp,\r
+ IN LIST_ENTRY **CurrentPosition\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+WaitForKeyStroke (\r
+ OUT EFI_INPUT_KEY *Key\r
+ )\r
+;\r
+#endif // _UI_H\r