You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#jira VLN-1183 #rb trivial [FYI] Alexis.Matte #ROBOMERGE-SOURCE: CL 15623903 in //UE5/Release-5.0-EarlyAccess/... #ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v777-15581079) [CL 15623925 by julien stjean in ue5-main branch]
61 lines
1.8 KiB
C++
61 lines
1.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "TgaImageWrapper.h"
|
|
#include "ImageWrapperPrivate.h"
|
|
|
|
#include "TgaImageSupport.h"
|
|
|
|
|
|
void FTgaImageWrapper::Compress(int32 Quality)
|
|
{
|
|
checkf(false, TEXT("TGA compression not supported"));
|
|
}
|
|
|
|
bool FTgaImageWrapper::SetCompressed(const void* InCompressedData, int64 InCompressedSize)
|
|
{
|
|
bool bResult = FImageWrapperBase::SetCompressed(InCompressedData, InCompressedSize);
|
|
|
|
return bResult && LoadTGAHeader();
|
|
}
|
|
|
|
void FTgaImageWrapper::Uncompress(const ERGBFormat InFormat, const int32 InBitDepth)
|
|
{
|
|
const int32 BytesPerPixel = ( InFormat == ERGBFormat::Gray ? 1 : 4 );
|
|
RawData.AddUninitialized( (int64)Width * Height * BytesPerPixel );
|
|
|
|
const int32 TextureDataSize = RawData.Num();
|
|
uint32* TextureData = reinterpret_cast< uint32* >( RawData.GetData() );
|
|
|
|
FTGAFileHeader* TgaHeader = reinterpret_cast< FTGAFileHeader* >( CompressedData.GetData() );
|
|
if ( !DecompressTGA_helper( TgaHeader, CompressedData.Num(), TextureData, TextureDataSize ) )
|
|
{
|
|
SetError(TEXT("Error while decompressing a TGA"));
|
|
}
|
|
}
|
|
|
|
bool FTgaImageWrapper::LoadTGAHeader()
|
|
{
|
|
check( CompressedData.Num() );
|
|
|
|
const FTGAFileHeader* TgaHeader = (FTGAFileHeader*)CompressedData.GetData();
|
|
|
|
if ( CompressedData.Num() >= sizeof( FTGAFileHeader ) &&
|
|
( (TgaHeader->ColorMapType == 0 && TgaHeader->ImageTypeCode == 2) ||
|
|
( TgaHeader->ColorMapType == 0 && TgaHeader->ImageTypeCode == 3 ) || // ImageTypeCode 3 is greyscale
|
|
( TgaHeader->ColorMapType == 0 && TgaHeader->ImageTypeCode == 10 ) ||
|
|
( TgaHeader->ColorMapType == 1 && TgaHeader->ImageTypeCode == 1 && TgaHeader->BitsPerPixel == 8 ) ) )
|
|
{
|
|
Width = TgaHeader->Width;
|
|
Height = TgaHeader->Height;
|
|
ColorMapType = TgaHeader->ColorMapType;
|
|
ImageTypeCode = TgaHeader->ImageTypeCode;
|
|
BitDepth = TgaHeader->BitsPerPixel;
|
|
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|