/** @file
This file defines the encoding for the VFR (Visual Form Representation) language.
IFR is primarily consumed by the EFI presentation engine, and produced by EFI
internal application and drivers as well as all add-in card option-ROM drivers
Copyright (c) 2006 - 2010, 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
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
@par Revision Reference:
These definitions are from UEFI 2.1 and 2.2.
**/
#include <Guid/HiiFormMapMethodGuid.h>
///
/// The following types are currently defined:
///
#pragma pack(1)
//
// Definitions for Package Lists and Package Headers
// Section 27.3.1
//
///
/// The header found at the start of each package list.
///
typedef struct {
///
/// The header found at the start of each package.
///
typedef struct {
// UINT8 Data[...];
//
// Value of HII package type
//
//
// Definitions for Simplified Font Package
//
///
/// Contents of EFI_NARROW_GLYPH.Attributes.
///@{
///@}
///
/// The EFI_NARROW_GLYPH has a preferred dimension (w x h) of 8 x 19 pixels.
///
typedef struct {
///
/// The Unicode representation of the glyph. The term weight is the
/// technical term for a character code.
///
///
/// The data element containing the glyph definitions.
///
///
/// The column major glyph representation of the character. Bits
/// with values of one indicate that the corresponding pixel is to be
/// on when normally displayed; those with zero are off.
///
///
/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough
/// to accommodate logographic characters.
///
typedef struct {
///
/// The Unicode representation of the glyph. The term weight is the
/// technical term for a character code.
///
///
/// The data element containing the glyph definitions.
///
///
/// The column major glyph representation of the character. Bits
/// with values of one indicate that the corresponding pixel is to be
/// on when normally displayed; those with zero are off.
///
///
/// The column major glyph representation of the character. Bits
/// with values of one indicate that the corresponding pixel is to be
/// on when normally displayed; those with zero are off.
///
///
/// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the
/// sizeof (EFI_NARROW_GLYPH). The contents of Pad must
/// be zero.
///
///
/// A simplified font package consists of a font header
/// followed by a series of glyph structures.
///
typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {
// EFI_NARROW_GLYPH NarrowGlyphs[];
// EFI_WIDE_GLYPH WideGlyphs[];
//
// Definitions for Font Package
// Section 27.3.3
//
//
// Value for font style
//
typedef struct _EFI_HII_GLYPH_INFO {
///
/// The fixed header consists of a standard record header,
/// then the character values in this section, the flags
/// (including the encoding method) and the offsets of the glyph
/// information, the glyph bitmaps and the character map.
///
typedef struct _EFI_HII_FONT_PACKAGE_HDR {
//
// Value of different glyph info block types
//
typedef struct _EFI_HII_GLYPH_BLOCK {
//
// Definition of different glyph info block types
//
typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK {
typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK {
typedef struct _EFI_GLYPH_GIBT_END_BLOCK {
typedef struct _EFI_HII_GIBT_EXT1_BLOCK {
typedef struct _EFI_HII_GIBT_EXT2_BLOCK {
typedef struct _EFI_HII_GIBT_EXT4_BLOCK {
typedef struct _EFI_HII_GIBT_GLYPH_BLOCK {
typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK {
typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK {
typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {
typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {
typedef struct _EFI_HII_GIBT_SKIP2_BLOCK {
//
// Definitions for Device Path Package
// Section 27.3.4
//
///
/// The device path package is used to carry a device path
/// associated with the package list.
///
typedef struct _EFI_HII_DEVICE_PATH_PACKAGE_HDR {
// EFI_DEVICE_PATH_PROTOCOL DevicePath[];
//
// Definitions for GUID Package
// Section 27.3.5
//
///
/// The GUID package is used to carry data where the format is defined by a GUID.
///
typedef struct _EFI_HII_GUID_PACKAGE_HDR {
// Data per GUID definition may follow
//
// Definitions for String Package
// Section 27.3.6
//
///
/// The fixed header consists of a standard record header and then the string identifiers
/// contained in this section and the offsets of the string and language information.
///
typedef struct _EFI_HII_STRING_PACKAGE_HDR {
typedef struct {
//
// Value of different string information block types
//
//
// Definition of different string information block types
//
typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK {
typedef struct _EFI_HII_SIBT_END_BLOCK {
typedef struct _EFI_HII_SIBT_EXT1_BLOCK {
typedef struct _EFI_HII_SIBT_EXT2_BLOCK {
typedef struct _EFI_HII_SIBT_EXT4_BLOCK {
typedef struct _EFI_HII_SIBT_FONT_BLOCK {
typedef struct _EFI_HII_SIBT_SKIP1_BLOCK {
typedef struct _EFI_HII_SIBT_SKIP2_BLOCK {
typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK {
typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK {
typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK {
typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK {
typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK {
typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK {
typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK {
typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK {
//
// Definitions for Image Package
// Section 27.3.7
//
typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {
typedef struct _EFI_HII_IMAGE_BLOCK {
//
// Value of different image information block types
//
//
// Definition of different image information block types
//
typedef struct _EFI_HII_IIBT_END_BLOCK {
typedef struct _EFI_HII_IIBT_EXT1_BLOCK {
typedef struct _EFI_HII_IIBT_EXT2_BLOCK {
typedef struct _EFI_HII_IIBT_EXT4_BLOCK {
typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE {
typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK {
typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK {
typedef struct _EFI_HII_RGB_PIXEL {
UINT8 b;
UINT8 g;
UINT8 r;
typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE {
typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK {
typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK {
typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE {
typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK {
typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK {
typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE {
typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK {
typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK {
typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK {
typedef struct _EFI_HII_IIBT_JPEG_BLOCK {
typedef struct _EFI_HII_IIBT_SKIP1_BLOCK {
typedef struct _EFI_HII_IIBT_SKIP2_BLOCK {
//
// Definitions for Palette Information
//
typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER {
typedef struct _EFI_HII_IMAGE_PALETTE_INFO {
//
// Definitions for Forms Package
// Section 27.3.8
//
///
/// The Form package is used to carry form-based encoding data.
///
typedef struct _EFI_HII_FORM_PACKAGE_HDR {
// EFI_IFR_OP_HEADER OpCodeHeader;
// More op-codes follow
typedef struct {
} EFI_HII_TIME;
typedef struct {
} EFI_HII_DATE;
typedef struct {
} EFI_HII_REF;
typedef union {
BOOLEAN b;
// UINT8 buffer[]; ///< EFI_IFR_TYPE_ORDERED_LIST
//
// IFR Opcodes
//
//
// Definitions of IFR Standard Headers
// Section 27.3.8.2
//
typedef struct _EFI_IFR_OP_HEADER {
typedef struct _EFI_IFR_STATEMENT_HEADER {
typedef struct _EFI_IFR_QUESTION_HEADER {
union {
} VarStoreInfo;
//
// Flag values of EFI_IFR_QUESTION_HEADER
//
//
// Definition for Opcode Reference
// Section 27.3.8.3
//
typedef struct _EFI_IFR_DEFAULTSTORE {
//
// Default Identifier of default store
//
typedef struct _EFI_IFR_VARSTORE {
typedef struct _EFI_IFR_VARSTORE_EFI {
typedef struct _EFI_IFR_VARSTORE_NAME_VALUE {
typedef struct _EFI_IFR_FORM_SET {
// EFI_GUID ClassGuid[];
typedef struct _EFI_IFR_END {
} EFI_IFR_END;
typedef struct _EFI_IFR_FORM {
} EFI_IFR_FORM;
typedef struct _EFI_IFR_IMAGE {
typedef struct _EFI_IFR_MODAL {
typedef struct _EFI_IFR_LOCKED {
typedef struct _EFI_IFR_RULE {
} EFI_IFR_RULE;
typedef struct _EFI_IFR_DEFAULT {
typedef struct _EFI_IFR_VALUE {
typedef struct _EFI_IFR_SUBTITLE {
typedef struct _EFI_IFR_CHECKBOX {
typedef struct _EFI_IFR_TEXT {
} EFI_IFR_TEXT;
typedef struct _EFI_IFR_REF {
} EFI_IFR_REF;
typedef struct _EFI_IFR_REF2 {
} EFI_IFR_REF2;
typedef struct _EFI_IFR_REF3 {
} EFI_IFR_REF3;
typedef struct _EFI_IFR_REF4 {
} EFI_IFR_REF4;
typedef struct _EFI_IFR_REF5 {
} EFI_IFR_REF5;
typedef struct _EFI_IFR_RESET_BUTTON {
typedef struct _EFI_IFR_ACTION {
typedef struct _EFI_IFR_ACTION_1 {
typedef struct _EFI_IFR_DATE {
} EFI_IFR_DATE;
//
// Flags that describe the behavior of the question.
//
typedef union {
struct {
} u8;
struct {
} u16;
struct {
} u32;
struct {
} u64;
typedef struct _EFI_IFR_NUMERIC {
//
// Flags related to the numeric question
//
typedef struct _EFI_IFR_ONE_OF {
typedef struct _EFI_IFR_STRING {
typedef struct _EFI_IFR_PASSWORD {
typedef struct _EFI_IFR_ORDERED_LIST {
typedef struct _EFI_IFR_TIME {
} EFI_IFR_TIME;
//
// A bit-mask that determines which unique settings are active for this opcode.
//
typedef struct _EFI_IFR_DISABLE_IF {
typedef struct _EFI_IFR_SUPPRESS_IF {
typedef struct _EFI_IFR_GRAY_OUT_IF {
typedef struct _EFI_IFR_INCONSISTENT_IF {
typedef struct _EFI_IFR_NO_SUBMIT_IF {
typedef struct _EFI_IFR_REFRESH {
typedef struct _EFI_IFR_VARSTORE_DEVICE {
typedef struct _EFI_IFR_ONE_OF_OPTION {
//
// Types of the option's value.
//
typedef struct _EFI_IFR_GUID {
//Optional Data Follows
} EFI_IFR_GUID;
typedef struct _EFI_IFR_REFRESH_ID {
typedef struct _EFI_IFR_DUP {
} EFI_IFR_DUP;
typedef struct _EFI_IFR_EQ_ID_ID {
typedef struct _EFI_IFR_EQ_ID_VAL {
typedef struct _EFI_IFR_EQ_ID_VAL_LIST {
typedef struct _EFI_IFR_UINT8 {
typedef struct _EFI_IFR_UINT16 {
typedef struct _EFI_IFR_UINT32 {
typedef struct _EFI_IFR_UINT64 {
typedef struct _EFI_IFR_QUESTION_REF1 {
typedef struct _EFI_IFR_QUESTION_REF2 {
typedef struct _EFI_IFR_QUESTION_REF3 {
typedef struct _EFI_IFR_QUESTION_REF3_2 {
typedef struct _EFI_IFR_QUESTION_REF3_3 {
typedef struct _EFI_IFR_RULE_REF {
typedef struct _EFI_IFR_STRING_REF1 {
typedef struct _EFI_IFR_STRING_REF2 {
typedef struct _EFI_IFR_THIS {
} EFI_IFR_THIS;
typedef struct _EFI_IFR_TRUE {
} EFI_IFR_TRUE;
typedef struct _EFI_IFR_FALSE {
typedef struct _EFI_IFR_ONE {
} EFI_IFR_ONE;
typedef struct _EFI_IFR_ONES {
} EFI_IFR_ONES;
typedef struct _EFI_IFR_ZERO {
} EFI_IFR_ZERO;
typedef struct _EFI_IFR_UNDEFINED {
typedef struct _EFI_IFR_VERSION {
typedef struct _EFI_IFR_LENGTH {
typedef struct _EFI_IFR_NOT {
} EFI_IFR_NOT;
typedef struct _EFI_IFR_BITWISE_NOT {
typedef struct _EFI_IFR_TO_BOOLEAN {
///
/// For EFI_IFR_TO_STRING, when converting from
/// unsigned integers, these flags control the format:
/// 0 = unsigned decimal.
/// 1 = signed decimal.
/// 2 = hexadecimal (lower-case alpha).
/// 3 = hexadecimal (upper-case alpha).
///@{
#define EFI_IFR_STRING_UNSIGNED_DEC 0
///@}
///
/// When converting from a buffer, these flags control the format:
/// 0 = ASCII.
/// 8 = Unicode.
///@{
#define EFI_IFR_STRING_ASCII 0
///@}
typedef struct _EFI_IFR_TO_STRING {
typedef struct _EFI_IFR_TO_UINT {
typedef struct _EFI_IFR_TO_UPPER {
typedef struct _EFI_IFR_TO_LOWER {
typedef struct _EFI_IFR_ADD {
} EFI_IFR_ADD;
typedef struct _EFI_IFR_AND {
} EFI_IFR_AND;
typedef struct _EFI_IFR_BITWISE_AND {
typedef struct _EFI_IFR_BITWISE_OR {
typedef struct _EFI_IFR_CATENATE {
typedef struct _EFI_IFR_DIVIDE {
typedef struct _EFI_IFR_EQUAL {
typedef struct _EFI_IFR_GREATER_EQUAL {
typedef struct _EFI_IFR_GREATER_THAN {
typedef struct _EFI_IFR_LESS_EQUAL {
typedef struct _EFI_IFR_LESS_THAN {
typedef struct _EFI_IFR_MATCH {
typedef struct _EFI_IFR_MULTIPLY {
typedef struct _EFI_IFR_MODULO {
typedef struct _EFI_IFR_NOT_EQUAL {
typedef struct _EFI_IFR_OR {
} EFI_IFR_OR;
typedef struct _EFI_IFR_SHIFT_LEFT {
typedef struct _EFI_IFR_SHIFT_RIGHT {
typedef struct _EFI_IFR_SUBTRACT {
typedef struct _EFI_IFR_CONDITIONAL {
//
// Flags governing the matching criteria of EFI_IFR_FIND
//
typedef struct _EFI_IFR_FIND {
} EFI_IFR_FIND;
typedef struct _EFI_IFR_MID {
} EFI_IFR_MID;
typedef struct _EFI_IFR_TOKEN {
//
// Flags specifying whether to find the first matching string
// or the first non-matching string.
//
typedef struct _EFI_IFR_SPAN {
} EFI_IFR_SPAN;
typedef struct _EFI_IFR_SECURITY {
///
/// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.
///
///
/// Security permission level.
///
typedef struct _EFI_IFR_FORM_MAP_METHOD {
///
/// The string identifier which provides the human-readable name of
/// the configuration method for this standards map form.
///
///
/// Identifier which uniquely specifies the configuration methods
/// associated with this standards map form.
///
typedef struct _EFI_IFR_FORM_MAP {
///
/// The sequence that defines the type of opcode as well as the length
/// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.
///
///
/// The unique identifier for this particular form.
///
///
/// One or more configuration method's name and unique identifier.
///
// EFI_IFR_FORM_MAP_METHOD Methods[];
typedef struct _EFI_IFR_SET {
///
/// The sequence that defines the type of opcode as well as the length
/// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.
///
///
/// Specifies the identifier of a previously declared variable store to
/// use when storing the question's value.
///
union {
///
/// A 16-bit Buffer Storage offset.
///
///
/// A Name Value or EFI Variable name (VarName).
///
} VarStoreInfo;
///
/// Specifies the type used for storage.
///
} EFI_IFR_SET;
typedef struct _EFI_IFR_GET {
///
/// The sequence that defines the type of opcode as well as the length
/// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.
///
///
/// Specifies the identifier of a previously declared variable store to
/// use when retrieving the value.
///
union {
///
/// A 16-bit Buffer Storage offset.
///
///
/// A Name Value or EFI Variable name (VarName).
///
} VarStoreInfo;
///
/// Specifies the type used for storage.
///
} EFI_IFR_GET;
typedef struct _EFI_IFR_READ {
} EFI_IFR_READ;
typedef struct _EFI_IFR_WRITE {
typedef struct _EFI_IFR_MAP {
} EFI_IFR_MAP;
//
// Definitions for Keyboard Package
// Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL
//
///
/// Each enumeration values maps a physical key on a keyboard.
///
typedef enum {
} EFI_KEY;
typedef struct {
///
/// Used to describe a physical key on a keyboard.
///
///
/// Unicode character code for the Key.
///
///
/// Unicode character code for the key with the shift key being held down.
///
///
/// Unicode character code for the key with the Alt-GR being held down.
///
///
/// Unicode character code for the key with the Alt-GR and shift keys being held down.
///
///
/// Modifier keys are defined to allow for special functionality that is not necessarily
/// accomplished by a printable character. Many of these modifier keys are flags to toggle
/// certain state bits on and off inside of a keyboard driver.
///
///
/// A key which is affected by all the standard shift modifiers.
/// Most keys would be expected to have this bit active.
///
///
/// This key is affected by the caps lock so that if a keyboard driver
/// would need to disambiguate between a key which had a "1" defined
/// versus an "a" character. Having this bit turned on would tell
/// the keyboard driver to use the appropriate shifted state or not.
///
///
/// Similar to the case of CAPS lock, if this bit is active, the key
/// is affected by the num lock being turned on.
///
typedef struct {
// EFI_KEY_DESCRIPTOR Descriptors[];
typedef struct {
// EFI_HII_KEYBOARD_LAYOUT Layout[];
//
// Modifier values
//
//
// Keys that have multiple control functions based on modifier
// settings are handled in the keyboard driver implementation.
// For instance, PRINT_KEY might have a modifier held down and
// is still a nonprinting character, but might have an alternate
// control function like SYSREQUEST
//
///
/// Animation IFR opcode
///
typedef struct _EFI_IFR_ANIMATION {
///
/// Standard opcode header, where Header.OpCode is
/// EFI_IFR_ANIMATION_OP.
///
///
/// Animation identifier in the HII database.
///
///
/// HII animation package header.
///
typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR {
///
/// Standard package header, where Header.Type = EFI_HII_PACKAGE_ANIMATIONS.
///
///
/// Offset, relative to this header, of the animation information. If
/// this is zero, then there are no animation sequences in the package.
///
///
/// Animation information is encoded as a series of blocks,
/// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK.
///
typedef struct _EFI_HII_ANIMATION_BLOCK {
//UINT8 BlockBody[];
///
/// Animation block types.
///
///
/// Extended block headers used for variable sized animation records
/// which need an explicit length.
///
typedef struct _EFI_HII_AIBT_EXT1_BLOCK {
///
/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1.
///
///
/// The block type.
///
///
/// Size of the animation block, in bytes, including the animation block header.
///
typedef struct _EFI_HII_AIBT_EXT2_BLOCK {
///
/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2.
///
///
/// The block type
///
///
/// Size of the animation block, in bytes, including the animation block header.
///
typedef struct _EFI_HII_AIBT_EXT4_BLOCK {
///
/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4.
///
///
/// The block type
///
///
/// Size of the animation block, in bytes, including the animation block header.
///
typedef struct _EFI_HII_ANIMATION_CELL {
///
/// The X offset from the upper left hand corner of the logical
/// window to position the indexed image.
///
///
/// The Y offset from the upper left hand corner of the logical
/// window to position the indexed image.
///
///
/// The image to display at the specified offset from the upper left
/// hand corner of the logical window.
///
///
/// The number of milliseconds to delay after displaying the indexed
/// image and before continuing on to the next linked image. If value
/// is zero, no delay.
///
///
/// An animation block to describe an animation sequence that does not cycle, and
/// where one image is simply displayed over the previous image.
///
typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK {
///
/// This is image that is to be reference by the image protocols, if the
/// animation function is not supported or disabled. This image can
/// be one particular image from the animation sequence (if any one
/// of the animation frames has a complete image) or an alternate
/// image that can be displayed alone. If the value is zero, no image
/// is displayed.
///
///
/// The overall width of the set of images (logical window width).
///
///
/// The overall height of the set of images (logical window height).
///
///
/// The number of EFI_HII_ANIMATION_CELL contained in the
/// animation sequence.
///
///
/// An array of CellCount animation cells.
///
///
/// An animation block to describe an animation sequence that does not cycle,
/// and where the logical window is cleared to the specified color before
/// the next image is displayed.
///
typedef struct _EFI_HII_AIBT_CLEAR_IMAGES_BLOCK {
///
/// This is image that is to be reference by the image protocols, if the
/// animation function is not supported or disabled. This image can
/// be one particular image from the animation sequence (if any one
/// of the animation frames has a complete image) or an alternate
/// image that can be displayed alone. If the value is zero, no image
/// is displayed.
///
///
/// The overall width of the set of images (logical window width).
///
///
/// The overall height of the set of images (logical window height).
///
///
/// The number of EFI_HII_ANIMATION_CELL contained in the
/// animation sequence.
///
///
/// The color to clear the logical window to before displaying the
/// indexed image.
///
///
/// An array of CellCount animation cells.
///
///
/// An animation block to describe an animation sequence that does not cycle,
/// and where the screen is restored to the original state before the next
/// image is displayed.
///
typedef struct _EFI_HII_AIBT_RESTORE_SCRN_BLOCK {
///
/// This is image that is to be reference by the image protocols, if the
/// animation function is not supported or disabled. This image can
/// be one particular image from the animation sequence (if any one
/// of the animation frames has a complete image) or an alternate
/// image that can be displayed alone. If the value is zero, no image
/// is displayed.
///
///
/// The overall width of the set of images (logical window width).
///
///
/// The overall height of the set of images (logical window height).
///
///
/// The number of EFI_HII_ANIMATION_CELL contained in the
/// animation sequence.
///
///
/// An array of CellCount animation cells.
///
///
/// An animation block to describe an animation sequence that continuously cycles,
/// and where one image is simply displayed over the previous image.
///
///
/// An animation block to describe an animation sequence that continuously cycles,
/// and where the logical window is cleared to the specified color before
/// the next image is displayed.
///
///
/// An animation block to describe an animation sequence that continuously cycles,
/// and where the screen is restored to the original state before
/// the next image is displayed.
///
///
/// Assigns a new character value to a previously defined animation sequence.
///
typedef struct _EFI_HII_AIBT_DUPLICATE_BLOCK {
///
/// The previously defined animation ID with the exact same
/// animation information.
///
///
/// Skips animation IDs.
///
typedef struct _EFI_HII_AIBT_SKIP1_BLOCK {
///
/// The unsigned 8-bit value to add to AnimationIdCurrent.
///
///
/// Skips animation IDs.
///
typedef struct _EFI_HII_AIBT_SKIP2_BLOCK {
///
/// The unsigned 16-bit value to add to AnimationIdCurrent.
///
#pragma pack()
///
/// References to string tokens must use this macro to enable scanning for
/// token usages.
///
///
/// STRING_TOKEN is not defined in UEFI specification. But it is placed
/// here for the easy access by C files and VFR source files.
///
#define STRING_TOKEN(t) t
#endif