943 lines
36 KiB
C
943 lines
36 KiB
C
/** @file
|
|
Structure and function definition for Layout Library
|
|
|
|
;******************************************************************************
|
|
;* Copyright (c) 2013 - 2020, Insyde Software Corp. All Rights Reserved.
|
|
;*
|
|
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
|
|
;* transmit, broadcast, present, recite, release, license or otherwise exploit
|
|
;* any part of this publication in any form, by any means, without the prior
|
|
;* written permission of Insyde Software Corporation.
|
|
;*
|
|
;******************************************************************************
|
|
|
|
*/
|
|
|
|
#ifndef _LAYOUT_LIB_H_
|
|
#define _LAYOUT_LIB_H_
|
|
|
|
#include <Uefi.h>
|
|
#include <Protocol/H2OFormBrowser.h>
|
|
#include <Protocol/H2ODisplayEngine.h>
|
|
#include <Protocol/HiiFont.h>
|
|
|
|
#include <Library/RectLib.h>
|
|
|
|
#define KEYWORD_ALIGN_CONTENT_FLEX_START BIT0
|
|
#define KEYWORD_ALIGN_CONTENT_FLEX_END BIT1
|
|
#define KEYWORD_ALIGN_CONTENT_CENTER BIT2
|
|
#define KEYWORD_ALIGN_CONTENT_SPACE_BETWEEN BIT3
|
|
#define KEYWORD_ALIGN_CONTENT_SPACE_AROUND BIT4
|
|
#define KEYWORD_ALIGN_CONTENT_STRETCH BIT5
|
|
|
|
#define KEYWORD_ALIGN_ITEMS_FLEX_START BIT0
|
|
#define KEYWORD_ALIGN_ITEMS_FLEX_END BIT1
|
|
#define KEYWORD_ALIGN_ITEMS_CENTER BIT2
|
|
#define KEYWORD_ALIGN_ITEMS_STRETCH BIT3
|
|
|
|
#define KEYWORD_BACKGROUND_REPEAT_NO_REPEAT BIT0
|
|
#define KEYWORD_BACKGROUND_REPEAT_REPEAT_X BIT1
|
|
#define KEYWORD_BACKGROUND_REPEAT_REPEAT_Y BIT2
|
|
#define KEYWORD_BACKGROUND_REPEAT_REPEAT BIT3
|
|
|
|
#define KEYWORD_BORDER_SHADOW_NONE BIT0
|
|
#define KEYWORD_BORDER_SHADOW_OUTSET BIT1
|
|
#define KEYWORD_BORDER_SHADOW_INSET BIT2
|
|
|
|
#define KEYWORD_BORDER_STYLE_NONE BIT0
|
|
#define KEYWORD_BORDER_STYLE_SOLID BIT1
|
|
#define KEYWORD_BORDER_STYLE_DOTTED BIT2
|
|
#define KEYWORD_BORDER_STYLE_DASHED BIT3
|
|
#define KEYWORD_BORDER_STYLE_DOUBLE BIT4
|
|
#define KEYWORD_BORDER_STYLE_GROOVE BIT5
|
|
#define KEYWORD_BORDER_STYLE_RIDGE BIT6
|
|
#define KEYWORD_BORDER_STYLE_INSET BIT7
|
|
#define KEYWORD_BORDER_STYLE_OUTSET BIT8
|
|
#define KEYWORD_BORDER_STYLE_HIDDEN BIT9
|
|
|
|
#define KEYWORD_DISPLAY_NONE BIT0
|
|
#define KEYWORD_DISPLAY_INLINE BIT1
|
|
#define KEYWORD_DISPLAY_BLOCK BIT2
|
|
#define KEYWORD_DISPLAY_FLEX BIT3
|
|
|
|
#define KEYWORD_FILTER_NONE BIT0
|
|
#define KEYWORD_FILTER_BRIGHTNESS BIT1
|
|
#define KEYWORD_FILTER_GRAYSCALE BIT2
|
|
|
|
#define KEYWORD_FLEX_DIRECTION_NONE BIT0
|
|
#define KEYWORD_FLEX_DIRECTION_ROW BIT1
|
|
#define KEYWORD_FLEX_DIRECTION_COLUMN BIT2
|
|
|
|
#define KEYWORD_FLEX_WRAP_NOWRAP BIT0
|
|
#define KEYWORD_FLEX_WRAP_WRAP BIT1
|
|
|
|
#define KEYWORD_JUSTIFY_CONTENT_FLEX_START BIT0
|
|
#define KEYWORD_JUSTIFY_CONTENT_FLEX_END BIT1
|
|
#define KEYWORD_JUSTIFY_CONTENT_CENTER BIT2
|
|
#define KEYWORD_JUSTIFY_CONTENT_SPACE_BETWEEN BIT3
|
|
#define KEYWORD_JUSTIFY_CONTENT_SPACE_AROUND BIT4
|
|
|
|
#define KEYWORD_LINEAR_GRADIENT_NONE BIT0
|
|
#define KEYWORD_LINEAR_GRADIENT_DIRECTION_LEFT BIT1
|
|
#define KEYWORD_LINEAR_GRADIENT_DIRECTION_RIGHT BIT2
|
|
#define KEYWORD_LINEAR_GRADIENT_DIRECTION_TOP BIT3
|
|
#define KEYWORD_LINEAR_GRADIENT_DIRECTION_BOTTOM BIT4
|
|
#define KEYWORD_LINEAR_GRADIENT_COLOR_START BIT5
|
|
#define KEYWORD_LINEAR_GRADIENT_COLOR_STOP BIT6
|
|
#define KEYWORD_LINEAR_GRADIENT_COLOR_END BIT7
|
|
|
|
#define KEYWORD_OVERFLOW_AUTO BIT0
|
|
#define KEYWORD_OVERFLOW_VISIBLE BIT1
|
|
#define KEYWORD_OVERFLOW_HIDDEN BIT2
|
|
#define KEYWORD_OVERFLOW_SCROLL BIT3
|
|
|
|
#define KEYWORD_POSITION_ABSOLUTE BIT0
|
|
#define KEYWORD_POSITION_RELATIVE BIT1
|
|
#define KEYWORD_POSITION_FIXED BIT2
|
|
#define KEYWORD_POSITION_STATIC BIT3
|
|
|
|
#define KEYWORD_TEXT_ALIGN_LEFT BIT0
|
|
#define KEYWORD_TEXT_ALIGN_RIGHT BIT1
|
|
#define KEYWORD_TEXT_ALIGN_CENTER BIT2
|
|
#define KEYWORD_TEXT_ALIGN_JUSTIFY BIT3
|
|
|
|
#define KEYWORD_TEXT_CONTROL_ELLIPSIS BIT0
|
|
#define KEYWORD_TEXT_CONTROL_NOWRAP BIT1
|
|
#define KEYWORD_TEXT_CONTROL_WRAP BIT2
|
|
#define KEYWORD_TEXT_CONTROL_TRUNCATE BIT3
|
|
|
|
#define KEYWORD_VISIBILITY_VISIBLE BIT0
|
|
#define KEYWORD_VISIBILITY_HIDDEN BIT1
|
|
#define KEYWORD_VISIBILITY_INHERIT BIT2
|
|
|
|
typedef struct _RGB_ATTR {
|
|
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Rgb;
|
|
UINT32 Attribute;
|
|
} RGB_ATTR;
|
|
|
|
typedef struct _H2O_COLOR_INFO {
|
|
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Rgb;
|
|
UINT32 Attribute;
|
|
} H2O_COLOR_INFO;
|
|
|
|
typedef struct _H2O_STRING_INFO {
|
|
RECT StringField;
|
|
CHAR16 *String;
|
|
} H2O_STRING_INFO;
|
|
|
|
typedef struct _H2O_IMAGE_INFO {
|
|
RECT ImageField;
|
|
|
|
CHAR16 *ImageMapStr;
|
|
EFI_IMAGE_ID ImageId;
|
|
EFI_ANIMATION_ID AnimationId;
|
|
EFI_EVENT AnimationRefreshEvent;
|
|
|
|
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *CurrentBlt;
|
|
UINT32 CurrentBltWidth;
|
|
UINT32 CurrentBltHeight;
|
|
} H2O_IMAGE_INFO;
|
|
|
|
typedef enum {
|
|
H2O_CSS_LENGTH_TYPE_PX = 0,
|
|
H2O_CSS_LENGTH_TYPE_EM,
|
|
H2O_CSS_LENGTH_TYPE_PERCENTAGE,
|
|
H2O_CSS_LENGTH_TYPE_AUTO,
|
|
H2O_CSS_LENGTH_TYPE_MAX
|
|
} H2O_CSS_LENGTH_TYPE;
|
|
|
|
typedef struct _H2O_CSS_LENGTH {
|
|
UINT8 Type;
|
|
union {
|
|
//
|
|
// Relative
|
|
//
|
|
UINT32 Px; ///< Pixels
|
|
UINT32 Em; ///< Relative to font size
|
|
UINT32 Ex; ///< Relative to Lowercase x height
|
|
UINT32 Percentage;
|
|
BOOLEAN Auto;
|
|
//
|
|
// Absolute
|
|
//
|
|
UINT32 In; ///< Inch
|
|
UINT32 Cm; ///< Centimeter
|
|
UINT32 Mm; ///< Millimeter
|
|
UINT32 Pt; ///< points, 1 pt = 1/72 in
|
|
UINT32 Pc; ///< picas, 1 pc = 12 pt
|
|
} Value;
|
|
} H2O_CSS_LENGTH;
|
|
|
|
typedef struct {
|
|
UINT32 Type;
|
|
H2O_VALUE H2OValue;
|
|
union {
|
|
H2O_CSS_LENGTH Length;
|
|
H2O_COLOR_INFO Color;
|
|
H2O_IMAGE_INFO Image;
|
|
RECT Rect;
|
|
} Value;
|
|
} H2O_PROPERTY_VALUE;
|
|
|
|
typedef struct _H2O_PANEL_INFO H2O_PANEL_INFO;
|
|
typedef struct _H2O_LAYOUT_INFO H2O_LAYOUT_INFO;
|
|
|
|
#define H2O_PROPERTY_INFO_NODE_SIGNATURE SIGNATURE_32 ('P', 'R', 'O', 'P')
|
|
typedef struct _H2O_PROPERTY_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
UINT32 ValueType;
|
|
H2O_VALUE H2OValue;
|
|
CHAR8 *IdentifierStr;
|
|
CHAR8 *ValueStr;
|
|
UINT32 IdentifierStrSize;
|
|
} H2O_PROPERTY_INFO;
|
|
#define H2O_PROPERTY_INFO_NODE_FROM_LINK(a) CR (a, H2O_PROPERTY_INFO, Link, H2O_PROPERTY_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_STYLE_INFO_NODE_SIGNATURE SIGNATURE_32 ('S', 'T', 'Y', 'L')
|
|
typedef struct _H2O_STYLE_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
|
|
UINT32 StyleType; ///< From styletypekeyword. See H2O_IFR_STYLE_TYPE_xxx.
|
|
CHAR8 *ClassName;
|
|
UINT32 PseudoClass; ///< See H2O_STYLE_PSEUDO_CLASS_xxxx.
|
|
|
|
LIST_ENTRY PropertyListHead;
|
|
UINT32 PropertyCount;
|
|
} H2O_STYLE_INFO;
|
|
#define H2O_STYLE_INFO_NODE_FROM_LINK(a) CR (a, H2O_STYLE_INFO, Link, H2O_STYLE_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_IFR_STYLE_TYPE_VFR_TREE_FLAG 0x80
|
|
|
|
typedef enum {
|
|
H2O_STYLE_PSEUDO_CLASS_NORMAL = 0,
|
|
H2O_STYLE_PSEUDO_CLASS_SELECTABLE,
|
|
H2O_STYLE_PSEUDO_CLASS_GRAYOUT,
|
|
H2O_STYLE_PSEUDO_CLASS_HIGHLIGHT,
|
|
H2O_STYLE_PSEUDO_CLASS_LINK,
|
|
H2O_STYLE_PSEUDO_CLASS_VISITED,
|
|
H2O_STYLE_PSEUDO_CLASS_HOVER,
|
|
H2O_STYLE_PSEUDO_CLASS_FOCUS,
|
|
H2O_STYLE_PSEUDO_CLASS_ACTIVE,
|
|
H2O_STYLE_PSEUDO_CLASS_ENABLED,
|
|
H2O_STYLE_PSEUDO_CLASS_DISABLED,
|
|
H2O_STYLE_PSEUDO_CLASS_NOT,
|
|
H2O_STYLE_PSEUDO_CLASS_HELP,
|
|
H2O_STYLE_PSEUDO_CLASS_MAX
|
|
} H2O_STYLE_PSEUDO_CLASS;
|
|
|
|
typedef enum {
|
|
H2O_CONTROL_ID_DIALOG_TITLE = 1,
|
|
H2O_CONTROL_ID_DIALOG_BODY,
|
|
H2O_CONTROL_ID_DIALOG_BODY_INPUT,
|
|
H2O_CONTROL_ID_DIALOG_BUTTON,
|
|
H2O_CONTROL_ID_MAX
|
|
} H2O_CONTROL_ID;
|
|
|
|
typedef struct _H2O_CONTROL_INFO {
|
|
UINT32 ControlId;
|
|
H2O_STYLE_INFO ControlStyle;
|
|
|
|
RECT ControlField;
|
|
RECT ControlRelativeField; ///< from panel
|
|
|
|
H2O_STRING_INFO Text;
|
|
H2O_STRING_INFO HelpText;
|
|
H2O_STRING_INFO ValueStrInfo;
|
|
H2O_IMAGE_INFO BackgroundImage;
|
|
EFI_IMAGE_INPUT HelpImage;
|
|
EFI_HII_VALUE HiiValue;
|
|
|
|
H2O_PANEL_INFO *ParentPanel;
|
|
BOOLEAN Editable;
|
|
//
|
|
// Statement
|
|
//
|
|
H2O_PAGE_ID PageId;
|
|
H2O_STATEMENT_ID StatementId;
|
|
EFI_QUESTION_ID QuestionId;
|
|
UINT8 Operand;
|
|
EFI_IFR_OP_HEADER *IfrOpCode;
|
|
BOOLEAN Visible;
|
|
BOOLEAN Selectable;
|
|
BOOLEAN Modifiable;
|
|
|
|
UINT64 Minimum;
|
|
UINT64 Maximum;
|
|
UINT64 Step;
|
|
|
|
//
|
|
// Display item sequence for date/time
|
|
// Date: Month/Day/Year
|
|
// Sequence: 0 1 2
|
|
//
|
|
// Time: Hour : Minute : Second
|
|
// Sequence: 0 1 2
|
|
//
|
|
UINT8 Sequence;
|
|
} H2O_CONTROL_INFO;
|
|
|
|
typedef struct _H2O_CONTROL_LIST {
|
|
UINT32 Count;
|
|
H2O_CONTROL_INFO *ControlArray;
|
|
} H2O_CONTROL_LIST;
|
|
|
|
#define H2O_PANEL_INFO_NODE_SIGNATURE SIGNATURE_32 ('P', 'A', 'N', 'E')
|
|
struct _H2O_PANEL_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
UINT32 PanelId;
|
|
UINT32 PanelType; ///< See H2O_PANEL_TYPE_xxx.
|
|
EFI_GUID PanelTypeGuid;
|
|
|
|
EFI_GUID TargetFormsetGuid; //< For panel type H2O_PANEL_TYPE_FORM
|
|
UINT16 TargetFormId;
|
|
|
|
RECT PanelField;
|
|
RECT PanelRelField; ///< for page-up and page-down
|
|
|
|
H2O_IMAGE_INFO ContentsImage;
|
|
H2O_IMAGE_INFO BackgroundImage;
|
|
|
|
UINT32 OrderFlag; ///< See H2O_PANEL_ORDER_FLAG_xxxx.
|
|
BOOLEAN WithScrollBarVertical;
|
|
BOOLEAN WithScrollBarHorizontal;
|
|
|
|
H2O_LAYOUT_INFO *ParentLayout;
|
|
LIST_ENTRY StyleListHead;
|
|
H2O_CONTROL_LIST ControlList;
|
|
} ;
|
|
#define H2O_PANEL_INFO_NODE_FROM_LINK(a) CR (a, H2O_PANEL_INFO, Link, H2O_PANEL_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_PANEL_ORDER_FLAG_HORIZONTAL_FIRST 0x00000001 ///< Default Vertical First Order
|
|
#define H2O_PANEL_ORDER_FLAG_NO_SCROLL_BAR 0x00000002
|
|
#define H2O_PANEL_ORDER_FLAG_JUSTIFIED 0x00000004
|
|
#define H2O_PANEL_ORDER_FLAG_MINIMUM 0x00000008
|
|
|
|
#define DISPLAY_NONE 0x00000000 ///< Default
|
|
#define DISPLAY_LEFT 0x00000001
|
|
#define DISPLAY_TOP 0x00000002
|
|
#define DISPLAY_RIGHT 0x00000004
|
|
#define DISPLAY_BOTTOM 0x00000008
|
|
|
|
typedef struct _H2O_PANEL_LIST {
|
|
UINT32 Count;
|
|
H2O_PANEL_INFO *PanelArray;
|
|
} H2O_PANEL_LIST;
|
|
|
|
#define H2O_LAYOUT_INFO_NODE_SIGNATURE SIGNATURE_32 ('L', 'A', 'Y', 'O')
|
|
struct _H2O_LAYOUT_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
UINT32 LayoutId;
|
|
EFI_GUID DisplayEngineGuid[3];
|
|
UINT32 Revision;
|
|
LIST_ENTRY PanelListHead;
|
|
LIST_ENTRY HotkeyListHead;
|
|
LIST_ENTRY StyleListHead;
|
|
};
|
|
#define H2O_LAYOUT_INFO_NODE_FROM_LINK(a) CR (a, H2O_LAYOUT_INFO, Link, H2O_LAYOUT_INFO_NODE_SIGNATURE)
|
|
|
|
typedef enum {
|
|
LAYOUT_REVISION_UNKNOWN = 0, // not init
|
|
LAYOUT_REVISION_1, // visibility property value type is boolean, layout id is a property
|
|
LAYOUT_REVISION_2, // visibility property value type is keyword, layout id is an attribute
|
|
LAYOUT_REVISION_MAX
|
|
} LAYOUT_REVISION;
|
|
|
|
typedef struct _H2O_VFR_INFO H2O_VFR_INFO;
|
|
typedef struct _H2O_FORMSET_INFO H2O_FORMSET_INFO;
|
|
typedef struct _H2O_FORM_INFO H2O_FORM_INFO;
|
|
typedef struct _H2O_STATEMENT_INFO H2O_STATEMENT_INFO;
|
|
typedef struct _H2O_HOTKEY_INFO H2O_HOTKEY_INFO;
|
|
typedef struct _H2O_IMPORT_INFO H2O_IMPORT_INFO;
|
|
typedef struct _H2O_TARGET_INFO H2O_TARGET_INFO;
|
|
typedef struct _H2O_EXPRESSION_INFO H2O_EXPRESSION_INFO;
|
|
typedef struct _H2O_EXPRESSION_QID_MAP_INFO H2O_EXPRESSION_QID_MAP_INFO;
|
|
|
|
#define H2O_HOTKEY_INFO_NODE_SIGNATURE SIGNATURE_32 ('H', 'O', 'T', 'K')
|
|
struct _H2O_HOTKEY_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
H2O_HII_LIBT_EXT_HOTKEY_BLOCK *HotkeyBlock;
|
|
LIST_ENTRY StyleListHead;
|
|
};
|
|
#define H2O_HOTKEY_INFO_NODE_FROM_LINK(a) CR (a, H2O_HOTKEY_INFO, Link, H2O_HOTKEY_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_IMPORT_INFO_NODE_SIGNATURE SIGNATURE_32 ('I', 'M', 'P', 'O')
|
|
struct _H2O_IMPORT_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
UINT16 Flags;
|
|
EFI_GUID TargetFormsetGuid;
|
|
EFI_FORM_ID TargetFormId;
|
|
EFI_QUESTION_ID TargetId;
|
|
EFI_QUESTION_ID LocalId;
|
|
};
|
|
#define H2O_IMPORT_INFO_NODE_FROM_LINK(a) CR (a, H2O_IMPORT_INFO, Link, H2O_IMPORT_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_TARGET_INFO_NODE_SIGNATURE SIGNATURE_32 ('H', 'T', 'I', 'N')
|
|
struct _H2O_TARGET_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
UINT8 VfcfOpcode;
|
|
EFI_GUID TargetFormsetGuid;
|
|
EFI_FORM_ID TargetFormId;
|
|
UINT16 TargetLabelId;
|
|
LIST_ENTRY StyleListHead;
|
|
};
|
|
#define H2O_TARGET_INFO_NODE_FROM_LINK(a) CR (a, H2O_TARGET_INFO, Link, H2O_TARGET_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_EXPRESSION_INFO_NODE_SIGNATURE SIGNATURE_32 ('H', 'E', 'I', 'N')
|
|
struct _H2O_EXPRESSION_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
UINTN ExpressionSize;
|
|
UINT8 ExpressionOpcodes[1];
|
|
};
|
|
#define H2O_EXPRESSION_INFO_NODE_FROM_LINK(a) CR (a, H2O_EXPRESSION_INFO, Link, H2O_EXPRESSION_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_STATEMENT_INFO_NODE_SIGNATURE SIGNATURE_32 ('H', 'S', 'I', 'N')
|
|
struct _H2O_STATEMENT_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
BOOLEAN IsQuestion;
|
|
UINT16 Position;
|
|
UINT16 StatementId;
|
|
EFI_QUESTION_ID QuestionId;
|
|
LIST_ENTRY HotkeyListHead;
|
|
LIST_ENTRY StyleListHead;
|
|
UINTN ExpressionCount;
|
|
LIST_ENTRY ExpressionListHead;
|
|
};
|
|
#define H2O_STATEMENT_INFO_NODE_FROM_LINK(a) CR (a, H2O_STATEMENT_INFO, Link, H2O_STATEMENT_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_FORM_INFO_NODE_SIGNATURE SIGNATURE_32 ('F', 'O', 'R', 'M')
|
|
struct _H2O_FORM_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
H2O_HII_LIBT_EXT_FORM_BLOCK *FormBlock;
|
|
LIST_ENTRY HotkeyListHead;
|
|
LIST_ENTRY StyleListHead;
|
|
LIST_ENTRY ImportListHead;
|
|
LIST_ENTRY StatementListHead;
|
|
LIST_ENTRY TargetListHead;
|
|
};
|
|
#define H2O_FORM_INFO_NODE_FROM_LINK(a) CR (a, H2O_FORM_INFO, Link, H2O_FORM_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_EXPRESSION_QID_MAP_INFO_NODE_SIGNATURE SIGNATURE_32 ('E', 'Q', 'M', 'N')
|
|
struct _H2O_EXPRESSION_QID_MAP_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
H2O_HII_LIBT_EXPRESSION_QID_MAP_BLOCK *ExpressionQIdMapBlock;
|
|
};
|
|
#define H2O_EXPRESSION_QID_MAP_INFO_NODE_FROM_LINK(a) CR (a, H2O_EXPRESSION_QID_MAP_INFO, Link, H2O_EXPRESSION_QID_MAP_INFO_NODE_SIGNATURE)
|
|
|
|
|
|
#define H2O_FORMSET_INFO_NODE_SIGNATURE SIGNATURE_32 ('F', 'M', 'S', 'T')
|
|
struct _H2O_FORMSET_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
EFI_GUID FormsetId;
|
|
H2O_HII_LIBT_EXT_FORMSET_BLOCK *FormsetBlock;
|
|
LIST_ENTRY FormListHead;
|
|
LIST_ENTRY HotkeyListHead;
|
|
LIST_ENTRY StyleListHead;
|
|
LIST_ENTRY ExpressionQIdMapList;
|
|
};
|
|
#define H2O_FORMSET_INFO_NODE_FROM_LINK(a) CR (a, H2O_FORMSET_INFO, Link, H2O_FORMSET_INFO_NODE_SIGNATURE)
|
|
|
|
#define H2O_VFR_INFO_NODE_SIGNATURE SIGNATURE_32 ('V', 'F', 'R', 'I')
|
|
struct _H2O_VFR_INFO {
|
|
UINT32 Signature;
|
|
LIST_ENTRY Link;
|
|
UINT32 VfrId;
|
|
LIST_ENTRY FormsetListHead;
|
|
};
|
|
#define H2O_VFR_INFO_NODE_FROM_LINK(a) CR (a, H2O_VFR_INFO, Link, H2O_VFR_INFO_NODE_SIGNATURE)
|
|
|
|
typedef struct {
|
|
CHAR16 *KeyStr;
|
|
CHAR16 *PromptStrTokenName;
|
|
CHAR16 *HelpStrTokenName;
|
|
EFI_IMAGE_INPUT *Image;
|
|
BOOLEAN Display;
|
|
UINT8 GroupId;
|
|
EFI_GUID FormSetGuid;
|
|
UINT16 FormId;
|
|
UINT16 QuestionId;
|
|
UINT32 HotKeyAction;
|
|
UINT16 HotKeyDefaultId;
|
|
EFI_GUID HotKeyTargetFormSetGuid;
|
|
UINT16 HotKeyTargetFormId;
|
|
UINT16 HotKeyTargetQuestionId;
|
|
EFI_HII_VALUE HotKeyHiiValue;
|
|
} H2O_HOTKEY;
|
|
|
|
typedef enum {
|
|
VFR_LABEL,
|
|
VFR_IMPORT,
|
|
VFR_IMPORT_TARGET,
|
|
VFR_LINK_TARGET,
|
|
VFCF_IMPORT,
|
|
VFCF_IMPORT_TARGET,
|
|
VFCF_LINK_TARGET,
|
|
} IMPORT_INFO_TYPE;
|
|
|
|
#define IMPORT_INFO_FLAG_IS_QUESTION(Flag) ((BOOLEAN) ((Flag & H2O_HII_IMPORT_QUESTION) == H2O_HII_IMPORT_QUESTION))
|
|
|
|
typedef struct {
|
|
UINT16 Flags;
|
|
EFI_GUID SrcFormSetGuid;
|
|
UINT16 SrcFormId;
|
|
UINT16 SrcId;
|
|
|
|
UINT16 DstFormId;
|
|
UINT16 DstId;
|
|
|
|
EFI_QUESTION_ID ExpressionQId;
|
|
|
|
//
|
|
// For VFR Import Op
|
|
//
|
|
VOID *VfrFakeStatement;
|
|
IMPORT_INFO_TYPE Type;
|
|
} IMPORT_INFO;
|
|
|
|
EFI_STATUS
|
|
ParseProperty (
|
|
IN RECT *RelativeField OPTIONAL,
|
|
IN H2O_PROPERTY_INFO *Property,
|
|
OUT H2O_PROPERTY_VALUE *PropValue
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetImportInfoList (
|
|
IN EFI_GUID *FormsetGuid,
|
|
OUT IMPORT_INFO **ImportInfoList,
|
|
OUT UINT16 *ImportInfoCount
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetFormsetLayoutByGuid (
|
|
IN EFI_GUID *FormsetGuid,
|
|
OUT H2O_FORMSET_INFO **Formset
|
|
);
|
|
|
|
H2O_FORM_INFO *
|
|
GetFormLayoutByFormId (
|
|
IN H2O_FORMSET_INFO *Formset,
|
|
IN UINT32 FormId
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetPanelById (
|
|
IN EFI_GUID *FsGuid,
|
|
IN EFI_GUID *DEGuid,
|
|
IN UINT32 PanelId,
|
|
OUT H2O_PANEL_INFO **Panel
|
|
);
|
|
|
|
H2O_STATEMENT_INFO *
|
|
GetStatementLayoutByQuestionId (
|
|
IN H2O_FORMSET_INFO *Formset,
|
|
IN H2O_FORM_INFO *FormInfo,
|
|
IN BOOLEAN IsQuestion,
|
|
IN UINT16 Id
|
|
);
|
|
|
|
H2O_PANEL_INFO *
|
|
GetNextPanel (
|
|
IN H2O_LAYOUT_INFO *LayoutInfo,
|
|
IN H2O_PANEL_INFO *PanelInfo
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetPropertyFromPropertyList (
|
|
IN LIST_ENTRY *PropertyListHead,
|
|
IN CHAR8 *IdentifierStr,
|
|
IN RECT *RelativeField OPTIONAL,
|
|
OUT H2O_PROPERTY_INFO **Property,
|
|
OUT H2O_PROPERTY_VALUE *PropValue
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetPropertyFromStyleList (
|
|
IN LIST_ENTRY *StyleListHead,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
IN CHAR8 *IdentifierStr,
|
|
IN RECT *RelativeField OPTIONAL,
|
|
OUT H2O_PROPERTY_INFO **Property,
|
|
OUT H2O_PROPERTY_VALUE *PropValue
|
|
);
|
|
|
|
EFI_STATUS
|
|
BltCopy(
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Blt,
|
|
IN UINTN BltStartX,
|
|
IN UINTN BltStartY,
|
|
IN UINTN BltWidth,
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *DestBlt,
|
|
IN UINTN DestStartX,
|
|
IN UINTN DestStartY,
|
|
IN UINTN DestWidth,
|
|
IN UINTN DestHeight,
|
|
IN UINTN CopyWidth,
|
|
IN UINTN CopyHeight
|
|
);
|
|
|
|
EFI_STATUS
|
|
BltCombine(
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL **DestBlt,
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BgBlt,
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FgBlt,
|
|
IN UINTN BltWidth,
|
|
IN UINTN BltHeight
|
|
);
|
|
|
|
EFI_STATUS
|
|
BltTransparent(
|
|
IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **DestBlt,
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *SrcBlt,
|
|
IN UINTN BltWidth,
|
|
IN UINTN BltHeight
|
|
);
|
|
|
|
EFI_STATUS
|
|
CreateImageByColor (
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Rgb,
|
|
IN RECT *Field,
|
|
IN OUT EFI_IMAGE_INPUT *ImageInput
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetLayoutById (
|
|
IN UINT32 LayoutId,
|
|
IN EFI_GUID *DisplayEngineGuid,
|
|
OUT H2O_LAYOUT_INFO **Layout
|
|
);
|
|
|
|
EFI_STATUS
|
|
EFIAPI
|
|
GetLayoutIdByGuid (
|
|
IN EFI_GUID *FormsetGuid,
|
|
OUT UINT32 *LayoutId
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetImageById (
|
|
IN UINT32 ImageId,
|
|
OUT EFI_IMAGE_INPUT *ImageInput
|
|
);
|
|
|
|
CHAR16 *
|
|
GetStringById (
|
|
IN EFI_STRING_ID StringId
|
|
);
|
|
|
|
EFI_STATUS
|
|
SeparateStringByFont (
|
|
IN CHAR16 *String,
|
|
IN EFI_FONT_DISPLAY_INFO *FontDisplayInfo,
|
|
IN UINT32 LimitWidth,
|
|
OUT EFI_IMAGE_OUTPUT **CharImageOutArray OPTIONAL,
|
|
OUT UINT32 *SeparateStrCount,
|
|
OUT UINT32 **SeparateStrOffsetArray OPTIONAL,
|
|
OUT UINT32 **SeparateStrWidthArray OPTIONAL,
|
|
OUT UINTN **SeparateStrArray
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetStringImageByFont (
|
|
IN CHAR16 *String,
|
|
IN RECT *Field,
|
|
IN EFI_FONT_DISPLAY_INFO *FontDisplayInfo,
|
|
OUT EFI_IMAGE_OUTPUT **ImageOutput
|
|
);
|
|
|
|
BOOLEAN
|
|
IsVisibility (
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN H2O_VFR_PROPERTY *VfrProperty,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetPanelField (
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN H2O_VFR_PROPERTY *VfrProperty,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
IN RECT *RelativeField,
|
|
OUT RECT *PanelField
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetForegroundColor (
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN H2O_VFR_PROPERTY *VfrProperty,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
OUT H2O_COLOR_INFO *Color
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetBackgroundColor (
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN H2O_VFR_PROPERTY *VfrProperty,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
OUT H2O_COLOR_INFO *Color
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetPanelColorAttribute (
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN H2O_VFR_PROPERTY *VfrProperty,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
OUT UINT32 *PanelColorAttribute
|
|
);
|
|
|
|
UINT32
|
|
GetBorderWidth (
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN H2O_VFR_PROPERTY *VfrProperty,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetHeight(
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN H2O_VFR_PROPERTY *VfrProperty,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
IN RECT *RelativeField,
|
|
OUT INT32 *Height
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetWidth(
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN H2O_VFR_PROPERTY *VfrProperty,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
IN RECT *RelativeField,
|
|
OUT INT32 *Width
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetHotKeyList (
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN H2O_FORM_ID FormId,
|
|
OUT UINT32 *HotKeyInfoCount,
|
|
OUT HOT_KEY_INFO **HotKeyInfo
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetHotKeyListByQuestion (
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN H2O_FORM_ID FormId,
|
|
IN BOOLEAN IsQuestion,
|
|
IN UINT16 Id,
|
|
OUT UINT32 *HotKeyInfoCount,
|
|
OUT HOT_KEY_INFO **HotKeyInfo
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetHotKeyListByLayoutInfo (
|
|
IN H2O_LAYOUT_INFO *LayoutInfo,
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN H2O_FORM_ID FormId,
|
|
IN EFI_QUESTION_ID QuestionId,
|
|
OUT UINT32 *HotKeyInfoCount,
|
|
OUT HOT_KEY_INFO **HotKeyInfo
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetVfrPropertyByQuestion (
|
|
IN EFI_GUID *FormsetId,
|
|
IN UINT16 FormId OPTIONAL,
|
|
IN UINT32 StatementId OPTIONAL,
|
|
IN UINT64 Value OPTIONAL,
|
|
OUT H2O_VFR_PROPERTY *VfrProperty
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetPopUpTargetByQuestion (
|
|
IN H2O_FORM_BROWSER_Q *Question,
|
|
IN H2O_PANEL_INFO *Panel,
|
|
OUT EFI_GUID *PopUpFormsetId,
|
|
OUT UINT16 *PopUpFormId
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetFormPanelRect (
|
|
IN EFI_GUID *FormsetId,
|
|
IN UINT16 FormId,
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN RECT *RelativeField,
|
|
OUT RECT *FormPanelRect
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetStatementRect (
|
|
IN H2O_FORM_BROWSER_S *Statement,
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN RECT *RelativeField,
|
|
OUT RECT *StatementRect
|
|
);
|
|
|
|
H2O_PANEL_INFO *
|
|
GetPanelInfo (
|
|
IN H2O_LAYOUT_INFO *LayoutInfo,
|
|
IN UINT32 PanelId
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetStatementPropValue (
|
|
IN CHAR8 *PropStr,
|
|
IN H2O_FORM_BROWSER_S *Statement,
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
IN RECT *RelativeField,
|
|
OUT H2O_PROPERTY_VALUE *PropValue
|
|
);
|
|
|
|
UINT32
|
|
GetStyleTypeByOpCode (
|
|
IN UINT8 OpCode
|
|
);
|
|
|
|
VOID
|
|
SafeFreePool(
|
|
IN VOID **Buffer
|
|
);
|
|
|
|
UINT32
|
|
GetPseudoClassByStatement (
|
|
IN H2O_FORM_BROWSER_S *Statement
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetPropertyFromVfrAndPanel (
|
|
IN H2O_PANEL_INFO *Panel,
|
|
IN H2O_VFR_PROPERTY *VfrProperty,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
IN CHAR8 *IdentifierStr,
|
|
IN RECT *RelativeField OPTIONAL,
|
|
OUT H2O_PROPERTY_INFO **Property,
|
|
OUT H2O_PROPERTY_VALUE *PropValue
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetVfcfLayoutPropertyList (
|
|
IN UINT32 LayoutId,
|
|
IN EFI_GUID *DisplayEngineGuid,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
OUT H2O_PROPERTY_INFO ***PropertyList,
|
|
OUT UINTN *PropertyCount
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetVfcfPanelPropertyList (
|
|
IN H2O_PANEL_INFO *PanelInfo,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
OUT H2O_PROPERTY_INFO ***PropertyList,
|
|
OUT UINTN *PropertyCount
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetVfcfFormsetPropertyList (
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
OUT H2O_PROPERTY_INFO ***PropertyList,
|
|
OUT UINTN *PropertyCount
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetVfcfFormsetPropertyValue (
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
IN CHAR8 *IdentifierStr,
|
|
IN RECT *RelativeField OPTIONAL,
|
|
OUT H2O_PROPERTY_INFO **PropertyInfo,
|
|
OUT H2O_PROPERTY_VALUE *PropertyValue
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetVfcfFormPropertyList (
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN UINT16 FormId,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
OUT H2O_PROPERTY_INFO ***PropertyList,
|
|
OUT UINTN *PropertyCount
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetVfcfFormPropertyValue (
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN UINT16 FormId,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
IN CHAR8 *IdentifierStr,
|
|
IN RECT *RelativeField OPTIONAL,
|
|
OUT H2O_PROPERTY_INFO **PropertyInfo,
|
|
OUT H2O_PROPERTY_VALUE *PropertyValue
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetVfcfStatementPropertyValue (
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN BOOLEAN IsQuestion,
|
|
IN UINT16 Id,
|
|
IN UINT32 StyleType,
|
|
IN UINT32 PseudoClass,
|
|
IN CHAR8 *IdentifierStr,
|
|
IN RECT *RelativeField OPTIONAL,
|
|
OUT H2O_PROPERTY_INFO **PropertyInfo,
|
|
OUT H2O_PROPERTY_VALUE *PropertyValue
|
|
);
|
|
|
|
BOOLEAN
|
|
HaveVfcfFormsetInfo (
|
|
IN EFI_GUID *FormsetGuid
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetVfcfStatementExpressionList (
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN UINTN FormId,
|
|
IN BOOLEAN IsQuestion,
|
|
IN UINT16 Id,
|
|
IN UINT16 Position,
|
|
IN OUT UINTN *NumberExpression,
|
|
OUT H2O_EXPRESSION_INFO ***ExpressionInfoList
|
|
);
|
|
|
|
BOOLEAN
|
|
HaveVfcfFormInfo (
|
|
IN EFI_GUID *FormsetGuid,
|
|
IN UINTN FormId
|
|
);
|
|
|
|
EFI_STATUS
|
|
GetLayoutTreeAndVfrTree (
|
|
OUT LIST_ENTRY **LayoutListHead,
|
|
OUT LIST_ENTRY **VfrListHead
|
|
);
|
|
|
|
#endif
|
|
|