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