]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Split browser with browser core and display engine.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 17 Apr 2013 01:32:33 +0000 (01:32 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 17 Apr 2013 01:32:33 +0000 (01:32 +0000)
First Version, goal:
  1.Display Engine has the framework.
  2.Browser core ready.(PasswordCheck, ValidateQuestionV not ready)

Signed-off-by: Eric Dong
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14281 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Include/Protocol/DisplayProtocol.h [new file with mode: 0644]
MdeModulePkg/MdeModulePkg.dec

diff --git a/MdeModulePkg/Include/Protocol/DisplayProtocol.h b/MdeModulePkg/Include/Protocol/DisplayProtocol.h
new file mode 100644 (file)
index 0000000..e69f400
--- /dev/null
@@ -0,0 +1,197 @@
+/** @file\r
+  FormDiplay protocol to show Form\r
+\r
+Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution.  \r
+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
+**/\r
+\r
+#ifndef __DISPLAY_PROTOCOL_H__\r
+#define __DISPLAY_PROTOCOL_H__\r
+\r
+#define FORM_DISPLAY_ENGINE_PROTOCOL_GUID  \\r
+  { 0x9bbe29e9, 0xfda1, 0x41ec, { 0xad, 0x52, 0x45, 0x22, 0x13, 0x74, 0x2d, 0x2e } }\r
+\r
+#define FORM_DISPLAY_ENGINE_STATEMENT_VERSION  0x10000\r
+#define FORM_DISPLAY_ENGINE_VERSION       0x10000\r
+\r
+typedef struct _FORM_DISPLAY_ENGINE_PROTOCOL   FORM_DISPLAY_ENGINE_PROTOCOL;\r
+\r
+typedef struct {\r
+  UINT8               Type;       // HII Data Type\r
+  UINT8               *Buffer;    // Buffer Data and Length if Type is EFI_IFR_TYPE_BUFFER or EFI_IFR_TYPE_STRING\r
+  UINT16              BufferLen;\r
+  EFI_IFR_TYPE_VALUE  Value;\r
+} EFI_HII_VALUE;\r
+\r
+#define DISPLAY_QUESTION_OPTION_SIGNATURE  SIGNATURE_32 ('Q', 'O', 'P', 'T')\r
+\r
+typedef struct {\r
+  UINTN                  Signature;\r
+  LIST_ENTRY             Link;\r
+  EFI_IFR_ONE_OF_OPTION  OptionOpCode;   // OneOfOption Data\r
+  EFI_IMAGE_ID           ImageId;        // Option ImageId and AnimationId\r
+  EFI_ANIMATION_ID       AnimationId;\r
+} DISPLAY_QUESTION_OPTION;\r
+\r
+#define DISPLAY_QUESTION_OPTION_FROM_LINK(a)  CR (a, DISPLAY_QUESTION_OPTION, Link, DISPLAY_QUESTION_OPTION_SIGNATURE)\r
+\r
+\r
+typedef struct _FORM_DISPLAY_ENGINE_STATEMENT FORM_DISPLAY_ENGINE_STATEMENT;\r
+\r
+//\r
+// Attribute for Statement and Form\r
+//\r
+#define HII_DISPLAY_GRAYOUT          BIT0\r
+#define HII_DISPLAY_LOCK             BIT1\r
+#define HII_DISPLAY_READONLY         BIT2\r
+#define HII_DISPLAY_MODAL            BIT3\r
+\r
+#define FORM_DISPLAY_ENGINE_FORM_SIGNATURE  SIGNATURE_32 ('F', 'F', 'R', 'M')\r
+\r
+typedef struct {\r
+  UINTN                         Signature;\r
+  UINTN                         Version;                    // Version for future structure extension\r
+  LIST_ENTRY                    StatementListHead;          // Statement List inside of Form\r
+  EFI_GUID                      FormSetGuid;                // FormSet information\r
+  EFI_HII_HANDLE                HiiHandle;                  // HiiHandle can be used to get String, Image or Animation\r
+  UINT16                        FormId;                     // Form ID and Title.\r
+  EFI_STRING_ID                 FormTitle;\r
+  UINT32                        Attribute;                  // Form Attributes: Lock, Modal.\r
+  BOOLEAN                       SettingChangedFlag;         // Flag to describe whether setting is changed or not.\r
+  FORM_DISPLAY_ENGINE_STATEMENT *HighLightedStatement;      // Statement to be HighLighted\r
+  EFI_GUID                      *FormRefreshEventGuid;      // EventGuid to notify Displayer that FormData is updated to be refreshed.\r
+  LIST_ENTRY                    HotKeyListHead;             // Additional Hotkey registered by BrowserEx protocol.\r
+  EFI_IMAGE_ID                  ImageId;                    // Form ImageId and AnimationId\r
+  EFI_ANIMATION_ID              AnimationId;\r
+} FORM_DISPLAY_ENGINE_FORM;\r
+\r
+#define FORM_DISPLAY_ENGINE_FORM_FROM_LINK(a)  CR (a, FORM_DISPLAY_ENGINE_FORM, Link, FORM_DISPLAY_ENGINE_FORM_SIGNATURE)\r
+\r
+/**\r
+  Perform value check for a question.\r
+  \r
+  @param  Form       Form where Statement is in.\r
+  @param  Statement  Value will check for it.\r
+  @param  Value      New value will be checked.\r
+  \r
+  @retval TRUE   Input Value is valid.\r
+  @retval FALSE  Input Value is invalid.\r
+**/\r
+typedef\r
+BOOLEAN\r
+(EFIAPI *VALIDATE_QUESTION) (\r
+  IN FORM_DISPLAY_ENGINE_FORM      *Form,\r
+  IN FORM_DISPLAY_ENGINE_STATEMENT *Statement,\r
+  IN EFI_HII_VALUE                 *Value\r
+  );\r
+\r
+/**\r
+  Perform Password check. \r
+  Passwork may be encrypted by driver that requires the specific check.\r
+  \r
+  @param  Form             Form where Password Statement is in.\r
+  @param  Statement        Password statement\r
+  @param  PasswordString   Password string to be checked. It may be NULL.\r
+  \r
+  @return Status     Status of Password check.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *PASSWORD_CHECK) (\r
+  IN FORM_DISPLAY_ENGINE_FORM      *Form,\r
+  IN FORM_DISPLAY_ENGINE_STATEMENT *Statement, \r
+  IN EFI_STRING                    *PasswordString  OPTIONAL\r
+  );\r
+\r
+#define FORM_DISPLAY_ENGINE_STATEMENT_SIGNATURE  SIGNATURE_32 ('F', 'S', 'T', 'A')\r
+\r
+struct _FORM_DISPLAY_ENGINE_STATEMENT{\r
+  UINTN                 Signature;\r
+  UINTN                 Version;              // Version for future structure extension\r
+  LIST_ENTRY            DisplayLink;          // link to all the statement which will show in the display form.\r
+  EFI_IFR_OP_HEADER     *OpCode;              // Pointer to statement opcode.\r
+                                              // for Guided Opcode. All buffers will be here if GUIDED opcode scope is set.\r
+  EFI_HII_VALUE         CurrentValue;         // Question CurrentValue\r
+  BOOLEAN               SettingChangedFlag;   // Flag to describe whether setting is changed or not.\r
+                                              // Displayer may depend on it to show it with the different color.\r
+  LIST_ENTRY            NestStatementList;    // nested Statement list inside of EFI_IFR_SUBTITLE\r
+  LIST_ENTRY            OptionListHead;       // nested EFI_IFR_ONE_OF_OPTION list (QUESTION_OPTION)\r
+  UINT32                Attribute;            // Statement attributes: GRAYOUT, LOCK and READONLY\r
+  VALIDATE_QUESTION     ValidateQuestion;     // ValidateQuestion to do InconsistIf check\r
+  EFI_STRING_ID         InConsistentStringId; // InConsistentString popup will be used when ValidateQuestion returns FASLE.\r
+                                              // If this ID is zero, then Display can customize error message for the invalid value.\r
+  PASSWORD_CHECK        PasswordCheck;        // Password additional check. It may be NULL when the additional check is not required.\r
+  EFI_IMAGE_ID          ImageId;              // Statement ImageId and AnimationId\r
+  EFI_ANIMATION_ID      AnimationId;\r
+};\r
+\r
+#define FORM_DISPLAY_ENGINE_STATEMENT_FROM_LINK(a)  CR (a, FORM_DISPLAY_ENGINE_STATEMENT, DisplayLink, FORM_DISPLAY_ENGINE_STATEMENT_SIGNATURE)\r
+\r
+typedef struct {\r
+  UINTN                  Signature;\r
+  LIST_ENTRY             Link;\r
+  EFI_INPUT_KEY          KeyData;\r
+  UINT32                 Action;        // Action is Discard, Default, Submit, Reset and Exit.\r
+  UINT16                 DefaultId;\r
+  EFI_STRING             HelpString;    // HotKey Help String\r
+} HOTKEY_INFO;\r
+\r
+typedef struct {\r
+  FORM_DISPLAY_ENGINE_STATEMENT  *SelectedStatement; // Selected Statement and InputValue\r
+  EFI_HII_VALUE                  InputValue;\r
+  UINT32                         Action;             // If SelectedStatement is NULL, Action will be used.\r
+                                                     // Trig Action (Discard, Default, Submit, Reset and Exit)\r
+  UINT16                         DefaultId;\r
+} USER_INPUT;\r
+\r
+/**\r
+  Display one form, and return user input.\r
+  \r
+  @param FormData                Form Data to be shown.\r
+  @param UserInputData           User input data.\r
+  \r
+  @retval EFI_SUCCESS            Form Data is shown, and user input is got.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *FORM_DISPLAY) (\r
+  IN FORM_DISPLAY_ENGINE_FORM  *FormData,\r
+  OUT USER_INPUT               *UserInputData\r
+);\r
+\r
+/**\r
+  Exit Display and Clear Screen to the original state.\r
+\r
+**/\r
+typedef\r
+VOID\r
+(EFIAPI *EXIT_DISPLAY) (\r
+  VOID\r
+);\r
+\r
+/**\r
+  Confirm how to handle the changed data. \r
+  \r
+  @return Action of Submit, Discard and None\r
+**/\r
+typedef\r
+UINTN\r
+(EFIAPI *CONFIRM_DATA_CHANGE) (\r
+  VOID\r
+);\r
+\r
+struct _FORM_DISPLAY_ENGINE_PROTOCOL {\r
+  FORM_DISPLAY        FormDisplay;\r
+  EXIT_DISPLAY        ExitDisplay;\r
+  CONFIRM_DATA_CHANGE ConfirmDataChange;\r
+};\r
+\r
+extern EFI_GUID gEfiFormDisplayEngineProtocolGuid;\r
+#endif\r
index ba80b809dc003397364262bd0ef62dcdd85086ea..1f68a716192c50485698565549f42ad781f073c7 100644 (file)
   ## Include/Protocol/FormBrowserEx.h\r
   gEfiFormBrowserExProtocolGuid = { 0x1f73b18d, 0x4630, 0x43c1, { 0xa1, 0xde, 0x6f, 0x80, 0x85, 0x5d, 0x7d, 0xa4 } }\r
 \r
+  ## Include/Protocol/DisplayProtocol.h\r
+  gEfiFormDisplayEngineProtocolGuid = { 0x9bbe29e9, 0xfda1, 0x41ec, { 0xad, 0x52, 0x45, 0x22, 0x13, 0x74, 0x2d, 0x2e } }\r
+  \r
   ## Include/Protocol/EbcVmTest.h\r
   gEfiEbcVmTestProtocolGuid = { 0xAAEACCFD, 0xF27B, 0x4C17, { 0xB6, 0x10, 0x75, 0xCA, 0x1F, 0x2D, 0xFB, 0x52 } }\r
 \r