UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ImageWriteTask.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
8#include "HAL/Platform.h"
9#include "IImageWrapper.h"
10#include "ImagePixelData.h"
11#include "Math/Color.h"
12#include "Math/Float16.h"
13#include "Math/Float16Color.h"
14#include "Math/IntPoint.h"
16#include "Misc/CoreDefines.h"
17#include "Templates/Function.h"
18#include "Templates/UniquePtr.h"
19
20template<typename> struct TImageDataTraits;
21
23
28{
29public:
30
35
39 virtual bool RunTask() = 0;
40
44 virtual void OnAbandoned() = 0;
45};
46
48 : public IImageWriteTaskBase
49{
50public:
51
53 FString Filename;
54
57
60
63
66
69
72
78
79public:
80
81 IMAGEWRITEQUEUE_API virtual bool RunTask() override final;
83
85
87
93 bool WriteToDisk();
94
100 bool EnsureWritableFile();
101
109 bool InitializeWrapper(IImageWrapper* InWrapper, EImageFormat WrapperFormat);
110
111
115 void PreProcess();
116};
117
118
125
126template<>
127struct TAsyncAlphaWrite<FColor> // prefer AddPreProcessorToSetAlphaOpaque
128{
131
133 {
135
137 for (FColor& Pixel : static_cast<TImagePixelData<FColor>*>(PixelData)->Pixels)
138 {
139 Pixel.A = Alpha;
140 }
141 }
142};
143
144template<>
145struct TAsyncAlphaWrite<FFloat16Color> // prefer AddPreProcessorToSetAlphaOpaque
146{
149
151 {
152 check(PixelData->GetType() == EImagePixelType::Float16);
153
155 for (FFloat16Color& Pixel : Float16ColorData->Pixels)
156 {
157 Pixel.A = Alpha;
158 }
159 }
160};
161
162template<>
163struct TAsyncAlphaWrite<FLinearColor> // prefer AddPreProcessorToSetAlphaOpaque
164{
165 float Alpha;
167
169 {
170 check(PixelData->GetType() == EImagePixelType::Float32);
171
173 for (FLinearColor& Pixel : LinearColorData->Pixels)
174 {
175 Pixel.A = Alpha;
176 }
177 }
178};
179
186template<typename PixelType> struct TAsyncAlphaInvert;
187
188template<>
190{
192 {
193 check(PixelData->GetType() == EImagePixelType::Color);
194
195 TImagePixelData<FColor>* ColorData = static_cast<TImagePixelData<FColor>*>(PixelData);
196 for (FColor& Pixel : static_cast<TImagePixelData<FColor>*>(PixelData)->Pixels)
197 {
198 Pixel.A = 255 - Pixel.A;
199 }
200 }
201};
202
203template<>
205{
207 {
208 check(PixelData->GetType() == EImagePixelType::Float16);
209
211 for (FFloat16Color& Pixel : Float16ColorData->Pixels)
212 {
213 Pixel.A = FFloat16(1.f - Pixel.A.GetFloat());
214 }
215 }
216};
217
218template<>
220{
222 {
223 check(PixelData->GetType() == EImagePixelType::Float32);
224
226 for (FLinearColor& Pixel : LinearColorData->Pixels)
227 {
228 Pixel.A = 1.f - Pixel.A;
229 }
230 }
231};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
EImageFormat
Definition IImageWrapper.h:27
EImageCompressionQuality
Definition IImageWrapper.h:113
TUniqueFunction< void(FImagePixelData *)> FPixelPreProcessor
Definition ImageWriteTask.h:22
@ Pixel
Definition MetalRHIPrivate.h:224
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Float16Color.h:13
Definition Float16.h:34
Definition ImageWriteTask.h:49
TUniquePtr< FImagePixelData > PixelData
Definition ImageWriteTask.h:68
TArray< FPixelPreProcessor > PixelPreProcessors
Definition ImageWriteTask.h:71
IMAGEWRITEQUEUE_API void AddPreProcessorToSetAlphaOpaque()
Definition ImageWriteTask.cpp:145
EImageFormat Format
Definition ImageWriteTask.h:56
FImageWriteTask()
Definition ImageWriteTask.h:73
int32 CompressionQuality
Definition ImageWriteTask.h:59
FString Filename
Definition ImageWriteTask.h:53
virtual IMAGEWRITEQUEUE_API bool RunTask() override final
Definition ImageWriteTask.cpp:15
TFunction< void(bool)> OnCompleted
Definition ImageWriteTask.h:65
virtual IMAGEWRITEQUEUE_API void OnAbandoned() override final
Definition ImageWriteTask.cpp:27
bool bOverwriteFile
Definition ImageWriteTask.h:62
Definition IImageWrapper.h:132
Definition ImageWriteTask.h:28
virtual void OnAbandoned()=0
virtual bool RunTask()=0
virtual ~IImageWriteTaskBase()
Definition ImageWriteTask.h:34
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition FunctionFwd.h:19
Definition UniquePtr.h:107
Definition Color.h:486
Definition ImagePixelData.h:35
EImagePixelType GetType() const
Definition ImagePixelData.h:44
Definition Color.h:48
void operator()(FImagePixelData *PixelData)
Definition ImageWriteTask.h:191
void operator()(FImagePixelData *PixelData)
Definition ImageWriteTask.h:206
void operator()(FImagePixelData *PixelData)
Definition ImageWriteTask.h:221
Definition ImageWriteTask.h:186
TAsyncAlphaWrite(uint8 InAlpha)
Definition ImageWriteTask.h:130
void operator()(FImagePixelData *PixelData)
Definition ImageWriteTask.h:132
uint8 Alpha
Definition ImageWriteTask.h:129
FFloat16 Alpha
Definition ImageWriteTask.h:147
TAsyncAlphaWrite(float InAlpha)
Definition ImageWriteTask.h:148
void operator()(FImagePixelData *PixelData)
Definition ImageWriteTask.h:150
void operator()(FImagePixelData *PixelData)
Definition ImageWriteTask.h:168
TAsyncAlphaWrite(float InAlpha)
Definition ImageWriteTask.h:166
float Alpha
Definition ImageWriteTask.h:165
Definition ImageWriteTask.h:124
Definition ImageWriteTask.h:20
Definition ImagePixelData.h:264