diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-04-08 01:14:11 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-04-08 01:14:11 +0000 |
| commit | 0b7d07f841d8ed1f6da94a8f4a2900c2eff6355d (patch) | |
| tree | 9102a5baca9316e363aa78fc7581d54dcfa9b821 /TextureLoader/src/TextureLoader.cpp | |
| parent | Moved ImGuiScopedDisabler to ImGui namespace and renamed to ScopedDisabler (diff) | |
| download | DiligentTools-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.cpp | 62 |
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" |
