IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
internal application and drivers as well as all add-in card option-ROM drivers\r
\r
- Copyright (c) 2006 - 2008, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. 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
+Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
+(C) Copyright 2016 Hewlett Packard Enterprise Development LP<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
@par Revision Reference:\r
- These definitions are from UEFI2.1.\r
+ These definitions are from UEFI 2.1 and 2.2.\r
\r
**/\r
\r
#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__\r
#define __UEFI_INTERNAL_FORMREPRESENTATION_H__\r
\r
+#include <Guid/HiiFormMapMethodGuid.h>\r
+\r
///\r
/// The following types are currently defined:\r
///\r
-typedef UINT32 RELOFST;\r
-\r
typedef VOID* EFI_HII_HANDLE;\r
typedef CHAR16* EFI_STRING;\r
typedef UINT16 EFI_IMAGE_ID;\r
typedef UINT16 EFI_STRING_ID;\r
typedef UINT16 EFI_FORM_ID;\r
typedef UINT16 EFI_VARSTORE_ID;\r
+typedef UINT16 EFI_ANIMATION_ID;\r
+\r
typedef UINT16 EFI_DEFAULT_ID;\r
+\r
typedef UINT32 EFI_HII_FONT_STYLE;\r
\r
\r
\r
#pragma pack(1)\r
\r
+//\r
+// Definitions for Package Lists and Package Headers\r
+// Section 27.3.1\r
+//\r
\r
///\r
-/// HII package list\r
+/// The header found at the start of each package list.\r
///\r
typedef struct {\r
EFI_GUID PackageListGuid;\r
UINT32 PackageLength;\r
} EFI_HII_PACKAGE_LIST_HEADER;\r
\r
-/**\r
- \r
- Each package starts with a header, as defined above, which \r
- indicates the size and type of the package. When added to a \r
- pointer pointing to the start of the header, Length points at \r
- the next package. The package lists form a package list when \r
- concatenated together and terminated with an \r
- EFI_HII_PACKAGE_HEADER with a Type of EFI_HII_PACKAGE_END. The \r
- type EFI_HII_PACKAGE_TYPE_GUID is used for vendor-defined HII \r
- packages, whose contents are determined by the Guid. The range \r
- of package types starting with EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN \r
- through EFI_HII_PACKAGE_TYPE_SYSTEM_END are reserved for system \r
- firmware implementers. \r
- \r
- @param Length The size of the package in bytes.\r
- \r
- @param Type The package type. See EFI_HII_PACKAGE_TYPE_x,\r
- below.\r
- \r
- @param Data The package data, the format of which is\r
- determined by Type.\r
- \r
-**/\r
+///\r
+/// The header found at the start of each package.\r
+///\r
typedef struct {\r
UINT32 Length:24;\r
UINT32 Type:8;\r
} EFI_HII_PACKAGE_HEADER;\r
\r
//\r
-// EFI_HII_PACKAGE_TYPE_x.\r
+// Value of HII package type\r
// \r
#define EFI_HII_PACKAGE_TYPE_ALL 0x00\r
#define EFI_HII_PACKAGE_TYPE_GUID 0x01\r
-#define EFI_HII_PACKAGE_FORM 0x02\r
-#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x03\r
+#define EFI_HII_PACKAGE_FORMS 0x02\r
#define EFI_HII_PACKAGE_STRINGS 0x04\r
#define EFI_HII_PACKAGE_FONTS 0x05\r
#define EFI_HII_PACKAGE_IMAGES 0x06\r
#define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07\r
#define EFI_HII_PACKAGE_DEVICE_PATH 0x08\r
+#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x09\r
+#define EFI_HII_PACKAGE_ANIMATIONS 0x0A\r
#define EFI_HII_PACKAGE_END 0xDF\r
#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0\r
#define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF\r
\r
//\r
-// Simplified Font Package\r
+// Definitions for Simplified Font Package\r
//\r
\r
-#define EFI_GLYPH_HEIGHT 19\r
-#define EFI_GLYPH_WIDTH 8\r
-//\r
-// Contents of EFI_NARROW_GLYPH.Attributes\r
-//\r
+///\r
+/// Contents of EFI_NARROW_GLYPH.Attributes.\r
+///@{\r
#define EFI_GLYPH_NON_SPACING 0x01\r
#define EFI_GLYPH_WIDE 0x02\r
+#define EFI_GLYPH_HEIGHT 19\r
+#define EFI_GLYPH_WIDTH 8\r
+///@}\r
\r
+///\r
+/// The EFI_NARROW_GLYPH has a preferred dimension (w x h) of 8 x 19 pixels.\r
+///\r
typedef struct {\r
+ ///\r
+ /// The Unicode representation of the glyph. The term weight is the \r
+ /// technical term for a character code.\r
+ ///\r
CHAR16 UnicodeWeight;\r
+ ///\r
+ /// The data element containing the glyph definitions.\r
+ ///\r
UINT8 Attributes;\r
+ ///\r
+ /// The column major glyph representation of the character. Bits \r
+ /// with values of one indicate that the corresponding pixel is to be\r
+ /// on when normally displayed; those with zero are off.\r
+ ///\r
UINT8 GlyphCol1[EFI_GLYPH_HEIGHT];\r
} EFI_NARROW_GLYPH;\r
\r
+///\r
+/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough \r
+/// to accommodate logographic characters.\r
+///\r
typedef struct {\r
+ ///\r
+ /// The Unicode representation of the glyph. The term weight is the \r
+ /// technical term for a character code.\r
+ ///\r
CHAR16 UnicodeWeight;\r
+ ///\r
+ /// The data element containing the glyph definitions.\r
+ ///\r
UINT8 Attributes;\r
+ ///\r
+ /// The column major glyph representation of the character. Bits \r
+ /// with values of one indicate that the corresponding pixel is to be \r
+ /// on when normally displayed; those with zero are off.\r
+ ///\r
UINT8 GlyphCol1[EFI_GLYPH_HEIGHT];\r
+ ///\r
+ /// The column major glyph representation of the character. Bits \r
+ /// with values of one indicate that the corresponding pixel is to be \r
+ /// on when normally displayed; those with zero are off.\r
+ ///\r
UINT8 GlyphCol2[EFI_GLYPH_HEIGHT];\r
+ ///\r
+ /// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the \r
+ /// sizeof (EFI_NARROW_GLYPH). The contents of Pad must \r
+ /// be zero.\r
+ ///\r
UINT8 Pad[3];\r
} EFI_WIDE_GLYPH;\r
\r
-\r
+///\r
+/// A simplified font package consists of a font header\r
+/// followed by a series of glyph structures.\r
+///\r
typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {\r
EFI_HII_PACKAGE_HEADER Header;\r
UINT16 NumberOfNarrowGlyphs;\r
} EFI_HII_SIMPLE_FONT_PACKAGE_HDR;\r
\r
//\r
-// Font Package\r
+// Definitions for Font Package\r
+// Section 27.3.3\r
//\r
\r
+//\r
+// Value for font style\r
+//\r
#define EFI_HII_FONT_STYLE_NORMAL 0x00000000\r
#define EFI_HII_FONT_STYLE_BOLD 0x00000001\r
#define EFI_HII_FONT_STYLE_ITALIC 0x00000002\r
INT16 AdvanceX;\r
} EFI_HII_GLYPH_INFO;\r
\r
+///\r
+/// The fixed header consists of a standard record header,\r
+/// then the character values in this section, the flags\r
+/// (including the encoding method) and the offsets of the glyph\r
+/// information, the glyph bitmaps and the character map.\r
+///\r
typedef struct _EFI_HII_FONT_PACKAGE_HDR {\r
EFI_HII_PACKAGE_HEADER Header;\r
UINT32 HdrSize;\r
CHAR16 FontFamily[1];\r
} EFI_HII_FONT_PACKAGE_HDR;\r
\r
+//\r
+// Value of different glyph info block types\r
+//\r
#define EFI_HII_GIBT_END 0x00\r
#define EFI_HII_GIBT_GLYPH 0x10\r
#define EFI_HII_GIBT_GLYPHS 0x11\r
#define EFI_HII_GIBT_GLYPH_DEFAULT 0x12\r
#define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13\r
+#define EFI_HII_GIBT_GLYPH_VARIABILITY 0x14\r
#define EFI_HII_GIBT_DUPLICATE 0x20\r
#define EFI_HII_GIBT_SKIP2 0x21\r
#define EFI_HII_GIBT_SKIP1 0x22\r
UINT8 BlockType;\r
} EFI_HII_GLYPH_BLOCK;\r
\r
+//\r
+// Definition of different glyph info block types\r
+//\r
+\r
typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK {\r
EFI_HII_GLYPH_BLOCK Header;\r
EFI_HII_GLYPH_INFO Cell;\r
typedef struct _EFI_HII_GIBT_GLYPH_BLOCK {\r
EFI_HII_GLYPH_BLOCK Header;\r
EFI_HII_GLYPH_INFO Cell;\r
- UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height\r
+ UINT8 BitmapData[1];\r
} EFI_HII_GIBT_GLYPH_BLOCK;\r
\r
typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK {\r
EFI_HII_GLYPH_BLOCK Header;\r
EFI_HII_GLYPH_INFO Cell;\r
UINT16 Count; \r
- UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height\r
+ UINT8 BitmapData[1];\r
} EFI_HII_GIBT_GLYPHS_BLOCK;\r
\r
typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK {\r
EFI_HII_GLYPH_BLOCK Header;\r
- UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height\r
+ UINT8 BitmapData[1];\r
} EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK;\r
\r
typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {\r
EFI_HII_GLYPH_BLOCK Header;\r
UINT16 Count;\r
- UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height\r
+ UINT8 BitmapData[1];\r
} EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK;\r
\r
+typedef struct _EFI_HII_GIBT_VARIABILITY_BLOCK {\r
+ EFI_HII_GLYPH_BLOCK Header;\r
+ EFI_HII_GLYPH_INFO Cell;\r
+ UINT8 GlyphPackInBits;\r
+ UINT8 BitmapData [1];\r
+} EFI_HII_GIBT_VARIABILITY_BLOCK;\r
+\r
typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {\r
EFI_HII_GLYPH_BLOCK Header;\r
UINT8 SkipCount;\r
} EFI_HII_GIBT_SKIP2_BLOCK;\r
\r
//\r
-// Device Path Package\r
+// Definitions for Device Path Package\r
+// Section 27.3.4\r
//\r
-typedef struct _EFI_HII_DEVICE_PATH_PACKAGE {\r
+\r
+///\r
+/// The device path package is used to carry a device path\r
+/// associated with the package list.\r
+///\r
+typedef struct _EFI_HII_DEVICE_PATH_PACKAGE_HDR {\r
EFI_HII_PACKAGE_HEADER Header;\r
// EFI_DEVICE_PATH_PROTOCOL DevicePath[];\r
-} EFI_HII_DEVICE_PATH_PACKAGE;\r
+} EFI_HII_DEVICE_PATH_PACKAGE_HDR;\r
\r
//\r
-// GUID Package\r
+// Definitions for GUID Package\r
+// Section 27.3.5\r
//\r
+\r
+///\r
+/// The GUID package is used to carry data where the format is defined by a GUID.\r
+///\r
typedef struct _EFI_HII_GUID_PACKAGE_HDR {\r
EFI_HII_PACKAGE_HEADER Header;\r
EFI_GUID Guid;\r
} EFI_HII_GUID_PACKAGE_HDR;\r
\r
//\r
-// String Package\r
+// Definitions for String Package\r
+// Section 27.3.6\r
//\r
\r
-#define UEFI_CONFIG_LANG L"x-UEFI"\r
-#define UEFI_CONFIG_LANG2 L"x-i-UEFI" // BUGBUG, spec need to be updated.\r
+#define UEFI_CONFIG_LANG "x-UEFI"\r
+#define UEFI_CONFIG_LANG_2 "x-i-UEFI"\r
\r
+///\r
+/// The fixed header consists of a standard record header and then the string identifiers\r
+/// contained in this section and the offsets of the string and language information.\r
+///\r
typedef struct _EFI_HII_STRING_PACKAGE_HDR {\r
EFI_HII_PACKAGE_HEADER Header;\r
UINT32 HdrSize;\r
UINT8 BlockType;\r
} EFI_HII_STRING_BLOCK;\r
\r
+//\r
+// Value of different string information block types\r
+//\r
#define EFI_HII_SIBT_END 0x00\r
#define EFI_HII_SIBT_STRING_SCSU 0x10\r
#define EFI_HII_SIBT_STRING_SCSU_FONT 0x11\r
#define EFI_HII_SIBT_EXT4 0x32\r
#define EFI_HII_SIBT_FONT 0x40\r
\r
+//\r
+// Definition of different string information block types\r
+//\r
+\r
typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK {\r
EFI_HII_STRING_BLOCK Header;\r
EFI_STRING_ID StringId;\r
} EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK;\r
\r
//\r
-// Image Packages\r
+// Definitions for Image Package\r
+// Section 27.3.7\r
//\r
\r
typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {\r
UINT8 BlockType;\r
} EFI_HII_IMAGE_BLOCK;\r
\r
+//\r
+// Value of different image information block types\r
+//\r
#define EFI_HII_IIBT_END 0x00\r
#define EFI_HII_IIBT_IMAGE_1BIT 0x10\r
#define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11\r
#define EFI_HII_IIBT_IMAGE_24BIT 0x16\r
#define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17\r
#define EFI_HII_IIBT_IMAGE_JPEG 0x18\r
+#define EFI_HII_IIBT_IMAGE_PNG 0x19\r
#define EFI_HII_IIBT_DUPLICATE 0x20\r
#define EFI_HII_IIBT_SKIP2 0x21\r
#define EFI_HII_IIBT_SKIP1 0x22\r
#define EFI_HII_IIBT_EXT2 0x31\r
#define EFI_HII_IIBT_EXT4 0x32\r
\r
+//\r
+// Definition of different image information block types\r
+//\r
+\r
typedef struct _EFI_HII_IIBT_END_BLOCK {\r
EFI_HII_IMAGE_BLOCK Header;\r
} EFI_HII_IIBT_END_BLOCK;\r
UINT8 Data[1];\r
} EFI_HII_IIBT_JPEG_BLOCK;\r
\r
+typedef struct _EFI_HII_IIBT_PNG_BLOCK {\r
+ EFI_HII_IMAGE_BLOCK Header;\r
+ UINT32 Size;\r
+ UINT8 Data[1];\r
+} EFI_HII_IIBT_PNG_BLOCK;\r
+\r
typedef struct _EFI_HII_IIBT_SKIP1_BLOCK {\r
EFI_HII_IMAGE_BLOCK Header;\r
UINT8 SkipCount;\r
UINT16 SkipCount;\r
} EFI_HII_IIBT_SKIP2_BLOCK;\r
\r
+//\r
+// Definitions for Palette Information\r
+//\r
+\r
typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER {\r
UINT16 PaletteCount;\r
} EFI_HII_IMAGE_PALETTE_INFO_HEADER;\r
} EFI_HII_IMAGE_PALETTE_INFO;\r
\r
//\r
-// Forms Package\r
+// Definitions for Forms Package\r
+// Section 27.3.8\r
//\r
\r
-typedef struct _EFI_HII_FORM_PACKAGE {\r
+///\r
+/// The Form package is used to carry form-based encoding data.\r
+///\r
+typedef struct _EFI_HII_FORM_PACKAGE_HDR {\r
EFI_HII_PACKAGE_HEADER Header;\r
// EFI_IFR_OP_HEADER OpCodeHeader;\r
// More op-codes follow\r
-} EFI_HII_FORM_PACKAGE;\r
+} EFI_HII_FORM_PACKAGE_HDR;\r
\r
typedef struct {\r
UINT8 Hour;\r
UINT8 Day;\r
} EFI_HII_DATE;\r
\r
+typedef struct {\r
+ EFI_QUESTION_ID QuestionId;\r
+ EFI_FORM_ID FormId;\r
+ EFI_GUID FormSetGuid;\r
+ EFI_STRING_ID DevicePath;\r
+} EFI_HII_REF;\r
+\r
typedef union {\r
UINT8 u8;\r
UINT16 u16;\r
BOOLEAN b;\r
EFI_HII_TIME time;\r
EFI_HII_DATE date;\r
- EFI_STRING_ID string;\r
+ EFI_STRING_ID string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION\r
+ EFI_HII_REF ref; ///< EFI_IFR_TYPE_REF\r
+ // UINT8 buffer[]; ///< EFI_IFR_TYPE_BUFFER\r
} EFI_IFR_TYPE_VALUE;\r
\r
//\r
#define EFI_IFR_INCONSISTENT_IF_OP 0x11\r
#define EFI_IFR_EQ_ID_VAL_OP 0x12\r
#define EFI_IFR_EQ_ID_ID_OP 0x13\r
-#define EFI_IFR_EQ_ID_LIST_OP 0x14\r
+#define EFI_IFR_EQ_ID_VAL_LIST_OP 0x14\r
#define EFI_IFR_AND_OP 0x15\r
#define EFI_IFR_OR_OP 0x16\r
#define EFI_IFR_NOT_OP 0x17\r
#define EFI_IFR_STRING_OP 0x1C\r
#define EFI_IFR_REFRESH_OP 0x1D\r
#define EFI_IFR_DISABLE_IF_OP 0x1E\r
+#define EFI_IFR_ANIMATION_OP 0x1F\r
#define EFI_IFR_TO_LOWER_OP 0x20\r
#define EFI_IFR_TO_UPPER_OP 0x21\r
+#define EFI_IFR_MAP_OP 0x22\r
#define EFI_IFR_ORDERED_LIST_OP 0x23\r
#define EFI_IFR_VARSTORE_OP 0x24\r
#define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25\r
#define EFI_IFR_VERSION_OP 0x28\r
#define EFI_IFR_END_OP 0x29\r
#define EFI_IFR_MATCH_OP 0x2A\r
+#define EFI_IFR_GET_OP 0x2B\r
+#define EFI_IFR_SET_OP 0x2C\r
+#define EFI_IFR_READ_OP 0x2D\r
+#define EFI_IFR_WRITE_OP 0x2E\r
#define EFI_IFR_EQUAL_OP 0x2F\r
#define EFI_IFR_NOT_EQUAL_OP 0x30\r
#define EFI_IFR_GREATER_THAN_OP 0x31\r
#define EFI_IFR_VALUE_OP 0x5A\r
#define EFI_IFR_DEFAULT_OP 0x5B\r
#define EFI_IFR_DEFAULTSTORE_OP 0x5C\r
+#define EFI_IFR_FORM_MAP_OP 0x5D\r
#define EFI_IFR_CATENATE_OP 0x5E\r
#define EFI_IFR_GUID_OP 0x5F\r
+#define EFI_IFR_SECURITY_OP 0x60\r
+#define EFI_IFR_MODAL_TAG_OP 0x61\r
+#define EFI_IFR_REFRESH_ID_OP 0x62\r
+#define EFI_IFR_WARNING_IF_OP 0x63\r
+#define EFI_IFR_MATCH2_OP 0x64\r
\r
+//\r
+// Definitions of IFR Standard Headers\r
+// Section 27.3.8.2\r
+//\r
\r
typedef struct _EFI_IFR_OP_HEADER {\r
UINT8 OpCode;\r
UINT8 Flags;\r
} EFI_IFR_QUESTION_HEADER;\r
\r
-#define EFI_IFR_FLAG_READ_ONLY 0x01\r
-#define EFI_IFR_FLAG_CALLBACK 0x04\r
-#define EFI_IFR_FLAG_RESET_REQUIRED 0x10\r
-#define EFI_IFR_FLAG_OPTIONS_ONLY 0x80\r
+//\r
+// Flag values of EFI_IFR_QUESTION_HEADER\r
+//\r
+#define EFI_IFR_FLAG_READ_ONLY 0x01\r
+#define EFI_IFR_FLAG_CALLBACK 0x04\r
+#define EFI_IFR_FLAG_RESET_REQUIRED 0x10\r
+#define EFI_IFR_FLAG_RECONNECT_REQUIRED 0x40\r
+#define EFI_IFR_FLAG_OPTIONS_ONLY 0x80\r
\r
+//\r
+// Definition for Opcode Reference\r
+// Section 27.3.8.3\r
+//\r
typedef struct _EFI_IFR_DEFAULTSTORE {\r
EFI_IFR_OP_HEADER Header;\r
EFI_STRING_ID DefaultName;\r
UINT16 DefaultId;\r
} EFI_IFR_DEFAULTSTORE;\r
\r
+//\r
+// Default Identifier of default store \r
+//\r
#define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000\r
#define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001\r
#define EFI_HII_DEFAULT_CLASS_SAFE 0x0002\r
EFI_VARSTORE_ID VarStoreId;\r
EFI_GUID Guid;\r
UINT32 Attributes;\r
+ UINT16 Size;\r
+ UINT8 Name[1];\r
} EFI_IFR_VARSTORE_EFI;\r
\r
typedef struct _EFI_IFR_VARSTORE_NAME_VALUE {\r
EFI_GUID Guid;\r
EFI_STRING_ID FormSetTitle;\r
EFI_STRING_ID Help;\r
+ UINT8 Flags;\r
+ // EFI_GUID ClassGuid[];\r
} EFI_IFR_FORM_SET;\r
\r
typedef struct _EFI_IFR_END {\r
EFI_IMAGE_ID Id;\r
} EFI_IFR_IMAGE;\r
\r
+typedef struct _EFI_IFR_MODAL_TAG {\r
+ EFI_IFR_OP_HEADER Header;\r
+} EFI_IFR_MODAL_TAG;\r
+\r
typedef struct _EFI_IFR_LOCKED {\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_LOCKED;\r
EFI_IFR_TYPE_VALUE Value;\r
} EFI_IFR_DEFAULT;\r
\r
+typedef struct _EFI_IFR_DEFAULT_2 {\r
+ EFI_IFR_OP_HEADER Header;\r
+ UINT16 DefaultId;\r
+ UINT8 Type;\r
+} EFI_IFR_DEFAULT_2;\r
+\r
typedef struct _EFI_IFR_VALUE {\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_VALUE;\r
EFI_STRING_ID DevicePath;\r
} EFI_IFR_REF4;\r
\r
+typedef struct _EFI_IFR_REF5 {\r
+ EFI_IFR_OP_HEADER Header;\r
+ EFI_IFR_QUESTION_HEADER Question;\r
+} EFI_IFR_REF5;\r
+\r
typedef struct _EFI_IFR_RESET_BUTTON {\r
EFI_IFR_OP_HEADER Header;\r
- EFI_IFR_QUESTION_HEADER Question;\r
+ EFI_IFR_STATEMENT_HEADER Statement;\r
EFI_DEFAULT_ID DefaultId;\r
} EFI_IFR_RESET_BUTTON;\r
\r
UINT8 Flags;\r
} EFI_IFR_DATE;\r
\r
+//\r
+// Flags that describe the behavior of the question.\r
+//\r
#define EFI_QF_DATE_YEAR_SUPPRESS 0x01\r
#define EFI_QF_DATE_MONTH_SUPPRESS 0x02\r
#define EFI_QF_DATE_DAY_SUPPRESS 0x04\r
MINMAXSTEP_DATA data;\r
} EFI_IFR_NUMERIC;\r
\r
+//\r
+// Flags related to the numeric question\r
+//\r
#define EFI_IFR_NUMERIC_SIZE 0x03\r
-#define EFI_IFR_NUMERIC_SIZE_1 0x00\r
-#define EFI_IFR_NUMERIC_SIZE_2 0x01\r
-#define EFI_IFR_NUMERIC_SIZE_4 0x02\r
-#define EFI_IFR_NUMERIC_SIZE_8 0x03\r
+#define EFI_IFR_NUMERIC_SIZE_1 0x00\r
+#define EFI_IFR_NUMERIC_SIZE_2 0x01\r
+#define EFI_IFR_NUMERIC_SIZE_4 0x02\r
+#define EFI_IFR_NUMERIC_SIZE_8 0x03\r
\r
#define EFI_IFR_DISPLAY 0x30\r
-#define EFI_IFR_DISPLAY_INT_DEC 0x00\r
-#define EFI_IFR_DISPLAY_UINT_DEC 0x10\r
-#define EFI_IFR_DISPLAY_UINT_HEX 0x20\r
+#define EFI_IFR_DISPLAY_INT_DEC 0x00\r
+#define EFI_IFR_DISPLAY_UINT_DEC 0x10\r
+#define EFI_IFR_DISPLAY_UINT_HEX 0x20\r
\r
typedef struct _EFI_IFR_ONE_OF {\r
EFI_IFR_OP_HEADER Header;\r
UINT8 Flags;\r
} EFI_IFR_TIME;\r
\r
+//\r
+// A bit-mask that determines which unique settings are active for this opcode.\r
+//\r
#define QF_TIME_HOUR_SUPPRESS 0x01\r
#define QF_TIME_MINUTE_SUPPRESS 0x02\r
#define QF_TIME_SECOND_SUPPRESS 0x04\r
\r
#define QF_TIME_STORAGE 0x30\r
-#define QF_TIME_STORAGE_NORMAL 0x00\r
-#define QF_TIME_STORAGE_TIME 0x10\r
-#define QF_TIME_STORAGE_WAKEUP 0x20\r
+#define QF_TIME_STORAGE_NORMAL 0x00\r
+#define QF_TIME_STORAGE_TIME 0x10\r
+#define QF_TIME_STORAGE_WAKEUP 0x20\r
\r
typedef struct _EFI_IFR_DISABLE_IF {\r
EFI_IFR_OP_HEADER Header;\r
EFI_STRING_ID Error;\r
} EFI_IFR_NO_SUBMIT_IF;\r
\r
+typedef struct _EFI_IFR_WARNING_IF {\r
+ EFI_IFR_OP_HEADER Header;\r
+ EFI_STRING_ID Warning;\r
+ UINT8 TimeOut;\r
+} EFI_IFR_WARNING_IF;\r
+\r
typedef struct _EFI_IFR_REFRESH {\r
EFI_IFR_OP_HEADER Header;\r
UINT8 RefreshInterval;\r
EFI_IFR_TYPE_VALUE Value;\r
} EFI_IFR_ONE_OF_OPTION;\r
\r
+//\r
+// Types of the option's value.\r
+//\r
#define EFI_IFR_TYPE_NUM_SIZE_8 0x00\r
#define EFI_IFR_TYPE_NUM_SIZE_16 0x01\r
#define EFI_IFR_TYPE_NUM_SIZE_32 0x02\r
#define EFI_IFR_TYPE_DATE 0x06\r
#define EFI_IFR_TYPE_STRING 0x07\r
#define EFI_IFR_TYPE_OTHER 0x08\r
+#define EFI_IFR_TYPE_UNDEFINED 0x09\r
+#define EFI_IFR_TYPE_ACTION 0x0A\r
+#define EFI_IFR_TYPE_BUFFER 0x0B\r
+#define EFI_IFR_TYPE_REF 0x0C\r
\r
#define EFI_IFR_OPTION_DEFAULT 0x10\r
#define EFI_IFR_OPTION_DEFAULT_MFG 0x20\r
//Optional Data Follows\r
} EFI_IFR_GUID;\r
\r
+typedef struct _EFI_IFR_REFRESH_ID {\r
+ EFI_IFR_OP_HEADER Header;\r
+ EFI_GUID RefreshEventGroupId;\r
+} EFI_IFR_REFRESH_ID;\r
+\r
typedef struct _EFI_IFR_DUP {\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_DUP;\r
UINT16 Value;\r
} EFI_IFR_EQ_ID_VAL;\r
\r
-typedef struct _EFI_IFR_EQ_ID_LIST {\r
+typedef struct _EFI_IFR_EQ_ID_VAL_LIST {\r
EFI_IFR_OP_HEADER Header;\r
EFI_QUESTION_ID QuestionId;\r
UINT16 ListLength;\r
UINT16 ValueList[1];\r
-} EFI_IFR_EQ_ID_LIST;\r
-\r
-typedef struct _EFI_IFR_QUESTION_REF1 {\r
- EFI_IFR_OP_HEADER Header;\r
- EFI_QUESTION_ID QuestionId;\r
-} EFI_IFR_QUESTION_REF1;\r
+} EFI_IFR_EQ_ID_VAL_LIST;\r
\r
typedef struct _EFI_IFR_UINT8 {\r
EFI_IFR_OP_HEADER Header;\r
UINT16 Value;\r
} EFI_IFR_UINT16;\r
\r
-typedef struct _EFI_IFR_QUESTION_REF2 {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_QUESTION_REF2;\r
-\r
typedef struct _EFI_IFR_UINT32 {\r
EFI_IFR_OP_HEADER Header;\r
UINT32 Value;\r
UINT64 Value;\r
} EFI_IFR_UINT64;\r
\r
+typedef struct _EFI_IFR_QUESTION_REF1 {\r
+ EFI_IFR_OP_HEADER Header;\r
+ EFI_QUESTION_ID QuestionId;\r
+} EFI_IFR_QUESTION_REF1;\r
+\r
+typedef struct _EFI_IFR_QUESTION_REF2 {\r
+ EFI_IFR_OP_HEADER Header;\r
+} EFI_IFR_QUESTION_REF2;\r
+\r
typedef struct _EFI_IFR_QUESTION_REF3 {\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_QUESTION_REF3;\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_TO_BOOLEAN;\r
\r
+///\r
+/// For EFI_IFR_TO_STRING, when converting from\r
+/// unsigned integers, these flags control the format:\r
+/// 0 = unsigned decimal.\r
+/// 1 = signed decimal.\r
+/// 2 = hexadecimal (lower-case alpha).\r
+/// 3 = hexadecimal (upper-case alpha).\r
+///@{\r
#define EFI_IFR_STRING_UNSIGNED_DEC 0\r
#define EFI_IFR_STRING_SIGNED_DEC 1\r
#define EFI_IFR_STRING_LOWERCASE_HEX 2\r
#define EFI_IFR_STRING_UPPERCASE_HEX 3\r
+///@}\r
\r
+///\r
+/// When converting from a buffer, these flags control the format:\r
+/// 0 = ASCII.\r
+/// 8 = Unicode.\r
+///@{\r
#define EFI_IFR_STRING_ASCII 0\r
#define EFI_IFR_STRING_UNICODE 8\r
+///@}\r
\r
typedef struct _EFI_IFR_TO_STRING {\r
EFI_IFR_OP_HEADER Header;\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_MATCH;\r
\r
+typedef struct _EFI_IFR_MATCH2 {\r
+ EFI_IFR_OP_HEADER Header;\r
+ EFI_GUID SyntaxType;\r
+} EFI_IFR_MATCH2;\r
+\r
typedef struct _EFI_IFR_MULTIPLY {\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_MULTIPLY;\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_CONDITIONAL;\r
\r
+//\r
+// Flags governing the matching criteria of EFI_IFR_FIND\r
+//\r
#define EFI_IFR_FF_CASE_SENSITIVE 0x00\r
#define EFI_IFR_FF_CASE_INSENSITIVE 0x01\r
\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_TOKEN;\r
\r
+//\r
+// Flags specifying whether to find the first matching string\r
+// or the first non-matching string.\r
+//\r
#define EFI_IFR_FLAGS_FIRST_MATCHING 0x00\r
#define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01\r
\r
UINT8 Flags;\r
} EFI_IFR_SPAN;\r
\r
+typedef struct _EFI_IFR_SECURITY {\r
+ ///\r
+ /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.\r
+ ///\r
+ EFI_IFR_OP_HEADER Header;\r
+ ///\r
+ /// Security permission level.\r
+ ///\r
+ EFI_GUID Permissions;\r
+} EFI_IFR_SECURITY;\r
+\r
+typedef struct _EFI_IFR_FORM_MAP_METHOD {\r
+ ///\r
+ /// The string identifier which provides the human-readable name of \r
+ /// the configuration method for this standards map form.\r
+ ///\r
+ EFI_STRING_ID MethodTitle;\r
+ ///\r
+ /// Identifier which uniquely specifies the configuration methods \r
+ /// associated with this standards map form.\r
+ ///\r
+ EFI_GUID MethodIdentifier;\r
+} EFI_IFR_FORM_MAP_METHOD;\r
+\r
+typedef struct _EFI_IFR_FORM_MAP {\r
+ ///\r
+ /// The sequence that defines the type of opcode as well as the length \r
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP. \r
+ ///\r
+ EFI_IFR_OP_HEADER Header;\r
+ ///\r
+ /// The unique identifier for this particular form.\r
+ ///\r
+ EFI_FORM_ID FormId;\r
+ ///\r
+ /// One or more configuration method's name and unique identifier.\r
+ ///\r
+ // EFI_IFR_FORM_MAP_METHOD Methods[];\r
+} EFI_IFR_FORM_MAP;\r
+\r
+typedef struct _EFI_IFR_SET {\r
+ ///\r
+ /// The sequence that defines the type of opcode as well as the length \r
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP. \r
+ ///\r
+ EFI_IFR_OP_HEADER Header;\r
+ ///\r
+ /// Specifies the identifier of a previously declared variable store to \r
+ /// use when storing the question's value. \r
+ ///\r
+ EFI_VARSTORE_ID VarStoreId;\r
+ union {\r
+ ///\r
+ /// A 16-bit Buffer Storage offset.\r
+ ///\r
+ EFI_STRING_ID VarName;\r
+ ///\r
+ /// A Name Value or EFI Variable name (VarName).\r
+ ///\r
+ UINT16 VarOffset;\r
+ } VarStoreInfo;\r
+ ///\r
+ /// Specifies the type used for storage. \r
+ ///\r
+ UINT8 VarStoreType;\r
+} EFI_IFR_SET;\r
+\r
+typedef struct _EFI_IFR_GET {\r
+ ///\r
+ /// The sequence that defines the type of opcode as well as the length \r
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP. \r
+ ///\r
+ EFI_IFR_OP_HEADER Header;\r
+ ///\r
+ /// Specifies the identifier of a previously declared variable store to \r
+ /// use when retrieving the value. \r
+ ///\r
+ EFI_VARSTORE_ID VarStoreId;\r
+ union {\r
+ ///\r
+ /// A 16-bit Buffer Storage offset.\r
+ ///\r
+ EFI_STRING_ID VarName;\r
+ ///\r
+ /// A Name Value or EFI Variable name (VarName).\r
+ ///\r
+ UINT16 VarOffset;\r
+ } VarStoreInfo;\r
+ ///\r
+ /// Specifies the type used for storage. \r
+ ///\r
+ UINT8 VarStoreType;\r
+} EFI_IFR_GET;\r
+\r
+typedef struct _EFI_IFR_READ {\r
+ EFI_IFR_OP_HEADER Header;\r
+} EFI_IFR_READ;\r
+\r
+typedef struct _EFI_IFR_WRITE {\r
+ EFI_IFR_OP_HEADER Header;\r
+} EFI_IFR_WRITE;\r
+\r
+typedef struct _EFI_IFR_MAP {\r
+ EFI_IFR_OP_HEADER Header;\r
+} EFI_IFR_MAP;\r
//\r
-// Keyboard Package\r
+// Definitions for Keyboard Package\r
+// Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL\r
//\r
\r
+///\r
+/// Each enumeration values maps a physical key on a keyboard.\r
+///\r
typedef enum { \r
EfiKeyLCtrl,\r
EfiKeyA0, \r
} EFI_KEY;\r
\r
typedef struct {\r
+ ///\r
+ /// Used to describe a physical key on a keyboard.\r
+ ///\r
EFI_KEY Key;\r
+ ///\r
+ /// Unicode character code for the Key.\r
+ ///\r
CHAR16 Unicode;\r
+ ///\r
+ /// Unicode character code for the key with the shift key being held down.\r
+ ///\r
CHAR16 ShiftedUnicode;\r
+ ///\r
+ /// Unicode character code for the key with the Alt-GR being held down.\r
+ ///\r
CHAR16 AltGrUnicode;\r
+ ///\r
+ /// Unicode character code for the key with the Alt-GR and shift keys being held down.\r
+ ///\r
CHAR16 ShiftedAltGrUnicode;\r
+ ///\r
+ /// Modifier keys are defined to allow for special functionality that is not necessarily \r
+ /// accomplished by a printable character. Many of these modifier keys are flags to toggle \r
+ /// certain state bits on and off inside of a keyboard driver.\r
+ ///\r
UINT16 Modifier;\r
UINT16 AffectedAttribute;\r
} EFI_KEY_DESCRIPTOR;\r
///\r
/// This key is affected by the caps lock so that if a keyboard driver\r
/// would need to disambiguate between a key which had a "1" defined\r
-/// versus a "a" character. Having this bit turned on would tell\r
+/// versus an "a" character. Having this bit turned on would tell\r
/// the keyboard driver to use the appropriate shifted state or not.\r
///\r
#define EFI_AFFECTED_BY_CAPS_LOCK 0x0002\r
// EFI_HII_KEYBOARD_LAYOUT Layout[];\r
} EFI_HII_KEYBOARD_PACKAGE_HDR;\r
\r
-//typedef struct {\r
-// CHAR16 Language[]; // RFC4646 Language Code\r
-// CHAR16 Space;\r
-// CHAR16 DescriptionString[];\r
-//} EFI_DESCRIPTION_STRING;\r
-\r
-//typedef struct {\r
-// UINT16 DescriptionCount;\r
-// EFI_DESCRIPTION_STRING DescriptionString[];\r
-//} EFI_DESCRIPTION_STRING_BUNDLE;\r
-\r
//\r
// Modifier values\r
//\r
//\r
// Keys that have multiple control functions based on modifier\r
// settings are handled in the keyboard driver implementation.\r
-// For instance PRINT_KEY might have a modifier held down and\r
+// For instance, PRINT_KEY might have a modifier held down and\r
// is still a nonprinting character, but might have an alternate\r
// control function like SYSREQUEST\r
//\r
#define EFI_RIGHT_LOGO_MODIFIER 0x0028\r
#define EFI_MENU_MODIFIER 0x0029\r
\r
+///\r
+/// Animation IFR opcode\r
+///\r
+typedef struct _EFI_IFR_ANIMATION {\r
+ ///\r
+ /// Standard opcode header, where Header.OpCode is \r
+ /// EFI_IFR_ANIMATION_OP.\r
+ ///\r
+ EFI_IFR_OP_HEADER Header;\r
+ ///\r
+ /// Animation identifier in the HII database.\r
+ ///\r
+ EFI_ANIMATION_ID Id;\r
+} EFI_IFR_ANIMATION;\r
+\r
+///\r
+/// HII animation package header.\r
+///\r
+typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR {\r
+ ///\r
+ /// Standard package header, where Header.Type = EFI_HII_PACKAGE_ANIMATIONS.\r
+ ///\r
+ EFI_HII_PACKAGE_HEADER Header;\r
+ ///\r
+ /// Offset, relative to this header, of the animation information. If \r
+ /// this is zero, then there are no animation sequences in the package.\r
+ ///\r
+ UINT32 AnimationInfoOffset;\r
+} EFI_HII_ANIMATION_PACKAGE_HDR;\r
+\r
+///\r
+/// Animation information is encoded as a series of blocks,\r
+/// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK.\r
+///\r
+typedef struct _EFI_HII_ANIMATION_BLOCK {\r
+ UINT8 BlockType;\r
+ //UINT8 BlockBody[];\r
+} EFI_HII_ANIMATION_BLOCK;\r
+\r
+///\r
+/// Animation block types.\r
+///\r
+#define EFI_HII_AIBT_END 0x00\r
+#define EFI_HII_AIBT_OVERLAY_IMAGES 0x10\r
+#define EFI_HII_AIBT_CLEAR_IMAGES 0x11\r
+#define EFI_HII_AIBT_RESTORE_SCRN 0x12\r
+#define EFI_HII_AIBT_OVERLAY_IMAGES_LOOP 0x18\r
+#define EFI_HII_AIBT_CLEAR_IMAGES_LOOP 0x19\r
+#define EFI_HII_AIBT_RESTORE_SCRN_LOOP 0x1A\r
+#define EFI_HII_AIBT_DUPLICATE 0x20\r
+#define EFI_HII_AIBT_SKIP2 0x21\r
+#define EFI_HII_AIBT_SKIP1 0x22\r
+#define EFI_HII_AIBT_EXT1 0x30\r
+#define EFI_HII_AIBT_EXT2 0x31\r
+#define EFI_HII_AIBT_EXT4 0x32\r
+\r
+///\r
+/// Extended block headers used for variable sized animation records\r
+/// which need an explicit length.\r
+///\r
+\r
+typedef struct _EFI_HII_AIBT_EXT1_BLOCK {\r
+ ///\r
+ /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1.\r
+ ///\r
+ EFI_HII_ANIMATION_BLOCK Header;\r
+ ///\r
+ /// The block type.\r
+ ///\r
+ UINT8 BlockType2;\r
+ ///\r
+ /// Size of the animation block, in bytes, including the animation block header.\r
+ ///\r
+ UINT8 Length;\r
+} EFI_HII_AIBT_EXT1_BLOCK;\r
+\r
+typedef struct _EFI_HII_AIBT_EXT2_BLOCK {\r
+ ///\r
+ /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2.\r
+ ///\r
+ EFI_HII_ANIMATION_BLOCK Header;\r
+ ///\r
+ /// The block type\r
+ ///\r
+ UINT8 BlockType2;\r
+ ///\r
+ /// Size of the animation block, in bytes, including the animation block header.\r
+ ///\r
+ UINT16 Length;\r
+} EFI_HII_AIBT_EXT2_BLOCK;\r
+\r
+typedef struct _EFI_HII_AIBT_EXT4_BLOCK {\r
+ ///\r
+ /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4.\r
+ ///\r
+ EFI_HII_ANIMATION_BLOCK Header;\r
+ ///\r
+ /// The block type\r
+ ///\r
+ UINT8 BlockType2;\r
+ ///\r
+ /// Size of the animation block, in bytes, including the animation block header.\r
+ ///\r
+ UINT32 Length;\r
+} EFI_HII_AIBT_EXT4_BLOCK;\r
+\r
+typedef struct _EFI_HII_ANIMATION_CELL {\r
+ ///\r
+ /// The X offset from the upper left hand corner of the logical \r
+ /// window to position the indexed image.\r
+ ///\r
+ UINT16 OffsetX;\r
+ ///\r
+ /// The Y offset from the upper left hand corner of the logical \r
+ /// window to position the indexed image.\r
+ ///\r
+ UINT16 OffsetY;\r
+ ///\r
+ /// The image to display at the specified offset from the upper left \r
+ /// hand corner of the logical window.\r
+ ///\r
+ EFI_IMAGE_ID ImageId;\r
+ ///\r
+ /// The number of milliseconds to delay after displaying the indexed \r
+ /// image and before continuing on to the next linked image. If value \r
+ /// is zero, no delay.\r
+ ///\r
+ UINT16 Delay;\r
+} EFI_HII_ANIMATION_CELL;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that does not cycle, and\r
+/// where one image is simply displayed over the previous image.\r
+///\r
+typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK {\r
+ ///\r
+ /// This is image that is to be reference by the image protocols, if the \r
+ /// animation function is not supported or disabled. This image can \r
+ /// be one particular image from the animation sequence (if any one \r
+ /// of the animation frames has a complete image) or an alternate \r
+ /// image that can be displayed alone. If the value is zero, no image \r
+ /// is displayed.\r
+ ///\r
+ EFI_IMAGE_ID DftImageId;\r
+ ///\r
+ /// The overall width of the set of images (logical window width).\r
+ ///\r
+ UINT16 Width;\r
+ ///\r
+ /// The overall height of the set of images (logical window height).\r
+ ///\r
+ UINT16 Height;\r
+ ///\r
+ /// The number of EFI_HII_ANIMATION_CELL contained in the \r
+ /// animation sequence.\r
+ ///\r
+ UINT16 CellCount;\r
+ ///\r
+ /// An array of CellCount animation cells.\r
+ ///\r
+ EFI_HII_ANIMATION_CELL AnimationCell[1];\r
+} EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that does not cycle,\r
+/// and where the logical window is cleared to the specified color before \r
+/// the next image is displayed.\r
+///\r
+typedef struct _EFI_HII_AIBT_CLEAR_IMAGES_BLOCK {\r
+ ///\r
+ /// This is image that is to be reference by the image protocols, if the \r
+ /// animation function is not supported or disabled. This image can \r
+ /// be one particular image from the animation sequence (if any one \r
+ /// of the animation frames has a complete image) or an alternate \r
+ /// image that can be displayed alone. If the value is zero, no image \r
+ /// is displayed.\r
+ ///\r
+ EFI_IMAGE_ID DftImageId;\r
+ ///\r
+ /// The overall width of the set of images (logical window width).\r
+ ///\r
+ UINT16 Width;\r
+ ///\r
+ /// The overall height of the set of images (logical window height).\r
+ ///\r
+ UINT16 Height;\r
+ ///\r
+ /// The number of EFI_HII_ANIMATION_CELL contained in the \r
+ /// animation sequence.\r
+ ///\r
+ UINT16 CellCount;\r
+ ///\r
+ /// The color to clear the logical window to before displaying the \r
+ /// indexed image.\r
+ ///\r
+ EFI_HII_RGB_PIXEL BackgndColor;\r
+ ///\r
+ /// An array of CellCount animation cells.\r
+ ///\r
+ EFI_HII_ANIMATION_CELL AnimationCell[1];\r
+} EFI_HII_AIBT_CLEAR_IMAGES_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that does not cycle,\r
+/// and where the screen is restored to the original state before the next \r
+/// image is displayed.\r
+///\r
+typedef struct _EFI_HII_AIBT_RESTORE_SCRN_BLOCK {\r
+ ///\r
+ /// This is image that is to be reference by the image protocols, if the \r
+ /// animation function is not supported or disabled. This image can \r
+ /// be one particular image from the animation sequence (if any one \r
+ /// of the animation frames has a complete image) or an alternate \r
+ /// image that can be displayed alone. If the value is zero, no image \r
+ /// is displayed.\r
+ ///\r
+ EFI_IMAGE_ID DftImageId;\r
+ ///\r
+ /// The overall width of the set of images (logical window width).\r
+ ///\r
+ UINT16 Width;\r
+ ///\r
+ /// The overall height of the set of images (logical window height).\r
+ ///\r
+ UINT16 Height;\r
+ ///\r
+ /// The number of EFI_HII_ANIMATION_CELL contained in the \r
+ /// animation sequence.\r
+ ///\r
+ UINT16 CellCount;\r
+ ///\r
+ /// An array of CellCount animation cells.\r
+ ///\r
+ EFI_HII_ANIMATION_CELL AnimationCell[1];\r
+} EFI_HII_AIBT_RESTORE_SCRN_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that continuously cycles,\r
+/// and where one image is simply displayed over the previous image.\r
+///\r
+typedef EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK EFI_HII_AIBT_OVERLAY_IMAGES_LOOP_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that continuously cycles,\r
+/// and where the logical window is cleared to the specified color before \r
+/// the next image is displayed.\r
+///\r
+typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that continuously cycles,\r
+/// and where the screen is restored to the original state before \r
+/// the next image is displayed.\r
+///\r
+typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK;\r
+\r
+///\r
+/// Assigns a new character value to a previously defined animation sequence.\r
+///\r
+typedef struct _EFI_HII_AIBT_DUPLICATE_BLOCK {\r
+ ///\r
+ /// The previously defined animation ID with the exact same \r
+ /// animation information.\r
+ ///\r
+ EFI_ANIMATION_ID AnimationId;\r
+} EFI_HII_AIBT_DUPLICATE_BLOCK;\r
+\r
+///\r
+/// Skips animation IDs.\r
+///\r
+typedef struct _EFI_HII_AIBT_SKIP1_BLOCK {\r
+ ///\r
+ /// The unsigned 8-bit value to add to AnimationIdCurrent.\r
+ ///\r
+ UINT8 SkipCount;\r
+} EFI_HII_AIBT_SKIP1_BLOCK;\r
+\r
+///\r
+/// Skips animation IDs.\r
+///\r
+typedef struct _EFI_HII_AIBT_SKIP2_BLOCK {\r
+ ///\r
+ /// The unsigned 16-bit value to add to AnimationIdCurrent.\r
+ ///\r
+ UINT16 SkipCount;\r
+} EFI_HII_AIBT_SKIP2_BLOCK;\r
+\r
#pragma pack()\r
\r
\r
///\r
#define STRING_TOKEN(t) t\r
\r
+///\r
+/// IMAGE_TOKEN is not defined in UEFI specification. But it is placed\r
+/// here for the easy access by C files and VFR source files.\r
+///\r
+#define IMAGE_TOKEN(t) t\r
+\r
#endif\r