diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2017-11-13 03:18:57 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2017-11-13 03:18:57 +0000 |
| commit | 5e3941de79b573b8798f6a6bcd4eaf544c48cde2 (patch) | |
| tree | 77f33c32420cec66a88f24555f7211c02136468a /TextureLoader/src/TextureUtilities.cpp | |
| parent | Merge from dev branch (diff) | |
| download | DiligentTools-5e3941de79b573b8798f6a6bcd4eaf544c48cde2.tar.gz DiligentTools-5e3941de79b573b8798f6a6bcd4eaf544c48cde2.zip | |
Updated to version 2.1
Diffstat (limited to 'TextureLoader/src/TextureUtilities.cpp')
| -rw-r--r-- | TextureLoader/src/TextureUtilities.cpp | 65 |
1 files changed, 37 insertions, 28 deletions
diff --git a/TextureLoader/src/TextureUtilities.cpp b/TextureLoader/src/TextureUtilities.cpp index 48f5bd5..3bd8442 100644 --- a/TextureLoader/src/TextureUtilities.cpp +++ b/TextureLoader/src/TextureUtilities.cpp @@ -40,40 +40,49 @@ void CreateImageFromFile( const Diligent::Char *FilePath, Image **ppImage, IDataBlob **ppDDSData) { - auto *pDotPos = strrchr( FilePath, '.' ); - if( pDotPos == nullptr ) - LOG_ERROR_AND_THROW( "File path ", FilePath, " does not contain extension" ); + try + { + auto *pDotPos = strrchr(FilePath, '.'); + if (pDotPos == nullptr) + LOG_ERROR_AND_THROW("File path \"", FilePath, "\" does not contain extension"); - auto *pExtension = pDotPos + 1; - if( *pExtension == 0 ) - LOG_ERROR_AND_THROW( "File path ", FilePath, " contains empty extension" ); + auto *pExtension = pDotPos + 1; + if (*pExtension == 0) + LOG_ERROR_AND_THROW("File path \"", FilePath, "\" contains empty extension"); - String Extension(pExtension); - std::transform( Extension.begin(), Extension.end(), Extension.begin(), ::tolower ); + String Extension(pExtension); + std::transform(Extension.begin(), Extension.end(), Extension.begin(), ::tolower); - Diligent::RefCntAutoPtr<BasicFileStream> pFileStream( new BasicFileStream( FilePath, EFileAccessMode::Read ) ); + RefCntAutoPtr<BasicFileStream> pFileStream(MakeNewRCObj<BasicFileStream>()(FilePath, EFileAccessMode::Read)); + if(!pFileStream->IsValid()) + LOG_ERROR_AND_THROW("Failed to open image file \"", FilePath, '\"'); - if( Extension == "dds" ) - { - VERIFY_EXPR(ppDDSData != nullptr); - *ppDDSData = new DataBlobImpl; - pFileStream->Read(*ppDDSData); - (*ppDDSData)->AddRef(); - } - else - { - ImageLoadInfo ImgLoadInfo; - if( Extension == "png" ) - ImgLoadInfo.Format = EImageFileFormat::png; - else if( Extension == "jpeg" || Extension == "jpg" ) - ImgLoadInfo.Format = EImageFileFormat::jpeg; - else if( Extension == "tiff" || Extension == "tif" ) - ImgLoadInfo.Format = EImageFileFormat::tiff; + if (Extension == "dds") + { + VERIFY_EXPR(ppDDSData != nullptr); + *ppDDSData = MakeNewRCObj<DataBlobImpl>()(0); + pFileStream->Read(*ppDDSData); + (*ppDDSData)->AddRef(); + } else - LOG_ERROR_AND_THROW( "Unsupported file format ", Extension ); + { + ImageLoadInfo ImgLoadInfo; + if (Extension == "png") + ImgLoadInfo.Format = EImageFileFormat::png; + else if (Extension == "jpeg" || Extension == "jpg") + ImgLoadInfo.Format = EImageFileFormat::jpeg; + else if (Extension == "tiff" || Extension == "tif") + ImgLoadInfo.Format = EImageFileFormat::tiff; + else + LOG_ERROR_AND_THROW("Unsupported file format ", Extension); - *ppImage = new Image(pFileStream, ImgLoadInfo); - (*ppImage)->AddRef(); + *ppImage = MakeNewRCObj<Image>()(pFileStream, ImgLoadInfo); + (*ppImage)->AddRef(); + } + } + catch (std::runtime_error &err) + { + LOG_ERROR("Failed to create image from file: ", err.what()) } } |
