Files
UnrealEngine/Engine/Source/Editor/SVGDistanceField/Private/SvgDistanceFieldGenerator.cpp
2025-05-18 13:04:45 +08:00

32 lines
1.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SvgDistanceFieldGenerator.h"
#include "Misc/FileHelper.h"
#include "DistanceFieldImage.h"
#include "SvgDistanceFieldGenerate.h"
#if WITH_EDITORONLY_DATA
UTexture2D* USvgDistanceFieldGenerator::GenerateTextureFromSvgFile(const FString& SvgFilePath, const FSvgDistanceFieldConfiguration& Configuration)
{
#if WITH_EDITOR
TArray64<uint8> SvgData;
if (FFileHelper::LoadFileToArray(SvgData, *SvgFilePath))
{
FDistanceFieldImage Image;
if (SvgDistanceFieldGenerate(TArrayView64<const char>(reinterpret_cast<const char*>(SvgData.GetData()), SvgData.Num()), Configuration, Image))
{
UTexture2D* Texture = UTexture2D::CreateTransient(Image.SizeX, Image.SizeY, Image.PixelFormat, NAME_None, Image.RawPixelData);
Texture->PreEditChange(nullptr);
Texture->SRGB = Image.bSRGB;
Texture->CompressionSettings = Image.CompressionSettings;
Texture->MipGenSettings = Image.MipGenSettings;
Texture->PostEditChange();
return Texture;
}
}
#endif
return nullptr;
}
#endif