mirror of https://github.com/acidanthera/audk.git
255 lines
9.9 KiB
C
255 lines
9.9 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<EFBFBD><EFBFBD>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<EFBFBD><EFBFBD>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<EFBFBD><EFBFBD>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<EFBFBD><EFBFBD>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
|