Revision: 14281
          http://edk2.svn.sourceforge.net/edk2/?rev=14281&view=rev
Author:   ydong10
Date:     2013-04-17 01:32:33 +0000 (Wed, 17 Apr 2013)
Log Message:
-----------
Split browser with browser core and display engine.
First Version, goal:
  1.Display Engine has the framework.
  2.Browser core ready.(PasswordCheck, ValidateQuestionV not ready)

Signed-off-by: Eric Dong

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/MdeModulePkg.dec

Added Paths:
-----------
    trunk/edk2/MdeModulePkg/Include/Protocol/DisplayProtocol.h

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

Modified: trunk/edk2/MdeModulePkg/MdeModulePkg.dec
===================================================================
--- trunk/edk2/MdeModulePkg/MdeModulePkg.dec    2013-04-16 10:53:22 UTC (rev 
14280)
+++ trunk/edk2/MdeModulePkg/MdeModulePkg.dec    2013-04-17 01:32:33 UTC (rev 
14281)
@@ -339,6 +339,9 @@
   ## Include/Protocol/FormBrowserEx.h
   gEfiFormBrowserExProtocolGuid = { 0x1f73b18d, 0x4630, 0x43c1, { 0xa1, 0xde, 
0x6f, 0x80, 0x85, 0x5d, 0x7d, 0xa4 } }
 
+  ## Include/Protocol/DisplayProtocol.h
+  gEfiFormDisplayEngineProtocolGuid = { 0x9bbe29e9, 0xfda1, 0x41ec, { 0xad, 
0x52, 0x45, 0x22, 0x13, 0x74, 0x2d, 0x2e } }
+  
   ## Include/Protocol/EbcVmTest.h
   gEfiEbcVmTestProtocolGuid = { 0xAAEACCFD, 0xF27B, 0x4C17, { 0xB6, 0x10, 
0x75, 0xCA, 0x1F, 0x2D, 0xFB, 0x52 } }
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to