Skip to content

Commit 598fc8a

Browse files
Image: added option to use custom memory allocator
1 parent 58a9a83 commit 598fc8a

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

TextureLoader/interface/Image.h

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ struct ImageLoadInfo
8484
///
8585
/// \note This flag is only used if PermultiplyAlpha is true.
8686
bool IsSRGB DEFAULT_INITIALIZER(false);
87+
88+
/// Memory allocator
89+
struct IMemoryAllocator* pAllocator DEFAULT_INITIALIZER(nullptr);
8790
};
8891
typedef struct ImageLoadInfo ImageLoadInfo;
8992

@@ -133,15 +136,16 @@ struct Image : public ObjectBase<IObject>
133136

134137
struct EncodeInfo
135138
{
136-
Uint32 Width = 0;
137-
Uint32 Height = 0;
138-
TEXTURE_FORMAT TexFormat = TEX_FORMAT_UNKNOWN;
139-
bool KeepAlpha = false;
140-
bool FlipY = false;
141-
const void* pData = nullptr;
142-
Uint32 Stride = 0;
143-
IMAGE_FILE_FORMAT FileFormat = IMAGE_FILE_FORMAT_JPEG;
144-
int JpegQuality = 95;
139+
Uint32 Width = 0;
140+
Uint32 Height = 0;
141+
TEXTURE_FORMAT TexFormat = TEX_FORMAT_UNKNOWN;
142+
bool KeepAlpha = false;
143+
bool FlipY = false;
144+
const void* pData = nullptr;
145+
Uint32 Stride = 0;
146+
IMAGE_FILE_FORMAT FileFormat = IMAGE_FILE_FORMAT_JPEG;
147+
int JpegQuality = 95;
148+
struct IMemoryAllocator* pAllocator = nullptr;
145149
};
146150
static void Encode(const EncodeInfo& Info, IDataBlob** ppEncodedData);
147151

TextureLoader/src/Image.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ Image::Image(IReferenceCounters* pRefCounters,
331331
IDataBlob* pFileData,
332332
const ImageLoadInfo& LoadInfo) :
333333
TBase{pRefCounters},
334-
m_pData{DataBlobImpl::Create()}
334+
m_pData{DataBlobImpl::Create(LoadInfo.pAllocator)}
335335
{
336336
if (LoadInfo.Format == IMAGE_FILE_FORMAT_TIFF)
337337
{
@@ -476,7 +476,7 @@ std::vector<Uint8> Image::ConvertImageData(Uint32 Width,
476476

477477
void Image::Encode(const EncodeInfo& Info, IDataBlob** ppEncodedData)
478478
{
479-
auto pEncodedData = DataBlobImpl::Create();
479+
auto pEncodedData = DataBlobImpl::Create(Info.pAllocator);
480480
if (Info.FileFormat == IMAGE_FILE_FORMAT_JPEG)
481481
{
482482
auto RGBData = ConvertImageData(Info.Width, Info.Height, reinterpret_cast<const Uint8*>(Info.pData), Info.Stride, Info.TexFormat, TEX_FORMAT_RGBA8_UNORM, false, Info.FlipY);

TextureLoader/src/TextureLoaderImpl.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ TextureLoaderImpl::TextureLoaderImpl(IReferenceCounters* pRefCounters,
155155
}
156156
ImgLoadInfo.IsSRGB = TexLoadInfo.IsSRGB;
157157
ImgLoadInfo.PermultiplyAlpha = TexLoadInfo.PermultiplyAlpha;
158+
ImgLoadInfo.pAllocator = TexLoadInfo.pAllocator;
158159
RefCntAutoPtr<Image> pImage;
159160
Image::CreateFromDataBlob(m_pDataBlob, ImgLoadInfo, &pImage);
160161
LoadFromImage(pImage, TexLoadInfo);

0 commit comments

Comments
 (0)