diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2019-06-27 16:12:22 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2019-06-27 16:12:22 +0000 |
| commit | f589ed9931f49ab02e853a8abab215778e218a9b (patch) | |
| tree | 37c16405a4b00ff0a90d50f2380b3f299cfcdde5 /TextureLoader/src/TextureUtilities.cpp | |
| parent | Updated readme: added license and contributing sections (diff) | |
| download | DiligentTools-f589ed9931f49ab02e853a8abab215778e218a9b.tar.gz DiligentTools-f589ed9931f49ab02e853a8abab215778e218a9b.zip | |
Minor updates to image loading functions
Diffstat (limited to 'TextureLoader/src/TextureUtilities.cpp')
| -rw-r--r-- | TextureLoader/src/TextureUtilities.cpp | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/TextureLoader/src/TextureUtilities.cpp b/TextureLoader/src/TextureUtilities.cpp index 7a41c7a..e136f07 100644 --- a/TextureLoader/src/TextureUtilities.cpp +++ b/TextureLoader/src/TextureUtilities.cpp @@ -26,80 +26,12 @@ #include "Errors.h" #include "TextureLoader.h" #include "Image.h" -#include "BasicFileStream.h" #include "RefCntAutoPtr.h" #include "DataBlobImpl.h" -#include "StringTools.h" - -using namespace Diligent; namespace Diligent { -EImageFileFormat CreateImageFromFile(const Char* FilePath, - Image** ppImage, - IDataBlob** ppRawData) -{ - EImageFileFormat ImgFileFormat = EImageFileFormat::unknown; - try - { - RefCntAutoPtr<BasicFileStream> pFileStream(MakeNewRCObj<BasicFileStream>()(FilePath, EFileAccessMode::Read)); - if(!pFileStream->IsValid()) - LOG_ERROR_AND_THROW("Failed to open image file \"", FilePath, '\"'); - - RefCntAutoPtr<IDataBlob> pFileData(MakeNewRCObj<DataBlobImpl>()(0)); - pFileStream->Read(pFileData); - - ImgFileFormat = Image::GetFileFormat(reinterpret_cast<Uint8*>(pFileData->GetDataPtr()), pFileData->GetSize()); - if (ImgFileFormat == EImageFileFormat::unknown) - { - LOG_WARNING_MESSAGE("Unable to derive image format from the header for file \"", FilePath, "\". Trying to analyze extension."); - - // Try to use extension to derive format - auto *pDotPos = strrchr(FilePath, '.'); - if (pDotPos == nullptr) - LOG_ERROR_AND_THROW("Unable to recognize file format: file name \"", FilePath, "\" does not contain extension"); - - auto *pExtension = pDotPos + 1; - if (*pExtension == 0) - LOG_ERROR_AND_THROW("Unable to recognize file format: file name \"", FilePath, "\" contain empty extension"); - - String Extension = StrToLower(pExtension); - if (Extension == "png") - ImgFileFormat = EImageFileFormat::png; - else if (Extension == "jpeg" || Extension == "jpg") - ImgFileFormat = EImageFileFormat::jpeg; - else if (Extension == "tiff" || Extension == "tif") - ImgFileFormat = EImageFileFormat::tiff; - else if (Extension == "dds") - ImgFileFormat = EImageFileFormat::dds; - else if (Extension == "ktx") - ImgFileFormat = EImageFileFormat::ktx; - else - LOG_ERROR_AND_THROW("Unsupported file format ", Extension); - } - - if (ImgFileFormat == EImageFileFormat::png || - ImgFileFormat == EImageFileFormat::jpeg || - ImgFileFormat == EImageFileFormat::tiff) - { - ImageLoadInfo ImgLoadInfo; - ImgLoadInfo.Format = ImgFileFormat; - Image::CreateFromDataBlob(pFileData, ImgLoadInfo, ppImage); - } - else - { - *ppRawData = pFileData.Detach(); - } - } - catch (std::runtime_error &err) - { - LOG_ERROR("Failed to create image from file: ", err.what()); - } - - return ImgFileFormat; -} - void CreateTextureFromFile(const Char* FilePath, const TextureLoadInfo& TexLoadInfo, IRenderDevice* pDevice, |
