/*++ Copyright (c) 2007, Intel Corporation All rights reserved. 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[1]; } 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, OUT UINTN *ImageSize ) /*++ 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. ImageSize - On entry, points to the size of the buffer pointed to by Image, in bytes. On return, points to the length of the image, in bytes. Returns: EFI_SUCCESS - The new image was returned successfully. EFI_NOT_FOUND - The image specified by ImageId is not available. EFI_BUFFER_TOO_SMALL - The buffer specified by ImageSize is too small to hold the image. EFI_INVALID_PARAMETER - The Image or ImageSize was NULL. --*/ ; 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. 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_INVALID_PARAMETER - The Image was NULL. --*/ ; // // Interface structure for the EFI_HII_IMAGE_PROTOCOL // typedef 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; } EFI_HII_IMAGE_PROTOCOL; extern EFI_GUID gEfiHiiImageProtocolGuid; #endif