MdeModulePkg: Add BmpSupportLib class and instance
https://bugzilla.tianocore.org/show_bug.cgi?id=800 Based on content from the following branch/commits: https://github.com/Microsoft/MS_UEFI/tree/share/MsCapsuleSupport33bab4031a
ca516b1a61
2b9f111f2e
Add BmpSupportLib class and instances that provides services to convert a BMP graphics image to a GOP BLT buffer and to convert a GOP BLT buffer to a BMP graphics image. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Bret Barkelew <Bret.Barkelew@microsoft.com>
This commit is contained in:
committed by
Michael D Kinney
parent
54024039f8
commit
4123d6da70
106
MdeModulePkg/Include/Library/BmpSupportLib.h
Normal file
106
MdeModulePkg/Include/Library/BmpSupportLib.h
Normal file
@@ -0,0 +1,106 @@
|
||||
/** @file
|
||||
|
||||
Provides services to convert a BMP graphics image to a GOP BLT buffer
|
||||
and to convert a GOP BLT buffer to a BMP graphics image.
|
||||
|
||||
Copyright (c) 2016, Microsoft Corporation
|
||||
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
|
||||
|
||||
All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __BMP_SUPPORT_LIB_H__
|
||||
#define __BMP_SUPPORT_LIB_H__
|
||||
|
||||
#include <Protocol/GraphicsOutput.h>
|
||||
|
||||
/**
|
||||
Translate a *.BMP graphics image to a GOP blt buffer. If a NULL Blt buffer
|
||||
is passed in a GopBlt buffer will be allocated by this routine using
|
||||
EFI_BOOT_SERVICES.AllocatePool(). If a GopBlt buffer is passed in it will be
|
||||
used if it is big enough.
|
||||
|
||||
@param [in] BmpImage Pointer to BMP file.
|
||||
@param [in] BmpImageSize Number of bytes in BmpImage.
|
||||
@param [in, out] GopBlt Buffer containing GOP version of BmpImage.
|
||||
@param [in, out] GopBltSize Size of GopBlt in bytes.
|
||||
@param [out] PixelHeight Height of GopBlt/BmpImage in pixels.
|
||||
@param [out] PixelWidth Width of GopBlt/BmpImage in pixels.
|
||||
|
||||
@retval RETURN_SUCCESS GopBlt and GopBltSize are returned.
|
||||
@retval RETURN_INVALID_PARAMETER BmpImage is NULL.
|
||||
@retval RETURN_INVALID_PARAMETER GopBlt is NULL.
|
||||
@retval RETURN_INVALID_PARAMETER GopBltSize is NULL.
|
||||
@retval RETURN_INVALID_PARAMETER PixelHeight is NULL.
|
||||
@retval RETURN_INVALID_PARAMETER PixelWidth is NULL.
|
||||
@retval RETURN_UNSUPPORTED BmpImage is not a valid *.BMP image.
|
||||
@retval RETURN_BUFFER_TOO_SMALL The passed in GopBlt buffer is not big
|
||||
enough. The required size is returned in
|
||||
GopBltSize.
|
||||
@retval RETURN_OUT_OF_RESOURCES The GopBlt buffer could not be allocated.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
TranslateBmpToGopBlt (
|
||||
IN VOID *BmpImage,
|
||||
IN UINTN BmpImageSize,
|
||||
IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **GopBlt,
|
||||
IN OUT UINTN *GopBltSize,
|
||||
OUT UINTN *PixelHeight,
|
||||
OUT UINTN *PixelWidth
|
||||
);
|
||||
|
||||
/**
|
||||
Translate a GOP blt buffer to an uncompressed 24-bit per pixel BMP graphics
|
||||
image. If a NULL BmpImage is passed in a BmpImage buffer will be allocated by
|
||||
this routine using EFI_BOOT_SERVICES.AllocatePool(). If a BmpImage buffer is
|
||||
passed in it will be used if it is big enough.
|
||||
|
||||
@param [in] GopBlt Pointer to GOP blt buffer.
|
||||
@param [in] PixelHeight Height of GopBlt/BmpImage in pixels.
|
||||
@param [in] PixelWidth Width of GopBlt/BmpImage in pixels.
|
||||
@param [in, out] BmpImage Buffer containing BMP version of GopBlt.
|
||||
@param [in, out] BmpImageSize Size of BmpImage in bytes.
|
||||
|
||||
@retval RETURN_SUCCESS BmpImage and BmpImageSize are returned.
|
||||
@retval RETURN_INVALID_PARAMETER GopBlt is NULL.
|
||||
@retval RETURN_INVALID_PARAMETER BmpImage is NULL.
|
||||
@retval RETURN_INVALID_PARAMETER BmpImageSize is NULL.
|
||||
@retval RETURN_UNSUPPORTED GopBlt cannot be converted to a *.BMP image.
|
||||
@retval RETURN_BUFFER_TOO_SMALL The passed in BmpImage buffer is not big
|
||||
enough. The required size is returned in
|
||||
BmpImageSize.
|
||||
@retval RETURN_OUT_OF_RESOURCES The BmpImage buffer could not be allocated.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
TranslateGopBltToBmp (
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GopBlt,
|
||||
IN UINT32 PixelHeight,
|
||||
IN UINT32 PixelWidth,
|
||||
IN OUT VOID **BmpImage,
|
||||
IN OUT UINT32 *BmpImageSize
|
||||
);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user