You've already forked edk2-upstream
mirror of
https://github.com/Dasharo/edk2-upstream.git
synced 2026-03-06 15:03:57 -08:00
Replace traditional `#ifndef`/`#define`/`#endif` include guards with
`#pragma` once.
`#pragma once` is a widely supported preprocessor directive that
prevents header files from being included multiple times. It is
supported by all toolchains used to build edk2: GCC, Clang/LLVM, and
MSVC.
Compared to macro-based include guards, `#pragma once`:
- Eliminates the risk of macro name collisions or copy/paste errors
where two headers inadvertently use the same guard macro.
- Eliminate inconsistency in the way include guard macros are named
(e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.).
- Reduces boilerplate (three lines replaced by one).
- Avoids polluting the macro namespace with guard symbols.
- Can improve build times as the preprocessor can skip re-opening the
file entirely, rather than re-reading it to find the matching
`#endif` ("multiple-include optimization").
- Note that some compilers may already optimize traditional include
guards, by recognzining the idiomatic pattern.
This change is made acknowledging that overall portability of the
code will technically be reduced, as `#pragma once` is not part of the
C/C++ standards.
However, this is considered acceptable given:
1. edk2 already defines a subset of supported compilers in
BaseTools/Conf/tools_def.template, all of which have supported
`#pragma once` for over two decades.
2. There have been concerns raised to the project about inconsistent
include guard naming and potential macro collisions.
Approximate compiler support dates:
- MSVC: Supported since Visual C++ 4.2 (1996)
- GCC: Supported since 3.4 (2004)
(http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html)
- Clang (LLVM based): Since initial release in 2007
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
87 lines
3.6 KiB
C
87 lines
3.6 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.
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#pragma once
|
|
|
|
#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
|
|
);
|