mirror of https://github.com/acidanthera/audk.git
255 lines
9.8 KiB
C
255 lines
9.8 KiB
C
/*++
|
||
|
||
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<67><65>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<67><65>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<65><72>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<65><72>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
|
||
//
|
||
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
|