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/MsCapsuleSupport33bab4031aca516b1a612b9f111f2eAdd 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>
		
			
				
	
	
		
			107 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @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
 |