Files
UnrealEngine/Engine/Source/Runtime/ImageWrapper/Private/Formats/BmpImageWrapper.h
2025-05-18 13:04:45 +08:00

58 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreTypes.h"
#include "ImageWrapperBase.h"
/**
* BMP implementation of the helper class
*/
class FBmpImageWrapper
: public FImageWrapperBase
{
public:
/** Default Constructor. */
FBmpImageWrapper(bool bInHasHeader = true, bool bInHalfHeight = false);
public:
/** Helper function used to uncompress BMP data from a buffer */
bool UncompressBMPData(const ERGBFormat InFormat, const int32 InBitDepth);
/**
* Load the header information, returns true if successful.
*
* @return true if successful
*/
bool LoadBMPHeader();
/**
* Load the sub-header information, returns true if successful.
*
* @return true if successful
*/
bool LoadBMPInfoHeader(int64 HeaderOffset);
public:
//~ FImageWrapper interface
virtual void Compress(int32 Quality) override;
virtual void Uncompress(const ERGBFormat InFormat, int32 InBitDepth) override;
virtual bool SetCompressed(const void* InCompressedData, int64 InCompressedSize) override;
virtual bool CanSetRawFormat(const ERGBFormat InFormat, const int32 InBitDepth) const override;
virtual ERawImageFormat::Type GetSupportedRawFormat(const ERawImageFormat::Type InFormat) const override;
private:
/** Whether this file has a BMP file header */
bool bHasHeader;
/** BMP as a sub-format of ICO stores its height as half their actual size */
bool bHalfHeight;
};