From 5e3941de79b573b8798f6a6bcd4eaf544c48cde2 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Sun, 12 Nov 2017 19:18:57 -0800 Subject: Updated to version 2.1 --- TextureLoader/src/TextureUtilities.cpp | 65 +++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 28 deletions(-) (limited to 'TextureLoader/src/TextureUtilities.cpp') 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 pFileStream( new BasicFileStream( FilePath, EFileAccessMode::Read ) ); + RefCntAutoPtr pFileStream(MakeNewRCObj()(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()(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()(pFileStream, ImgLoadInfo); + (*ppImage)->AddRef(); + } + } + catch (std::runtime_error &err) + { + LOG_ERROR("Failed to create image from file: ", err.what()) } } -- cgit v1.2.3