X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdePkg%2FInclude%2FProtocol%2FHiiImage.h;h=14cf28f873050b97f3a56156d43b49c978402ed1;hb=2f88bd3a1296c522317f1c21377876de63de5be7;hp=ed511c7ac0cc825dc7569269f5b90180241fd214;hpb=d1f950002362305fcd4c30f108ef7b76679f5843;p=mirror_edk2.git diff --git a/MdePkg/Include/Protocol/HiiImage.h b/MdePkg/Include/Protocol/HiiImage.h index ed511c7ac0..14cf28f873 100644 --- a/MdePkg/Include/Protocol/HiiImage.h +++ b/MdePkg/Include/Protocol/HiiImage.h @@ -1,80 +1,74 @@ /** @file The file provides services to access to images in the images database. - - Copyright (c) 2006 - 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. + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent - Module Name: HiiImage.h + @par Revision Reference: + This Protocol was introduced in UEFI Specification 2.1. **/ #ifndef __HII_IMAGE_H__ #define __HII_IMAGE_H__ +#include #define EFI_HII_IMAGE_PROTOCOL_GUID \ { 0x31a6406a, 0x6bdf, 0x4e46, { 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20 } } typedef struct _EFI_HII_IMAGE_PROTOCOL EFI_HII_IMAGE_PROTOCOL; - -// -// Flags in EFI_IMAGE_INPUT -// -#define EFI_IMAGE_TRANSPARENT 0x00000001 +/// +/// Flags in EFI_IMAGE_INPUT +/// +#define EFI_IMAGE_TRANSPARENT 0x00000001 /** - + Definition of EFI_IMAGE_INPUT. - + @param Flags Describe image characteristics. If EFI_IMAGE_TRANSPARENT is set, then the image was designed for transparent display. - @param Width Image width, in pixels. + @param Width Image width, in pixels. @param Height Image height, in pixels. - @param Bitmap The actual bitmap, organized left-to-right, + @param Bitmap A pointer to the actual bitmap, organized left-to-right, top-to-bottom. The size of the bitmap is Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL). - + **/ typedef struct _EFI_IMAGE_INPUT { - UINT32 Flags; - UINT16 Width; - UINT16 Height; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Bitmap; + UINT32 Flags; + UINT16 Width; + UINT16 Height; + EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Bitmap; } EFI_IMAGE_INPUT; - /** This function adds the image Image to the group of images owned by PackageList, and returns a new image identifier (ImageId). - @param This A pointer to the EFI_HII_IMAGE_PROTOCOL - instance. PackageList Handle of the package list - where this image will be added. + @param This A pointer to the EFI_HII_IMAGE_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 ImageId On return, contains the new image id, which is + unique within PackageList. - @param Image Points to the image. + @param Image Points to the image. @retval EFI_SUCCESS The new image was added successfully - + @retval EFI_OUT_OF_RESOURCES Could not add the image. - + @retval EFI_INVALID_PARAMETER Image is NULL or ImageId is NULL. @@ -82,12 +76,12 @@ typedef struct _EFI_IMAGE_INPUT { **/ typedef EFI_STATUS -(EFIAPI *EFI_HII_NEW_IMAGE) ( +(EFIAPI *EFI_HII_NEW_IMAGE)( IN CONST EFI_HII_IMAGE_PROTOCOL *This, - IN CONST EFI_HII_HANDLE PackageList, + IN EFI_HII_HANDLE PackageList, OUT EFI_IMAGE_ID *ImageId, IN CONST EFI_IMAGE_INPUT *Image -); + ); /** @@ -101,97 +95,84 @@ EFI_STATUS updated to the size of buffer actually required to hold the image. - @param This A pointer to the EFI_HII_IMAGE_PROTOCOL - instance. - + @param This A pointer to the EFI_HII_IMAGE_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 new image. - - @param 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. - - - @retval EFI_SUCCESS The image was returned successfully. - - @retval EFI_NOT_FOUND The image specified by ImageId is not - available. - - @retval EFI_BUFFER_TOO_SMALL The buffer specified by - ImageLength is too small to hold - the image. - - @retval EFI_INVALID_PARAMETER The Image or Langugae was NULL. + + @param ImageId The image's id, which is unique within + PackageList. + + @param Image Points to the new image. + + @retval EFI_SUCCESS The image was returned successfully. + + @retval EFI_NOT_FOUND The image specified by ImageId is not + available. Or The specified PackageList is not in the database. + + @retval EFI_INVALID_PARAMETER The Image or Langugae was NULL. + @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) ( +(EFIAPI *EFI_HII_GET_IMAGE)( IN CONST EFI_HII_IMAGE_PROTOCOL *This, - IN CONST EFI_HII_HANDLE PackageList, - IN CONST EFI_IMAGE_ID ImageId, - OUT EFI_IMAGE_INPUT *Image, - OUT UINTN *ImageSize -); + IN EFI_HII_HANDLE PackageList, + IN EFI_IMAGE_ID ImageId, + OUT EFI_IMAGE_INPUT *Image + ); /** - + This function updates the image specified by ImageId in the specified PackageListHandle to the image specified by Image. - @param This A pointer to the EFI_HII_IMAGE_PROTOCOL - instance. + @param This A pointer to the EFI_HII_IMAGE_PROTOCOL instance. @param PackageList The package list containing the images. - @param ImageId The image id, which is unique within - PackageList. + @param ImageId The image id, which is unique within PackageList. - @param Image Points to the image. + @param Image Points to the image. - @retval EFI_SUCCESS The image was successfully updated. - - @retval EFI_NOT_FOUND The image specified by ImageId is not - in the database. - - @retval EFI_INVALID_PARAMETER The Image or Language was - NULL. + @retval EFI_SUCCESS The 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 or Language was NULL. **/ typedef EFI_STATUS -(EFIAPI *EFI_HII_SET_IMAGE) ( +(EFIAPI *EFI_HII_SET_IMAGE)( IN CONST EFI_HII_IMAGE_PROTOCOL *This, - IN CONST EFI_HII_HANDLE PackageList, - IN CONST EFI_IMAGE_ID ImageId, - IN CONST EFI_IMAGE_INPUT Image -); - + IN EFI_HII_HANDLE PackageList, + IN EFI_IMAGE_ID ImageId, + IN CONST EFI_IMAGE_INPUT *Image + ); -// -// EFI_HII_DRAW_FLAGS -// -typedef UINT32 EFI_HII_DRAW_FLAGS; +/// +/// EFI_HII_DRAW_FLAGS describes how the image is to be drawn. +/// These flags are defined as EFI_HII_DRAW_FLAG_*** +/// +typedef UINT32 EFI_HII_DRAW_FLAGS; #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 0x00000001 -#define EFI_HII_DRAW_FLAG_FORCE_OPAQUE 0x00000002 +#define EFI_HII_DRAW_FLAG_FORCE_TRANS 0x00000010 +#define EFI_HII_DRAW_FLAG_FORCE_OPAQUE 0x00000020 #define EFI_HII_DIRECT_TO_SCREEN 0x00000080 - /** - + Definition of EFI_IMAGE_OUTPUT. - + @param Width Width of the output image. @param Height Height of the output image. @@ -204,24 +185,23 @@ typedef UINT32 EFI_HII_DRAW_FLAGS; **/ typedef struct _EFI_IMAGE_OUTPUT { - UINT16 Width; - UINT16 Height; + UINT16 Width; + UINT16 Height; union { - EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Bitmap; - EFI_GRAPHICS_OUTPUT_PROTOCOL *Screen; + EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Bitmap; + EFI_GRAPHICS_OUTPUT_PROTOCOL *Screen; } Image; } EFI_IMAGE_OUTPUT; - /** - + 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. If EFI_HII_DRAW_FLAG_CLIP is set, then all pixels drawn outside the bounding box specified by Width and Height are ignored. If EFI_HII_DRAW_FLAG_TRANSPARENT is set, - then all ????off???? pixels in the images drawn will use the + then all 'off' pixels in the images drawn will use the pixel value from Blt. This flag cannot be used if Blt is NULL upon entry. If EFI_HII_DIRECT_TO_SCREEN is set, then the image will be written directly to the output device specified by @@ -229,29 +209,28 @@ typedef struct _EFI_IMAGE_OUTPUT { specified by Bitmap. - @param This A pointer to the EFI_HII_IMAGE_PROTOCOL - instance. - - @param Flags Describes how the image is to be drawn. - EFI_HII_DRAW_FLAGS is defined in Related - Definitions, below. - - @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 This A pointer to the EFI_HII_IMAGE_PROTOCOL instance. - @param BltX, BltY Specifies the offset from the left and top - edge of the image of the first pixel in - the image. + @param Flags Describes how the image is to be drawn. + EFI_HII_DRAW_FLAGS is defined in Related + Definitions, below. + + @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, BltY Specifies the offset from the left and top + edge of the image of the first pixel in + the image. - @retval EFI_SUCCESS The image was successfully updated. + @retval EFI_SUCCESS The image was successfully updated. @retval EFI_OUT_OF_RESOURCES Unable to allocate an output buffer for RowInfoArray or Blt. @@ -263,17 +242,17 @@ typedef struct _EFI_IMAGE_OUTPUT { **/ typedef EFI_STATUS -(EFIAPI *EFI_HII_DRAW_IMAGE) ( +(EFIAPI *EFI_HII_DRAW_IMAGE)( IN CONST EFI_HII_IMAGE_PROTOCOL *This, - IN CONST EFI_HII_DRAW_FLAGS Flags, - IN CONST EFI_IMAGE_INPUT Image, + IN EFI_HII_DRAW_FLAGS Flags, + IN CONST EFI_IMAGE_INPUT *Image, IN OUT EFI_IMAGE_OUTPUT **Blt, - IN CONST UINTN BltX, - IN CONST UINTN BltY -); + IN UINTN BltX, + IN UINTN BltY + ); /** - + This function renders an image as a bitmap or to the screen and can clip the image. The bitmap is either supplied by the caller or else is allocated by the function. The images can be drawn @@ -294,89 +273,74 @@ EFI_STATUS Height are ignored. The EFI_HII_DRAW_FLAG_TRANSPARENT flag determines whether the image will be drawn transparent or opaque. If EFI_HII_DRAW_FLAG_FORCE_TRANS is set, then the image - will be drawn so that all ????off???? pixels in the image will + will be drawn so that all 'off' pixels in the image will be drawn using the pixel value from Blt and all other pixels will be copied. If EFI_HII_DRAW_FLAG_FORCE_OPAQUE is set, then - the image????s pixels will be copied directly to the + the image's pixels will be copied directly to the destination. If EFI_HII_DRAW_FLAG_DEFAULT is set, then the image will be drawn transparently or opaque, depending on the - image????s transparency setting (see EFI_IMAGE_TRANSPARENT). + image's transparency setting (see EFI_IMAGE_TRANSPARENT). Images cannot be drawn transparently if Blt is NULL. If EFI_HII_DIRECT_TO_SCREEN is set, then the image will be written directly to the output device specified by Screen. Otherwise the image will be rendered to the bitmap specified by Bitmap. - @param This A pointer to the EFI_HII_IMAGE_PROTOCOL - instance. + @param This A pointer to the EFI_HII_IMAGE_PROTOCOL instance. - @param Flags Describes how the image is to be drawn. + @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 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 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, 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 updated. - + @retval EFI_SUCCESS The image was successfully updated. + @retval EFI_OUT_OF_RESOURCES Unable to allocate an output buffer for RowInfoArray or Blt. - - @retval EFI_INVALID_PARAMETER The Image or Blt or Height or - Width was NULL. + + @retval EFI_NOT_FOUND The image specified by ImageId is not in the database. + Or The specified PackageList is not in the database. + + @retval EFI_INVALID_PARAMETER The Blt was NULL. **/ typedef EFI_STATUS -(EFIAPI *EFI_HII_DRAW_IMAGE_ID) ( -IN CONST EFI_HII_IMAGE_PROTOCOL *This, -IN CONST EFI_HII_DRAW_FLAGS Flags, -IN CONST EFI_HII_HANDLE PackageList, -IN CONST EFI_IMAGE_ID ImageId, -IN OUT EFI_IMAGE_OUTPUT **Blt, -IN CONST UINTN BltX, -IN CONST UINTN BltY -); - - -/** - - services to access to images in the images database. - - @param NewImage Add a new image. - - @param GetImage Retrieve an image and related font - information. - - @param SetImage Change an image. EFI_INVALID_LANGUAGE The - language specified by FirstLanguage is not - present in the specified package list. - EFI_INVALID_PARAMETER FirstLanguage is NULL - or SecondLanguage is NULL. +(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 + ); -**/ +/// +/// Services to access to images in the images database. +/// 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_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; +extern EFI_GUID gEfiHiiImageProtocolGuid; #endif -