summaryrefslogtreecommitdiff
path: root/Include/Protocol/HiiUtilities.h
blob: 3c90e195d140f79afb8a241f6f4f97c2f31df7ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2009, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093        **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************

//**********************************************************************
// $Header: /Alaska/BIN/Core/Include/Protocol/HiiUtilities.h 3     5/23/12 3:54p Artems $
//
// $Revision: 3 $
//
// $Date: 5/23/12 3:54p $
//**********************************************************************
// Revision History
// ----------------
// $Log: /Alaska/BIN/Core/Include/Protocol/HiiUtilities.h $
// 
// 3     5/23/12 3:54p Artems
// [TAG]  		EIP N/A
// [Category]  	Improvement
// [Description]  	Rewrite GraphicsConsole driver to draw strings as a
// whole,
// not symbol-by-symbol for performance reasons
// [Files]  		HiiUtilities.h, AmiDxeLib.h, EfiLib.h, GC.c, UefiHiiUtils.c
// 
// 2     2/23/10 10:14p Felixp
// SetBrowserData function is added
// 
// 1     10/09/09 3:15p Felixp
// 
//**********************************************************************
//<AMI_FHDR_START>
//
// Name:	HiiUtilities.h
//
// Description:	HII Utilities Protocol
//
//<AMI_FHDR_END>
//**********************************************************************
#ifndef __HII_UTILITIES_PROTOCOL__H__
#define __HII_UTILITIES_PROTOCOL__H__
#ifdef __cplusplus
extern "C" {
#endif
#include <EFI.h>

// {67B5787C-0E6A-4796-943E-A093B73A0267}
#define HII_UTILITIES_PROTOCOL_GUID \
    { 0x67b5787c, 0xe6a, 0x4796, 0x94, 0x3e, 0xa0, 0x93, 0xb7, 0x3a, 0x2, 0x67 }

GUID_VARIABLE_DECLARATION(gHiiUtilitiesProtocolGuid,HII_UTILITIES_PROTOCOL_GUID);

#ifndef GUID_VARIABLE_DEFINITION
#if EFI_SPECIFICATION_VERSION>0x20000
#include <Protocol/HiiConfigAccess.h>
#else
#include <Protocol/FormCallBack.h >
#endif

typedef struct _CALLBACK_INFO CALLBACK_INFO;

typedef VOID(*INIT_HII_PACK)(
	EFI_HII_HANDLE HiiHandle,
	CALLBACK_INFO *pCallBackFound
);

struct _CALLBACK_INFO{
	EFI_GUID *pGuid;
#if EFI_SPECIFICATION_VERSION>0x20000
	EFI_HII_CONFIG_ACCESS_PROTOCOL *pFormCallback;
#else
	EFI_FORM_CALLBACK_PROTOCOL *pFormCallback;
#endif
	UINT16 Class, SubClass;
	EFI_HII_HANDLE HiiHandle;
};

typedef EFI_STATUS (EFIAPI *HII_UTILS_LOAD_RESOURCES)(
	IN EFI_HANDLE ImageHandle, IN UINTN NumberOfCallbacks,
	IN CALLBACK_INFO *CallbackInfo, IN INIT_HII_PACK InitFunction OPTIONAL
);

typedef EFI_STATUS (EFIAPI *HII_UTILS_LOAD_STRINGS)(
	EFI_HANDLE ImageHandle, OUT EFI_HII_HANDLE *HiiHandle
);

typedef EFI_STATUS (EFIAPI *HII_UTILS_GET_STRING)(
	IN EFI_HII_HANDLE HiiHandle, IN STRING_REF StringId, 
	IN OUT UINTN *StringSize, OUT EFI_STRING String
);

typedef EFI_STATUS (EFIAPI *HII_UTILS_SET_STRING)(
	IN EFI_HII_HANDLE HiiHandle, IN STRING_REF StringId, IN EFI_STRING String
);

typedef EFI_STATUS (EFIAPI *HII_UTILS_PUBLISH_PACKAGES)(
    IN VOID *PackagePointers, IN UINTN NumberOfPackages, 
    IN EFI_GUID *PackageGuid, IN EFI_HANDLE DriverHandle OPTIONAL,
    OUT EFI_HII_HANDLE *HiiHandle
);

typedef EFI_STATUS (EFIAPI *HII_UTILS_GET_BROWSER_DATA)(
    IN UINTN *BufferSize, OUT VOID *Buffer, 
    IN CONST EFI_GUID *VarStoreGuid OPTIONAL,
    IN CONST CHAR16 *VarStoreName  OPTIONAL
);

typedef EFI_STATUS (EFIAPI *HII_UTILS_SET_BROWSER_DATA)(
    IN UINTN BufferSize, IN VOID *Buffer, 
    IN CONST EFI_GUID *VarStoreGuid, OPTIONAL 
    IN CONST CHAR16 *VarStoreName  OPTIONAL
);

typedef EFI_STATUS (EFIAPI *HII_UTILS_GET_GLYPH_WIDTH)(
    IN CHAR16 Char, OUT UINT16 *Width
);

typedef struct{
    HII_UTILS_LOAD_RESOURCES LoadResources;
    HII_UTILS_LOAD_STRINGS LoadStrings;
    HII_UTILS_PUBLISH_PACKAGES PublishPackages;
    HII_UTILS_GET_BROWSER_DATA GetBrowserData;
    HII_UTILS_SET_BROWSER_DATA SetBrowserData;
    HII_UTILS_GET_STRING GetString;
    HII_UTILS_SET_STRING SetString;
    HII_UTILS_GET_GLYPH_WIDTH GetGlyphWidth;
}HII_UTILITIES_PROTOCOL;

/****** DO NOT WRITE BELOW THIS LINE *******/
#endif // #ifndef GUID_VARIABLE_DEFINITION
#ifdef __cplusplus
}
#endif
#endif
//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2009, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093        **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************