mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-11-04 05:25:45 +01:00 
			
		
		
		
	Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14735 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			298 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			298 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
 | 
						|
  This library class defines a set of interfaces to customize Display module
 | 
						|
 | 
						|
Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>
 | 
						|
This program and the accompanying materials are licensed and made available under 
 | 
						|
the terms and conditions of the BSD License that 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 __CUSTOMIZED_DISPLAY_LIB_INTERNAL_H__
 | 
						|
#define __CUSTOMIZED_DISPLAY_LIB_INTERNAL_H__
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#include <PiDxe.h>
 | 
						|
 | 
						|
#include <Protocol/SimpleTextOut.h>
 | 
						|
#include <Protocol/SimpleTextIn.h>
 | 
						|
#include <Protocol/FormBrowser2.h>
 | 
						|
#include <Protocol/FormBrowserEx2.h>
 | 
						|
#include <Protocol/DisplayProtocol.h>
 | 
						|
#include <Protocol/DevicePath.h>
 | 
						|
#include <Protocol/UnicodeCollation.h>
 | 
						|
#include <Protocol/HiiConfigAccess.h>
 | 
						|
#include <Protocol/HiiConfigRouting.h>
 | 
						|
#include <Protocol/HiiDatabase.h>
 | 
						|
#include <Protocol/HiiString.h>
 | 
						|
#include <Protocol/UserManager.h>
 | 
						|
#include <Protocol/DevicePathFromText.h>
 | 
						|
 | 
						|
#include <Guid/MdeModuleHii.h>
 | 
						|
#include <Guid/HiiPlatformSetupFormset.h>
 | 
						|
#include <Guid/HiiFormMapMethodGuid.h>
 | 
						|
 | 
						|
#include <Library/PrintLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/UefiRuntimeServicesTableLib.h>
 | 
						|
#include <Library/UefiDriverEntryPoint.h>
 | 
						|
#include <Library/UefiBootServicesTableLib.h>
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
#include <Library/MemoryAllocationLib.h>
 | 
						|
#include <Library/HiiLib.h>
 | 
						|
#include <Library/PcdLib.h>
 | 
						|
#include <Library/DevicePathLib.h>
 | 
						|
#include <Library/CustomizedDisplayLib.h>
 | 
						|
 | 
						|
#include "Colors.h"
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#define FORMSET_CLASS_PLATFORM_SETUP         0x0001
 | 
						|
#define FORMSET_CLASS_FRONT_PAGE             0x0002
 | 
						|
 | 
						|
 | 
						|
#define FRONT_PAGE_HEADER_HEIGHT      6
 | 
						|
#define NONE_FRONT_PAGE_HEADER_HEIGHT 3
 | 
						|
#define FOOTER_HEIGHT                 4
 | 
						|
#define STATUS_BAR_HEIGHT             1
 | 
						|
 | 
						|
//
 | 
						|
// Screen definitions
 | 
						|
//
 | 
						|
#define BANNER_HEIGHT                 6
 | 
						|
#define BANNER_COLUMNS                3
 | 
						|
#define BANNER_LEFT_COLUMN_INDENT     1
 | 
						|
 | 
						|
//
 | 
						|
// Character definitions
 | 
						|
//
 | 
						|
#define UPPER_LOWER_CASE_OFFSET 0x20
 | 
						|
 | 
						|
//
 | 
						|
// This is the Input Error Message
 | 
						|
//
 | 
						|
#define INPUT_ERROR 1
 | 
						|
 | 
						|
//
 | 
						|
// This is the NV RAM update required Message
 | 
						|
//
 | 
						|
#define NV_UPDATE_REQUIRED  2
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_STRING_ID  Banner[BANNER_HEIGHT][BANNER_COLUMNS];
 | 
						|
} BANNER_DATA;
 | 
						|
 | 
						|
extern  UINT16                        gClassOfVfr;                 // Formset class information
 | 
						|
extern  BANNER_DATA                   *gBannerData;
 | 
						|
extern  EFI_SCREEN_DESCRIPTOR         gScreenDimensions;
 | 
						|
extern  UINTN                         gFooterHeight;
 | 
						|
 | 
						|
//
 | 
						|
// Browser Global Strings
 | 
						|
//
 | 
						|
extern CHAR16            *gEnterString;
 | 
						|
extern CHAR16            *gEnterCommitString;
 | 
						|
extern CHAR16            *gEnterEscapeString;
 | 
						|
extern CHAR16            *gEscapeString;
 | 
						|
extern CHAR16            *gMoveHighlight;
 | 
						|
extern CHAR16            *gDecNumericInput;
 | 
						|
extern CHAR16            *gHexNumericInput;
 | 
						|
extern CHAR16            *gToggleCheckBox;
 | 
						|
extern CHAR16            *gLibEmptyString;
 | 
						|
extern CHAR16            *gAreYouSure;
 | 
						|
extern CHAR16            *gYesResponse;
 | 
						|
extern CHAR16            *gNoResponse;
 | 
						|
extern CHAR16            *gPlusString;
 | 
						|
extern CHAR16            *gMinusString;
 | 
						|
extern CHAR16            *gAdjustNumber;
 | 
						|
extern CHAR16            *gSaveChanges;
 | 
						|
extern CHAR16            *gNvUpdateMessage;
 | 
						|
extern CHAR16            *gInputErrorMessage;
 | 
						|
/**
 | 
						|
 | 
						|
  Print banner info for front page.
 | 
						|
 | 
						|
  @param[in]  FormData             Form Data to be shown in Page
 | 
						|
  
 | 
						|
**/
 | 
						|
VOID
 | 
						|
PrintBannerInfo ( 
 | 
						|
  IN FORM_DISPLAY_ENGINE_FORM       *FormData
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Print framework and form title for a page.
 | 
						|
 | 
						|
  @param[in]  FormData             Form Data to be shown in Page
 | 
						|
**/
 | 
						|
VOID
 | 
						|
PrintFramework (
 | 
						|
  IN FORM_DISPLAY_ENGINE_FORM       *FormData
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Validate the input screen diemenstion info.
 | 
						|
 | 
						|
  @param  FormData               The input form data info.
 | 
						|
 | 
						|
  @return EFI_SUCCESS            The input screen info is acceptable.
 | 
						|
  @return EFI_INVALID_PARAMETER  The input screen info is not acceptable.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS 
 | 
						|
ScreenDiemensionInfoValidate (
 | 
						|
  IN FORM_DISPLAY_ENGINE_FORM       *FormData
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Get the string based on the StringId and HII Package List Handle.
 | 
						|
 | 
						|
  @param  Token                  The String's ID.
 | 
						|
  @param  HiiHandle              The package list in the HII database to search for
 | 
						|
                                 the specified string.
 | 
						|
 | 
						|
  @return The output string.
 | 
						|
 | 
						|
**/
 | 
						|
CHAR16 *
 | 
						|
LibGetToken (
 | 
						|
  IN  EFI_STRING_ID                Token,
 | 
						|
  IN  EFI_HII_HANDLE               HiiHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Count the storage space of a Unicode string.
 | 
						|
 | 
						|
  This function handles the Unicode string with NARROW_CHAR
 | 
						|
  and WIDE_CHAR control characters. NARROW_HCAR and WIDE_CHAR
 | 
						|
  does not count in the resultant output. If a WIDE_CHAR is
 | 
						|
  hit, then 2 Unicode character will consume an output storage
 | 
						|
  space with size of CHAR16 till a NARROW_CHAR is hit.
 | 
						|
 | 
						|
  If String is NULL, then ASSERT ().
 | 
						|
 | 
						|
  @param String          The input string to be counted.
 | 
						|
 | 
						|
  @return Storage space for the input string.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
LibGetStringWidth (
 | 
						|
  IN CHAR16               *String
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Show all registered HotKey help strings on bottom Rows.
 | 
						|
 | 
						|
  @param FormData          The curent input form data info.
 | 
						|
  @param SetState          Set HotKey or Clear HotKey
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
PrintHotKeyHelpString (
 | 
						|
  IN FORM_DISPLAY_ENGINE_FORM      *FormData,
 | 
						|
  IN BOOLEAN                       SetState
 | 
						|
  );
 | 
						|
  
 | 
						|
/**
 | 
						|
  Get step info from numeric opcode.
 | 
						|
  
 | 
						|
  @param[in] OpCode     The input numeric op code.
 | 
						|
 | 
						|
  @return step info for this opcode.
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
LibGetFieldFromNum (
 | 
						|
  IN  EFI_IFR_OP_HEADER     *OpCode
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize the HII String Token to the correct values.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
InitializeLibStrings (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Free the HII String.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
FreeLibStrings (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Wait for a key to be pressed by user.
 | 
						|
 | 
						|
  @param Key         The key which is pressed by user.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS The function always completed successfully.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
WaitForKeyStroke (
 | 
						|
  OUT  EFI_INPUT_KEY           *Key
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Set Buffer to Value for Size bytes.
 | 
						|
 | 
						|
  @param  Buffer                 Memory to set.
 | 
						|
  @param  Size                   Number of bytes to set
 | 
						|
  @param  Value                  Value of the set operation.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
LibSetUnicodeMem (
 | 
						|
  IN VOID   *Buffer,
 | 
						|
  IN UINTN  Size,
 | 
						|
  IN CHAR16 Value
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Prints a formatted unicode string to the default console, at
 | 
						|
  the supplied cursor position.
 | 
						|
 | 
						|
  @param  Width      Width of String to be printed.
 | 
						|
  @param  Column     The cursor position to print the string at.
 | 
						|
  @param  Row        The cursor position to print the string at.
 | 
						|
  @param  Fmt        Format string.
 | 
						|
  @param  ...        Variable argument list for format string.
 | 
						|
 | 
						|
  @return Length of string printed to the console
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EFIAPI
 | 
						|
PrintAt (
 | 
						|
  IN UINTN     Width,
 | 
						|
  IN UINTN     Column,
 | 
						|
  IN UINTN     Row,
 | 
						|
  IN CHAR16    *Fmt,
 | 
						|
  ...
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Process some op codes which is out side of current form.
 | 
						|
  
 | 
						|
  @param FormData                Pointer to the form data.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
ProcessExternedOpcode (
 | 
						|
  IN FORM_DISPLAY_ENGINE_FORM       *FormData
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |