mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 09:21:56 +00:00 
			
		
		
		
	 9344f09215
			
		
	
	
		9344f09215
		
	
	
	
	
		
			
			https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			249 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			249 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Protocol which allows access to the images in the images database.
 | |
| 
 | |
| (C) Copyright 2016-2018 Hewlett Packard Enterprise Development LP<BR>
 | |
| 
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
|   @par Revision Reference:
 | |
|   This Protocol was introduced in UEFI Specification 2.6.
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __EFI_HII_IMAGE_EX_H__
 | |
| #define __EFI_HII_IMAGE_EX_H__
 | |
| 
 | |
| #include <Protocol/HiiImage.h>
 | |
| 
 | |
| //
 | |
| // Global ID for the Hii Image Ex Protocol.
 | |
| //
 | |
| #define EFI_HII_IMAGE_EX_PROTOCOL_GUID \
 | |
|   {0x1a1241e6, 0x8f19, 0x41a9,  { 0xbc, 0xe, 0xe8, 0xef, 0x39, 0xe0, 0x65, 0x46 }}
 | |
| 
 | |
| typedef struct _EFI_HII_IMAGE_EX_PROTOCOL EFI_HII_IMAGE_EX_PROTOCOL;
 | |
| 
 | |
| /**
 | |
|   The prototype of this extension function is the same with EFI_HII_IMAGE_PROTOCOL.NewImage().
 | |
|   This protocol invokes EFI_HII_IMAGE_PROTOCOL.NewImage() implicitly.
 | |
| 
 | |
|   @param  This                   A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.
 | |
|   @param  PackageList            Handle of the package list where this image will
 | |
|                                  be added.
 | |
|   @param  ImageId                On return, contains the new image id, which is
 | |
|                                  unique within PackageList.
 | |
|   @param  Image                  Points to the image.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The new image was added successfully.
 | |
|   @retval EFI_NOT_FOUND          The specified PackageList could not be found in
 | |
|                                  database.
 | |
|   @retval EFI_OUT_OF_RESOURCES   Could not add the image due to lack of resources.
 | |
|   @retval EFI_INVALID_PARAMETER  Image is NULL or ImageId is NULL.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_HII_NEW_IMAGE_EX)(
 | |
|   IN CONST  EFI_HII_IMAGE_EX_PROTOCOL  *This,
 | |
|   IN        EFI_HII_HANDLE              PackageList,
 | |
|   OUT       EFI_IMAGE_ID                *ImageId,
 | |
|   IN CONST  EFI_IMAGE_INPUT             *Image
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Return the information about the image, associated with the package list.
 | |
|   The prototype of this extension function is the same with EFI_HII_IMAGE_PROTOCOL.GetImage().
 | |
| 
 | |
|   This function is similar to EFI_HII_IMAGE_PROTOCOL.GetImage().The difference is that
 | |
|   this function will locate all EFI_HII_IMAGE_DECODER_PROTOCOL instances installed in the
 | |
|   system if the decoder of the certain image type is not supported by the
 | |
|   EFI_HII_IMAGE_EX_PROTOCOL. The function will attempt to decode the image to the
 | |
|   EFI_IMAGE_INPUT using the first EFI_HII_IMAGE_DECODER_PROTOCOL instance that
 | |
|   supports the requested image type.
 | |
| 
 | |
|   @param  This                   A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.
 | |
|   @param  PackageList            The package list in the HII database to search for the
 | |
|                                  specified image.
 | |
|   @param  ImageId                The image's id, which is unique within PackageList.
 | |
|   @param  Image                  Points to the image.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The new image was returned successfully.
 | |
|   @retval EFI_NOT_FOUND          The image specified by ImageId is not available. The specified
 | |
|                                  PackageList is not in the Database.
 | |
|   @retval EFI_INVALID_PARAMETER  Image was NULL or ImageId was 0.
 | |
|   @retval EFI_OUT_OF_RESOURCES   The bitmap could not be retrieved because there
 | |
|                                  was not enough memory.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_HII_GET_IMAGE_EX)(
 | |
|   IN CONST  EFI_HII_IMAGE_EX_PROTOCOL       *This,
 | |
|   IN        EFI_HII_HANDLE                  PackageList,
 | |
|   IN        EFI_IMAGE_ID                    ImageId,
 | |
|   OUT       EFI_IMAGE_INPUT                 *Image
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Change the information about the image.
 | |
| 
 | |
|   Same with EFI_HII_IMAGE_PROTOCOL.SetImage(),this protocol invokes
 | |
|   EFI_HII_IMAGE_PROTOCOL.SetImage()implicitly.
 | |
| 
 | |
|   @param  This                   A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.
 | |
|   @param  PackageList            The package list containing the images.
 | |
|   @param  ImageId                The image's id, which is unique within PackageList.
 | |
|   @param  Image                  Points to the image.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The new image was successfully updated.
 | |
|   @retval EFI_NOT_FOUND          The image specified by ImageId is not in the
 | |
|                                  database. The specified PackageList is not in
 | |
|                                  the database.
 | |
|   @retval EFI_INVALID_PARAMETER  The Image was NULL, the ImageId was 0 or
 | |
|                                  the Image->Bitmap was NULL.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_HII_SET_IMAGE_EX)(
 | |
|   IN CONST  EFI_HII_IMAGE_EX_PROTOCOL   *This,
 | |
|   IN        EFI_HII_HANDLE              PackageList,
 | |
|   IN        EFI_IMAGE_ID                ImageId,
 | |
|   IN CONST  EFI_IMAGE_INPUT             *Image
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Renders an image to a bitmap or to the display.
 | |
| 
 | |
|   The prototype of this extension function is the same with
 | |
|   EFI_HII_IMAGE_PROTOCOL.DrawImage(). This protocol invokes
 | |
|   EFI_HII_IMAGE_PROTOCOL.DrawImage() implicitly.
 | |
| 
 | |
|   @param  This                   A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.
 | |
|   @param  Flags                  Describes how the image is to be drawn.
 | |
|   @param  Image                  Points to the image to be displayed.
 | |
|   @param  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.
 | |
|   @param  BltX                   Specifies the offset from the left and top edge of
 | |
|                                  the output image of the first pixel in the image.
 | |
|   @param  BltY                   Specifies the offset from the left and top edge of
 | |
|                                  the output image of the first pixel in the image.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The image was successfully drawn.
 | |
|   @retval EFI_OUT_OF_RESOURCES   Unable to allocate an output buffer for Blt.
 | |
|   @retval EFI_INVALID_PARAMETER  The Image or Blt was NULL.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_HII_DRAW_IMAGE_EX)(
 | |
|   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
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Renders an image to a bitmap or the screen containing the contents of the specified
 | |
|   image.
 | |
| 
 | |
|   This function is similar to EFI_HII_IMAGE_PROTOCOL.DrawImageId(). The difference is that
 | |
|   this function will locate all EFI_HII_IMAGE_DECODER_PROTOCOL instances installed in the
 | |
|   system if the decoder of the certain image type is not supported by the
 | |
|   EFI_HII_IMAGE_EX_PROTOCOL. The function will attempt to decode the image to the
 | |
|   EFI_IMAGE_INPUT using the first EFI_HII_IMAGE_DECODER_PROTOCOL instance that
 | |
|   supports the requested image type.
 | |
| 
 | |
|   @param  This                   A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.
 | |
|   @param  Flags                  Describes how the image is to be drawn.
 | |
|   @param  PackageList            The package list in the HII database to search for
 | |
|                                  the  specified image.
 | |
|   @param  ImageId                The image's id, which is unique within PackageList.
 | |
|   @param  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.
 | |
|   @param  BltX                   Specifies the offset from the left and top edge of
 | |
|                                  the output image of the first pixel in the image.
 | |
|   @param  BltY                   Specifies the offset from the left and top edge of
 | |
|                                  the output image of the first pixel in the image.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The image was successfully drawn.
 | |
|   @retval EFI_OUT_OF_RESOURCES   Unable to allocate an output buffer for Blt.
 | |
|   @retval EFI_INVALID_PARAMETER  The Blt was NULL or ImageId was 0.
 | |
|   @retval EFI_NOT_FOUND          The image specified by ImageId is not in the database.
 | |
|                                  The specified PackageList is not in the database.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_HII_DRAW_IMAGE_ID_EX)(
 | |
|   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
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function returns the image information to EFI_IMAGE_OUTPUT. Only the width
 | |
|   and height are returned to the EFI_IMAGE_OUTPUT instead of decoding the image
 | |
|   to the buffer. This function is used to get the geometry of the image. This function
 | |
|   will try to locate all of the EFI_HII_IMAGE_DECODER_PROTOCOL installed on the
 | |
|   system if the decoder of image type is not supported by the EFI_HII_IMAGE_EX_PROTOCOL.
 | |
| 
 | |
|   @param  This                   A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.
 | |
|   @param  PackageList            Handle of the package list where this image will
 | |
|                                  be searched.
 | |
|   @param  ImageId                The image's id, which is unique within PackageList.
 | |
|   @param  Image                  Points to the image.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The new image was returned successfully.
 | |
|   @retval EFI_NOT_FOUND          The image specified by ImageId is not in the
 | |
|                                  database. The specified PackageList is not in the database.
 | |
|   @retval EFI_BUFFER_TOO_SMALL   The buffer specified by ImageSize is too small to
 | |
|                                  hold the image.
 | |
|   @retval EFI_INVALID_PARAMETER  The Image was NULL or the ImageId was 0.
 | |
|   @retval EFI_OUT_OF_RESOURCES   The bitmap could not be retrieved because there
 | |
|                                  was not enough memory.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_HII_GET_IMAGE_INFO)(
 | |
|   IN CONST  EFI_HII_IMAGE_EX_PROTOCOL       *This,
 | |
|   IN        EFI_HII_HANDLE                  PackageList,
 | |
|   IN        EFI_IMAGE_ID                    ImageId,
 | |
|   OUT       EFI_IMAGE_OUTPUT                *Image
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// Protocol which allows access to the images in the images database.
 | |
| ///
 | |
| struct _EFI_HII_IMAGE_EX_PROTOCOL {
 | |
|   EFI_HII_NEW_IMAGE_EX      NewImageEx;
 | |
|   EFI_HII_GET_IMAGE_EX      GetImageEx;
 | |
|   EFI_HII_SET_IMAGE_EX      SetImageEx;
 | |
|   EFI_HII_DRAW_IMAGE_EX     DrawImageEx;
 | |
|   EFI_HII_DRAW_IMAGE_ID_EX  DrawImageIdEx;
 | |
|   EFI_HII_GET_IMAGE_INFO    GetImageInfo;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gEfiHiiImageExProtocolGuid;
 | |
| 
 | |
| #endif
 |