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