From f702b4953d0ee361baca20d312bec002b9254f04 Mon Sep 17 00:00:00 2001 From: savis <106487343+savisxss@users.noreply.github.com> Date: Sat, 3 Jan 2026 20:37:52 +0100 Subject: [PATCH] Add support for pre-decoded image loading - OnLoadFromDecodedData method for async decoded images - Bypasses redundant decoding when data comes from worker thread - Integrates with FileLoaderThreadPool pipeline --- src/EterLib/GrpImage.cpp | 18 ++++++++++++++++++ src/EterLib/GrpImage.h | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/src/EterLib/GrpImage.cpp b/src/EterLib/GrpImage.cpp index cfd3b4b..91a7f01 100644 --- a/src/EterLib/GrpImage.cpp +++ b/src/EterLib/GrpImage.cpp @@ -1,5 +1,6 @@ #include "StdAfx.h" #include "GrpImage.h" +#include "DecodedImageData.h" CGraphicImage::CGraphicImage(const char * c_szFileName, DWORD dwFilter) : CResource(c_szFileName), @@ -79,6 +80,23 @@ bool CGraphicImage::OnLoad(int iSize, const void * c_pvBuf) return true; } +bool CGraphicImage::OnLoadFromDecodedData(const TDecodedImageData& decodedImage) +{ + if (!decodedImage.IsValid()) + return false; + + m_imageTexture.SetFileName(CResource::GetFileName()); + + if (!m_imageTexture.CreateFromDecodedData(decodedImage, D3DFMT_UNKNOWN, m_dwFilter)) + return false; + + m_rect.left = 0; + m_rect.top = 0; + m_rect.right = m_imageTexture.GetWidth(); + m_rect.bottom = m_imageTexture.GetHeight(); + return true; +} + void CGraphicImage::OnClear() { // Tracef("Image Destroy : %s\n", m_pszFileName); diff --git a/src/EterLib/GrpImage.h b/src/EterLib/GrpImage.h index 65d94f9..2766c3e 100644 --- a/src/EterLib/GrpImage.h +++ b/src/EterLib/GrpImage.h @@ -5,6 +5,8 @@ #include "Resource.h" #include "GrpImageTexture.h" +struct TDecodedImageData; + class CGraphicImage : public CResource { public: @@ -28,6 +30,8 @@ class CGraphicImage : public CResource const CGraphicTexture & GetTextureReference() const; CGraphicTexture * GetTexturePointer(); + bool OnLoadFromDecodedData(const TDecodedImageData& decodedImage); + protected: bool OnLoad(int iSize, const void * c_pvBuf);