31 IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
32 IN EFI_HII_HANDLE PackageList,
33 OUT EFI_IMAGE_ID *ImageId,
34 IN CONST EFI_IMAGE_INPUT *Image
71 IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
72 IN EFI_HII_HANDLE PackageList,
73 IN EFI_IMAGE_ID ImageId,
74 OUT EFI_IMAGE_INPUT *Image
105 IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
106 IN EFI_HII_HANDLE PackageList,
107 IN EFI_IMAGE_ID ImageId,
108 IN CONST EFI_IMAGE_INPUT *Image
148 IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
149 IN EFI_HII_DRAW_FLAGS Flags,
150 IN CONST EFI_IMAGE_INPUT *Image,
151 IN OUT EFI_IMAGE_OUTPUT **Blt,
201 IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
202 IN EFI_HII_DRAW_FLAGS Flags,
203 IN EFI_HII_HANDLE PackageList,
204 IN EFI_IMAGE_ID ImageId,
205 IN OUT EFI_IMAGE_OUTPUT **Blt,
211 EFI_IMAGE_INPUT Image;
216 if ((This == NULL) || (Blt == NULL)) {
217 return EFI_INVALID_PARAMETER;
224 if (EFI_ERROR (Status)) {
232 if (Image.Bitmap != NULL) {
233 FreePool (Image.Bitmap);
246EFI_HII_IMAGE_DECODER_PROTOCOL *
252 EFI_HII_IMAGE_DECODER_PROTOCOL *Decoder;
256 EFI_GUID *DecoderNames;
257 UINT16 NumberOfDecoderName;
258 UINT16 DecoderNameIndex;
259 EFI_GUID *DecoderName;
262 case EFI_HII_IIBT_IMAGE_JPEG:
263 DecoderName = &gEfiHiiImageDecoderNameJpegGuid;
266 case EFI_HII_IIBT_IMAGE_PNG:
267 DecoderName = &gEfiHiiImageDecoderNamePngGuid;
275 Status =
gBS->LocateHandleBuffer (ByProtocol, &gEfiHiiImageDecoderProtocolGuid, NULL, &HandleNum, &Handles);
276 if (EFI_ERROR (Status)) {
280 for (Index = 0; Index < HandleNum; Index++) {
281 Status =
gBS->HandleProtocol (Handles[Index], &gEfiHiiImageDecoderProtocolGuid, (VOID **)&Decoder);
282 if (EFI_ERROR (Status)) {
286 Status = Decoder->GetImageDecoderName (Decoder, &DecoderNames, &NumberOfDecoderName);
287 if (EFI_ERROR (Status)) {
291 for (DecoderNameIndex = 0; DecoderNameIndex < NumberOfDecoderName; DecoderNameIndex++) {
292 if (
CompareGuid (DecoderName, &DecoderNames[DecoderNameIndex])) {
327 IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
328 IN EFI_HII_HANDLE PackageList,
329 IN EFI_IMAGE_ID ImageId,
330 OUT EFI_IMAGE_OUTPUT *Image
337 EFI_HII_IMAGE_BLOCK *CurrentImageBlock;
338 EFI_HII_IMAGE_DECODER_PROTOCOL *Decoder;
339 EFI_HII_IMAGE_DECODER_IMAGE_INFO_HEADER *ImageInfo;
341 if ((Image == NULL) || (ImageId == 0)) {
342 return EFI_INVALID_PARAMETER;
347 if (PackageListNode == NULL) {
348 return EFI_NOT_FOUND;
351 ImagePackage = PackageListNode->
ImagePkg;
352 if (ImagePackage == NULL) {
353 return EFI_NOT_FOUND;
360 if (CurrentImageBlock == NULL) {
361 return EFI_NOT_FOUND;
364 switch (CurrentImageBlock->BlockType) {
365 case EFI_HII_IIBT_IMAGE_JPEG:
366 case EFI_HII_IIBT_IMAGE_PNG:
368 if (Decoder == NULL) {
369 return EFI_UNSUPPORTED;
375 ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data));
377 sizeof (((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Data) ==
378 sizeof (((EFI_HII_IIBT_PNG_BLOCK *)CurrentImageBlock)->Data)
380 ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK,
Size) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK,
Size));
382 sizeof (((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->
Size) ==
383 sizeof (((EFI_HII_IIBT_PNG_BLOCK *)CurrentImageBlock)->
Size)
385 Status = Decoder->GetImageInfo (
387 ((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Data,
388 ((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->
Size,
396 if (!EFI_ERROR (Status)) {
397 Image->Height = ImageInfo->ImageHeight;
398 Image->Width = ImageInfo->ImageWidth;
399 Image->Image.Bitmap = NULL;
400 FreePool (ImageInfo);
405 case EFI_HII_IIBT_IMAGE_1BIT_TRANS:
406 case EFI_HII_IIBT_IMAGE_4BIT_TRANS:
407 case EFI_HII_IIBT_IMAGE_8BIT_TRANS:
408 case EFI_HII_IIBT_IMAGE_1BIT:
409 case EFI_HII_IIBT_IMAGE_4BIT:
410 case EFI_HII_IIBT_IMAGE_8BIT:
414 Image->Width =
ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width);
415 Image->Height =
ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height);
416 Image->Image.Bitmap = NULL;
419 case EFI_HII_IIBT_IMAGE_24BIT_TRANS:
420 case EFI_HII_IIBT_IMAGE_24BIT:
421 Image->Width =
ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width);
422 Image->Height =
ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height);
423 Image->Image.Bitmap = NULL;
427 return EFI_NOT_FOUND;
EFI_HII_IMAGE_BLOCK * GetImageIdOrAddress(IN EFI_HII_IMAGE_BLOCK *ImageBlocks, IN OUT EFI_IMAGE_ID *ImageId)
EFI_STATUS IGetImage(IN LIST_ENTRY *Database, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, OUT EFI_IMAGE_INPUT *Image, IN BOOLEAN BitmapOnly)
HII_DATABASE_PACKAGE_LIST_INSTANCE * LocatePackageList(IN LIST_ENTRY *Database, IN EFI_HII_HANDLE PackageList)
EFI_STATUS EFIAPI HiiDrawImage(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)
#define HII_IMAGE_EX_DATABASE_PRIVATE_DATA_FROM_THIS(a)
EFI_STATUS EFIAPI HiiNewImage(IN CONST EFI_HII_IMAGE_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, OUT EFI_IMAGE_ID *ImageId, IN CONST EFI_IMAGE_INPUT *Image)
EFI_STATUS EFIAPI HiiSetImage(IN CONST EFI_HII_IMAGE_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, IN CONST EFI_IMAGE_INPUT *Image)
EFI_STATUS EFIAPI HiiGetImageEx(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, OUT EFI_IMAGE_INPUT *Image)
EFI_STATUS EFIAPI HiiDrawImageIdEx(IN CONST EFI_HII_IMAGE_EX_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)
EFI_STATUS EFIAPI HiiSetImageEx(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, IN CONST EFI_IMAGE_INPUT *Image)
EFI_STATUS EFIAPI HiiGetImageInfo(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, OUT EFI_IMAGE_OUTPUT *Image)
EFI_STATUS EFIAPI HiiNewImageEx(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, OUT EFI_IMAGE_ID *ImageId, IN CONST EFI_IMAGE_INPUT *Image)
EFI_HII_IMAGE_DECODER_PROTOCOL * LocateHiiImageDecoder(UINT8 BlockType)
EFI_STATUS EFIAPI HiiDrawImageEx(IN CONST EFI_HII_IMAGE_EX_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)
DMG_SIZE_DEVICE_PATH Size
UINT16 EFIAPI ReadUnaligned16(IN CONST UINT16 *Buffer)
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
HII_IMAGE_PACKAGE_INSTANCE * ImagePkg
EFI_HII_IMAGE_PROTOCOL HiiImage
EFI_HII_IMAGE_BLOCK * ImageBlock