summaryrefslogtreecommitdiffstats
path: root/TextureLoader/src/TextureLoader.cpp
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-04-08 01:14:11 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-04-08 01:14:11 +0000
commit0b7d07f841d8ed1f6da94a8f4a2900c2eff6355d (patch)
tree9102a5baca9316e363aa78fc7581d54dcfa9b821 /TextureLoader/src/TextureLoader.cpp
parentMoved ImGuiScopedDisabler to ImGui namespace and renamed to ScopedDisabler (diff)
downloadDiligentTools-0b7d07f841d8ed1f6da94a8f4a2900c2eff6355d.tar.gz
DiligentTools-0b7d07f841d8ed1f6da94a8f4a2900c2eff6355d.zip
Reworked PNG and JPEG image decoding to fix incompatibility of setjmp with c++ destructors. Added JPEG and PNG encoding/decoding tests
Diffstat (limited to 'TextureLoader/src/TextureLoader.cpp')
-rw-r--r--TextureLoader/src/TextureLoader.cpp62
1 files changed, 61 insertions, 1 deletions
diff --git a/TextureLoader/src/TextureLoader.cpp b/TextureLoader/src/TextureLoader.cpp
index 2665b5e..3f5d63d 100644
--- a/TextureLoader/src/TextureLoader.cpp
+++ b/TextureLoader/src/TextureLoader.cpp
@@ -34,8 +34,34 @@
#include "TextureLoader.h"
#include "GraphicsAccessories.hpp"
#include "DDSLoader.h"
+#include "PNGCodec.h"
+#include "JPEGCodec.h"
#include "ColorConversion.h"
-#include "Image.hpp"
+#include "Image.h"
+
+extern "C"
+{
+ Diligent::DECODE_PNG_RESULT Diligent_DecodePng(Diligent::IDataBlob* pSrcPngBits,
+ Diligent::IDataBlob* pDstPixels,
+ Diligent::ImageDesc* pDstImgDesc);
+
+ Diligent::ENCODE_PNG_RESULT Diligent_EncodePng(const Diligent::Uint8* pSrcPixels,
+ Diligent::Uint32 Width,
+ Diligent::Uint32 Height,
+ Diligent::Uint32 StrideInBytes,
+ int PngColorType,
+ Diligent::IDataBlob* pDstPngBits);
+
+ Diligent::DECODE_JPEG_RESULT Diligent_DecodeJpeg(Diligent::IDataBlob* pSrcJpegBits,
+ Diligent::IDataBlob* pDstPixels,
+ Diligent::ImageDesc* pDstImgDesc);
+
+ Diligent::ENCODE_JPEG_RESULT Diligent_EncodeJpeg(Diligent::Uint8* pSrcRGBData,
+ Diligent::Uint32 Width,
+ Diligent::Uint32 Height,
+ int quality,
+ Diligent::IDataBlob* pDstJpegBits);
+}
namespace Diligent
{
@@ -248,6 +274,40 @@ void CreateTextureFromDDS(IDataBlob* pDDSData,
ppTexture);
}
+DECODE_PNG_RESULT DecodePng(IDataBlob* pSrcPngBits,
+ IDataBlob* pDstPixels,
+ ImageDesc* pDstImgDesc)
+{
+ return Diligent_DecodePng(pSrcPngBits, pDstPixels, pDstImgDesc);
+}
+
+ENCODE_PNG_RESULT EncodePng(const Uint8* pSrcPixels,
+ Uint32 Width,
+ Uint32 Height,
+ Uint32 StrideInBytes,
+ int PngColorType,
+ IDataBlob* pDstPngBits)
+{
+ return Diligent_EncodePng(pSrcPixels, Width, Height, StrideInBytes, PngColorType, pDstPngBits);
+}
+
+
+DECODE_JPEG_RESULT DecodeJpeg(IDataBlob* pSrcJpegBits,
+ IDataBlob* pDstPixels,
+ ImageDesc* pDstImgDesc)
+{
+ return Diligent_DecodeJpeg(pSrcJpegBits, pDstPixels, pDstImgDesc);
+}
+
+ENCODE_JPEG_RESULT EncodeJpeg(Uint8* pSrcRGBPixels,
+ Uint32 Width,
+ Uint32 Height,
+ int quality,
+ IDataBlob* pDstJpegBits)
+{
+ return Diligent_EncodeJpeg(pSrcRGBPixels, Width, Height, quality, pDstJpegBits);
+}
+
} // namespace Diligent
extern "C"