UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
HdrImageWrapper.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "CoreMinimal.h"
7#include "CoreTypes.h"
8#include "IImageWrapper.h"
9#include "ImageCore.h"
11
12// http://radsite.lbl.gov/radiance/refer/Notes/picture_format.html
13// http://paulbourke.net/dataformats/pic/
14
16// does not use ImageWrapperBase , unlike all other imagewrappers
18{
19public:
20
21 // Todo we should have this for all image wrapper.
23
24 // IIMageWrapper Interface begin
25 IMAGEWRAPPER_API virtual bool SetCompressed(const void* InCompressedData, int64 InCompressedSize) override;
26 IMAGEWRAPPER_API virtual bool SetRaw(const void* InRawData, int64 InRawSize, const int32 InWidth, const int32 InHeight, const ERGBFormat InFormat, const int32 InBitDepth, const int32 InBytesPerRow) override;
27 IMAGEWRAPPER_API virtual TArray64<uint8> GetCompressed(int32 Quality = 0) override;
30
31 IMAGEWRAPPER_API virtual bool CanSetRawFormat(const ERGBFormat InFormat, const int32 InBitDepth) const override;
33
34 IMAGEWRAPPER_API virtual int64 GetWidth() const override;
35 IMAGEWRAPPER_API virtual int64 GetHeight() const override;
36 IMAGEWRAPPER_API virtual int32 GetBitDepth() const override;
37 IMAGEWRAPPER_API virtual ERGBFormat GetFormat() const override;
38
39 // IImageWrapper Interface end
40
41 // GetErrorMessage : nice idea, but not virtual, never called by the standard import path
43
45
51 virtual bool SupportsMetadata() const override;
52
59 virtual void AddMetadata(const FString& InKey, const FString& InValue) override;
60
66 virtual void GetMetadata(TStringMap& OutMetadata) const override;
67
69
70private:
71 // Helpers for error exits. Set error messages and return false.
72 void SetAndLogError(const FText& InText);
73 bool FailHeaderParsing(); // also calls FreeCompressData.
74 bool FailUnexpectedEOB();
75 bool FailMalformedScanline();
76
77 bool GetHeaderLine(const uint8*& BufferPos, char Line[256]);
78
79 static bool ParseMatchString(const char*& InOutCursor, const char* InExpected);
80 static bool ParsePositiveInt(const char*& InOutCursor, int* OutValue);
81 static bool ParseImageSize(const char* InLine, int* OutWidth, int* OutHeight);
82
83 static bool HaveBytes(const uint8* InCursor, const uint8* InEnd, int InAmount);
84
86 bool DecompressScanline(uint8* Out, const uint8*& In, const uint8* InEnd);
87
88 bool OldDecompressScanline(uint8* Out, const uint8*& In, const uint8* InEnd, int32 Length, bool bInitialRunAllowed);
89
90 bool IsCompressedImageValid() const;
91
92 TArrayView64<const uint8> CompressedData;
93 const uint8* RGBDataStart = nullptr;
94
95 TArray64<uint8> CompressedDataHolder;
96 TArray64<uint8> RawDataHolder;
97
99 int64 Width = INDEX_NONE;
101 int64 Height = INDEX_NONE;
102
103 // Reported error
104 FText ErrorMessage;
105};
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
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
ERGBFormat
Definition IImageWrapper.h:76
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition HdrImageWrapper.h:18
virtual IMAGEWRAPPER_API ERawImageFormat::Type GetSupportedRawFormat(const ERawImageFormat::Type InFormat) const override
Definition HdrImageWrapper.cpp:139
IMAGEWRAPPER_API bool SetCompressedFromView(TArrayView64< const uint8 > Data)
Definition HdrImageWrapper.cpp:28
virtual IMAGEWRAPPER_API bool SetCompressed(const void *InCompressedData, int64 InCompressedSize) override
Definition HdrImageWrapper.cpp:123
virtual IMAGEWRAPPER_API ERGBFormat GetFormat() const override
Definition HdrImageWrapper.cpp:263
virtual IMAGEWRAPPER_API TArray64< uint8 > GetCompressed(int32 Quality=0) override
Definition HdrImageWrapper.cpp:170
virtual IMAGEWRAPPER_API bool GetRaw(const ERGBFormat InFormat, int32 InBitDepth, TArray64< uint8 > &OutRawData) override
Definition HdrImageWrapper.cpp:205
virtual IMAGEWRAPPER_API int64 GetHeight() const override
Definition HdrImageWrapper.cpp:253
virtual void AddMetadata(const FString &InKey, const FString &InValue) override
Definition HdrImageWrapper.cpp:660
virtual IMAGEWRAPPER_API bool CanSetRawFormat(const ERGBFormat InFormat, const int32 InBitDepth) const override
Definition HdrImageWrapper.cpp:133
virtual bool SupportsMetadata() const override
Definition HdrImageWrapper.cpp:655
IMAGEWRAPPER_API const FText & GetErrorMessage() const
Definition HdrImageWrapper.cpp:268
virtual IMAGEWRAPPER_API bool SetRaw(const void *InRawData, int64 InRawSize, const int32 InWidth, const int32 InHeight, const ERGBFormat InFormat, const int32 InBitDepth, const int32 InBytesPerRow) override
Definition HdrImageWrapper.cpp:145
IMAGEWRAPPER_API void FreeCompressedData()
Definition HdrImageWrapper.cpp:648
virtual IMAGEWRAPPER_API int32 GetBitDepth() const override
Definition HdrImageWrapper.cpp:258
virtual IMAGEWRAPPER_API int64 GetWidth() const override
Definition HdrImageWrapper.cpp:248
virtual void GetMetadata(TStringMap &OutMetadata) const override
Definition HdrImageWrapper.cpp:664
Definition Text.h:385
Definition IImageWrapper.h:132
bool GetRaw(TArray64< uint8 > &OutRawData)
Definition IImageWrapper.h:213
Type
Definition ImageCore.h:57
Definition ImageWrapperOutputTypes.h:11