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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
/*++
Copyright (c) 2007 - 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
which 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.
Module Name:
HiiImage.h
Abstract:
EFI_HII_IMAGE_PROTOCOL from UEFI 2.1 specification.
This protocol provides access to images in the images database.
Revision History
--*/
#ifndef __EFI_HII_IMAGE_PROTOCOL_H__
#define __EFI_HII_IMAGE_PROTOCOL_H__
#include "EfiHii.h"
#include EFI_PROTOCOL_DEFINITION (GraphicsOutput)
//
// Global ID for the Hii Image Protocol.
//
#define EFI_HII_IMAGE_PROTOCOL_GUID \
{ \
0x31a6406a, 0x6bdf, 0x4e46, {0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20} \
}
EFI_FORWARD_DECLARATION (EFI_HII_IMAGE_PROTOCOL);
typedef UINT32 EFI_HII_DRAW_FLAGS;
typedef struct _EFI_IMAGE_INPUT {
UINT32 Flags;
UINT16 Width;
UINT16 Height;
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Bitmap;
} EFI_IMAGE_INPUT;
#define EFI_IMAGE_TRANSPARENT 0x00000001
typedef struct _EFI_IMAGE_OUTPUT {
UINT16 Width;
UINT16 Height;
union {
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Bitmap;
EFI_GRAPHICS_OUTPUT_PROTOCOL *Screen;
} Image;
} EFI_IMAGE_OUTPUT;
#define EFI_HII_DRAW_FLAG_CLIP 0x00000001
#define EFI_HII_DRAW_FLAG_TRANSPARENT 0x00000030
#define EFI_HII_DRAW_FLAG_DEFAULT 0x00000000
#define EFI_HII_DRAW_FLAG_FORCE_TRANS 0x00000010
#define EFI_HII_DRAW_FLAG_FORCE_OPAQUE 0x00000020
#define EFI_HII_DIRECT_TO_SCREEN 0x00000080
typedef
EFI_STATUS
(EFIAPI *EFI_HII_NEW_IMAGE) (
IN CONST EFI_HII_IMAGE_PROTOCOL *This,
IN EFI_HII_HANDLE PackageList,
OUT EFI_IMAGE_ID *ImageId,
IN CONST EFI_IMAGE_INPUT *Image
)
/*++
Routine Description:
This function adds the image Image to the group of images owned by PackageList, and returns
a new image identifier (ImageId).
Arguments:
This - A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
PackageList - Handle of the package list where this image will be added.
ImageId - On return, contains the new image id, which is unique within PackageList.
Image - Points to the image.
Returns:
EFI_SUCCESS - The new image was added successfully.
EFI_NOT_FOUND - The specified PackageList could not be found in database.
EFI_OUT_OF_RESOURCES - Could not add the image due to lack of resources.
EFI_INVALID_PARAMETER - Image is NULL or ImageId is NULL.
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_HII_GET_IMAGE) (
IN CONST EFI_HII_IMAGE_PROTOCOL *This,
IN EFI_HII_HANDLE PackageList,
IN EFI_IMAGE_ID ImageId,
OUT EFI_IMAGE_INPUT *Image
)
/*++
Routine Description:
This function retrieves the image specified by ImageId which is associated with
the specified PackageList and copies it into the buffer specified by Image.
Arguments:
This - A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
PackageList - Handle of the package list where this image will be searched.
ImageId - The image's id,, which is unique within PackageList.
Image - Points to the image.
Returns:
EFI_SUCCESS - The new image was returned successfully.
EFI_NOT_FOUND - The image specified by ImageId is not available.
The specified PackageList is not in the database.
EFI_INVALID_PARAMETER - The Image or ImageSize was NULL.
EFI_OUT_OF_RESOURCES - The bitmap could not be retrieved because there was not
enough memory.
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_HII_SET_IMAGE) (
IN CONST EFI_HII_IMAGE_PROTOCOL *This,
IN EFI_HII_HANDLE PackageList,
IN EFI_IMAGE_ID ImageId,
IN CONST EFI_IMAGE_INPUT *Image
)
/*++
Routine Description:
This function updates the image specified by ImageId in the specified PackageListHandle to
the image specified by Image.
Arguments:
This - A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
PackageList - The package list containing the images.
ImageId - The image's id,, which is unique within PackageList.
Image - Points to the image.
Returns:
EFI_SUCCESS - The new image was updated successfully.
EFI_NOT_FOUND - The image specified by ImageId is not in the database.
The specified PackageList is not in the database.
EFI_INVALID_PARAMETER - The Image was NULL.
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_HII_DRAW_IMAGE) (
IN CONST EFI_HII_IMAGE_PROTOCOL *This,
IN EFI_HII_DRAW_FLAGS Flags,
IN CONST EFI_IMAGE_INPUT *Image,
IN OUT EFI_IMAGE_OUTPUT **Blt,
IN UINTN BltX,
IN UINTN BltY
)
/*++
Routine Description:
This function renders an image to a bitmap or the screen using the specified
color and options. It draws the image on an existing bitmap, allocates a new
bitmap or uses the screen. The images can be clipped.
Arguments:
This - A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
Flags - Describes how the image is to be drawn.
Image - Points to the image to be displayed.
Blt - If this points to a non-NULL on entry, this points to the
image, which is Width pixels wide and Height pixels high.
The image will be drawn onto this image and
EFI_HII_DRAW_FLAG_CLIP is implied. If this points to a
NULL on entry, then a buffer will be allocated to hold
the generated image and the pointer updated on exit. It
is the caller's responsibility to free this buffer.
BltX, BltY - Specifies the offset from the left and top edge of the
output image of the first pixel in the image.
Returns:
EFI_SUCCESS - The image was successfully drawn.
EFI_OUT_OF_RESOURCES - Unable to allocate an output buffer for Blt.
EFI_INVALID_PARAMETER - The Image or Blt was NULL.
EFI_INVALID_PARAMETER - Any combination of Flags is invalid.
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_HII_DRAW_IMAGE_ID) (
IN CONST EFI_HII_IMAGE_PROTOCOL *This,
IN EFI_HII_DRAW_FLAGS Flags,
IN EFI_HII_HANDLE PackageList,
IN EFI_IMAGE_ID ImageId,
IN OUT EFI_IMAGE_OUTPUT **Blt,
IN UINTN BltX,
IN UINTN BltY
)
/*++
Routine Description:
This function renders an image to a bitmap or the screen using the specified
color and options. It draws the image on an existing bitmap, allocates a new
bitmap or uses the screen. The images can be clipped.
Arguments:
This - A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
Flags - Describes how the image is to be drawn.
PackageList - The package list in the HII database to search for the
specified image.
ImageId - The image's id, which is unique within PackageList.
Blt - If this points to a non-NULL on entry, this points to the
image, which is Width pixels wide and Height pixels high.
The image will be drawn onto this image and
EFI_HII_DRAW_FLAG_CLIP is implied. If this points to a
NULL on entry, then a buffer will be allocated to hold
the generated image and the pointer updated on exit. It
is the caller's responsibility to free this buffer.
BltX, BltY - Specifies the offset from the left and top edge of the
output image of the first pixel in the image.
Returns:
EFI_SUCCESS - The image was successfully drawn.
EFI_OUT_OF_RESOURCES - Unable to allocate an output buffer for Blt.
EFI_NOT_FOUND - The image specified by ImageId is not in the database.
The specified PackageList is not in the database.
EFI_INVALID_PARAMETER - The Blt was NULL.
--*/
;
//
// Interface structure for the EFI_HII_IMAGE_PROTOCOL
//
struct _EFI_HII_IMAGE_PROTOCOL {
EFI_HII_NEW_IMAGE NewImage;
EFI_HII_GET_IMAGE GetImage;
EFI_HII_SET_IMAGE SetImage;
EFI_HII_DRAW_IMAGE DrawImage;
EFI_HII_DRAW_IMAGE_ID DrawImageId;
};
extern EFI_GUID gEfiHiiImageProtocolGuid;
#endif
|