Home | History | Annotate | Download | only in CustomizedDisplayLib
      1 /** @file
      2 
      3   This library class defines a set of interfaces to customize Display module
      4 
      5 Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>
      6 This program and the accompanying materials are licensed and made available under
      7 the terms and conditions of the BSD License that accompanies this distribution.
      8 The full text of the license may be found at
      9 http://opensource.org/licenses/bsd-license.php.
     10 
     11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 #ifndef __CUSTOMIZED_DISPLAY_LIB_INTERNAL_H__
     17 #define __CUSTOMIZED_DISPLAY_LIB_INTERNAL_H__
     18 
     19 
     20 
     21 #include <PiDxe.h>
     22 
     23 #include <Protocol/SimpleTextOut.h>
     24 #include <Protocol/SimpleTextIn.h>
     25 #include <Protocol/FormBrowser2.h>
     26 #include <Protocol/FormBrowserEx2.h>
     27 #include <Protocol/DisplayProtocol.h>
     28 #include <Protocol/DevicePath.h>
     29 #include <Protocol/UnicodeCollation.h>
     30 #include <Protocol/HiiConfigAccess.h>
     31 #include <Protocol/HiiConfigRouting.h>
     32 #include <Protocol/HiiDatabase.h>
     33 #include <Protocol/HiiString.h>
     34 #include <Protocol/UserManager.h>
     35 #include <Protocol/DevicePathFromText.h>
     36 
     37 #include <Guid/MdeModuleHii.h>
     38 #include <Guid/HiiPlatformSetupFormset.h>
     39 #include <Guid/HiiFormMapMethodGuid.h>
     40 
     41 #include <Library/PrintLib.h>
     42 #include <Library/DebugLib.h>
     43 #include <Library/BaseMemoryLib.h>
     44 #include <Library/UefiRuntimeServicesTableLib.h>
     45 #include <Library/UefiDriverEntryPoint.h>
     46 #include <Library/UefiBootServicesTableLib.h>
     47 #include <Library/BaseLib.h>
     48 #include <Library/MemoryAllocationLib.h>
     49 #include <Library/HiiLib.h>
     50 #include <Library/PcdLib.h>
     51 #include <Library/DevicePathLib.h>
     52 #include <Library/CustomizedDisplayLib.h>
     53 
     54 #include "Colors.h"
     55 
     56 
     57 
     58 #define FORMSET_CLASS_PLATFORM_SETUP         0x0001
     59 #define FORMSET_CLASS_FRONT_PAGE             0x0002
     60 
     61 
     62 #define FRONT_PAGE_HEADER_HEIGHT      6
     63 #define NONE_FRONT_PAGE_HEADER_HEIGHT 3
     64 #define FOOTER_HEIGHT                 4
     65 #define STATUS_BAR_HEIGHT             1
     66 
     67 //
     68 // Screen definitions
     69 //
     70 #define BANNER_HEIGHT                 6
     71 #define BANNER_COLUMNS                3
     72 #define BANNER_LEFT_COLUMN_INDENT     1
     73 
     74 //
     75 // Character definitions
     76 //
     77 #define UPPER_LOWER_CASE_OFFSET 0x20
     78 
     79 //
     80 // This is the Input Error Message
     81 //
     82 #define INPUT_ERROR 1
     83 
     84 //
     85 // This is the NV RAM update required Message
     86 //
     87 #define NV_UPDATE_REQUIRED  2
     88 
     89 typedef struct {
     90   EFI_STRING_ID  Banner[BANNER_HEIGHT][BANNER_COLUMNS];
     91 } BANNER_DATA;
     92 
     93 extern  UINT16                        gClassOfVfr;                 // Formset class information
     94 extern  BANNER_DATA                   *gBannerData;
     95 extern  EFI_SCREEN_DESCRIPTOR         gScreenDimensions;
     96 extern  UINTN                         gFooterHeight;
     97 
     98 //
     99 // Browser Global Strings
    100 //
    101 extern CHAR16            *gEnterString;
    102 extern CHAR16            *gEnterCommitString;
    103 extern CHAR16            *gEnterEscapeString;
    104 extern CHAR16            *gEscapeString;
    105 extern CHAR16            *gMoveHighlight;
    106 extern CHAR16            *gDecNumericInput;
    107 extern CHAR16            *gHexNumericInput;
    108 extern CHAR16            *gToggleCheckBox;
    109 extern CHAR16            *gLibEmptyString;
    110 extern CHAR16            *gAreYouSure;
    111 extern CHAR16            *gYesResponse;
    112 extern CHAR16            *gNoResponse;
    113 extern CHAR16            *gPlusString;
    114 extern CHAR16            *gMinusString;
    115 extern CHAR16            *gAdjustNumber;
    116 extern CHAR16            *gSaveChanges;
    117 extern CHAR16            *gNvUpdateMessage;
    118 extern CHAR16            *gInputErrorMessage;
    119 /**
    120 
    121   Print banner info for front page.
    122 
    123   @param[in]  FormData             Form Data to be shown in Page
    124 
    125 **/
    126 VOID
    127 PrintBannerInfo (
    128   IN FORM_DISPLAY_ENGINE_FORM       *FormData
    129   );
    130 
    131 /**
    132   Print framework and form title for a page.
    133 
    134   @param[in]  FormData             Form Data to be shown in Page
    135 **/
    136 VOID
    137 PrintFramework (
    138   IN FORM_DISPLAY_ENGINE_FORM       *FormData
    139   );
    140 
    141 /**
    142   Validate the input screen diemenstion info.
    143 
    144   @param  FormData               The input form data info.
    145 
    146   @return EFI_SUCCESS            The input screen info is acceptable.
    147   @return EFI_INVALID_PARAMETER  The input screen info is not acceptable.
    148 
    149 **/
    150 EFI_STATUS
    151 ScreenDiemensionInfoValidate (
    152   IN FORM_DISPLAY_ENGINE_FORM       *FormData
    153   );
    154 
    155 /**
    156   Get the string based on the StringId and HII Package List Handle.
    157 
    158   @param  Token                  The String's ID.
    159   @param  HiiHandle              The package list in the HII database to search for
    160                                  the specified string.
    161 
    162   @return The output string.
    163 
    164 **/
    165 CHAR16 *
    166 LibGetToken (
    167   IN  EFI_STRING_ID                Token,
    168   IN  EFI_HII_HANDLE               HiiHandle
    169   );
    170 
    171 /**
    172   Count the storage space of a Unicode string.
    173 
    174   This function handles the Unicode string with NARROW_CHAR
    175   and WIDE_CHAR control characters. NARROW_HCAR and WIDE_CHAR
    176   does not count in the resultant output. If a WIDE_CHAR is
    177   hit, then 2 Unicode character will consume an output storage
    178   space with size of CHAR16 till a NARROW_CHAR is hit.
    179 
    180   If String is NULL, then ASSERT ().
    181 
    182   @param String          The input string to be counted.
    183 
    184   @return Storage space for the input string.
    185 
    186 **/
    187 UINTN
    188 LibGetStringWidth (
    189   IN CHAR16               *String
    190   );
    191 
    192 /**
    193   Show all registered HotKey help strings on bottom Rows.
    194 
    195   @param FormData          The curent input form data info.
    196   @param SetState          Set HotKey or Clear HotKey
    197 
    198 **/
    199 VOID
    200 PrintHotKeyHelpString (
    201   IN FORM_DISPLAY_ENGINE_FORM      *FormData,
    202   IN BOOLEAN                       SetState
    203   );
    204 
    205 /**
    206   Get step info from numeric opcode.
    207 
    208   @param[in] OpCode     The input numeric op code.
    209 
    210   @return step info for this opcode.
    211 **/
    212 UINT64
    213 LibGetFieldFromNum (
    214   IN  EFI_IFR_OP_HEADER     *OpCode
    215   );
    216 
    217 /**
    218   Initialize the HII String Token to the correct values.
    219 
    220 **/
    221 VOID
    222 InitializeLibStrings (
    223   VOID
    224   );
    225 
    226 /**
    227   Free the HII String.
    228 
    229 **/
    230 VOID
    231 FreeLibStrings (
    232   VOID
    233   );
    234 
    235 /**
    236   Wait for a key to be pressed by user.
    237 
    238   @param Key         The key which is pressed by user.
    239 
    240   @retval EFI_SUCCESS The function always completed successfully.
    241 
    242 **/
    243 EFI_STATUS
    244 WaitForKeyStroke (
    245   OUT  EFI_INPUT_KEY           *Key
    246   );
    247 
    248 /**
    249   Set Buffer to Value for Size bytes.
    250 
    251   @param  Buffer                 Memory to set.
    252   @param  Size                   Number of bytes to set
    253   @param  Value                  Value of the set operation.
    254 
    255 **/
    256 VOID
    257 LibSetUnicodeMem (
    258   IN VOID   *Buffer,
    259   IN UINTN  Size,
    260   IN CHAR16 Value
    261   );
    262 
    263 /**
    264   Prints a formatted unicode string to the default console, at
    265   the supplied cursor position.
    266 
    267   @param  Width      Width of String to be printed.
    268   @param  Column     The cursor position to print the string at.
    269   @param  Row        The cursor position to print the string at.
    270   @param  Fmt        Format string.
    271   @param  ...        Variable argument list for format string.
    272 
    273   @return Length of string printed to the console
    274 
    275 **/
    276 UINTN
    277 EFIAPI
    278 PrintAt (
    279   IN UINTN     Width,
    280   IN UINTN     Column,
    281   IN UINTN     Row,
    282   IN CHAR16    *Fmt,
    283   ...
    284   );
    285 
    286 /**
    287   Process some op codes which is out side of current form.
    288 
    289   @param FormData                Pointer to the form data.
    290 
    291 **/
    292 VOID
    293 ProcessExternedOpcode (
    294   IN FORM_DISPLAY_ENGINE_FORM       *FormData
    295   );
    296 
    297 #endif
    298