diff --git a/src/Magnum/Trade/AbstractImageConverter.cpp b/src/Magnum/Trade/AbstractImageConverter.cpp index 29f12b250..56068481c 100644 --- a/src/Magnum/Trade/AbstractImageConverter.cpp +++ b/src/Magnum/Trade/AbstractImageConverter.cpp @@ -343,7 +343,7 @@ AbstractImageConverter::convertToData(const ImageView1D& image) { } Containers::Optional> AbstractImageConverter::doConvertToData(const ImageView1D& image) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertLevels1DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): 1D image conversion advertised but not implemented", {}); return doConvertToData(Containers::arrayView({image})); @@ -376,7 +376,7 @@ AbstractImageConverter::convertToData(const ImageView2D& image) { } Containers::Optional> AbstractImageConverter::doConvertToData(const ImageView2D& image) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertLevels2DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): 2D image conversion advertised but not implemented", {}); return doConvertToData(Containers::arrayView({image})); @@ -416,7 +416,7 @@ AbstractImageConverter::convertToData(const ImageView3D& image) { } Containers::Optional> AbstractImageConverter::doConvertToData(const ImageView3D& image) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertLevels3DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): 3D image conversion advertised but not implemented", {}); return doConvertToData(Containers::arrayView({image})); @@ -449,7 +449,7 @@ AbstractImageConverter::convertToData(const CompressedImageView1D& image) { } Containers::Optional> AbstractImageConverter::doConvertToData(const CompressedImageView1D& image) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressedLevels1DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): compressed 1D image conversion advertised but not implemented", {}); return doConvertToData(Containers::arrayView({image})); @@ -482,7 +482,7 @@ AbstractImageConverter::convertToData(const CompressedImageView2D& image) { } Containers::Optional> AbstractImageConverter::doConvertToData(const CompressedImageView2D& image) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressedLevels2DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): compressed 2D image conversion advertised but not implemented", {}); return doConvertToData(Containers::arrayView({image})); @@ -522,7 +522,7 @@ AbstractImageConverter::convertToData(const CompressedImageView3D& image) { } Containers::Optional> AbstractImageConverter::doConvertToData(const CompressedImageView3D& image) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressedLevels3DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): compressed 3D image conversion advertised but not implemented", {}); return doConvertToData(Containers::arrayView({image})); @@ -623,7 +623,7 @@ Containers::Optional> Implementation::ImageConverterOptionalButAlsoArray #endif AbstractImageConverter::convertToData(const Containers::ArrayView imageLevels) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertLevels1DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): multi-level 1D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -662,7 +662,7 @@ Containers::Optional> Implementation::ImageConverterOptionalButAlsoArray #endif AbstractImageConverter::convertToData(const Containers::ArrayView imageLevels) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertLevels2DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): multi-level 2D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -701,7 +701,7 @@ Containers::Optional> Implementation::ImageConverterOptionalButAlsoArray #endif AbstractImageConverter::convertToData(const Containers::ArrayView imageLevels) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertLevels3DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): multi-level 3D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -740,7 +740,7 @@ Containers::Optional> Implementation::ImageConverterOptionalButAlsoArray #endif AbstractImageConverter::convertToData(const Containers::ArrayView imageLevels) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressedLevels1DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): multi-level compressed 1D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -779,7 +779,7 @@ Containers::Optional> Implementation::ImageConverterOptionalButAlsoArray #endif AbstractImageConverter::convertToData(const Containers::ArrayView imageLevels) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressedLevels2DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): multi-level compressed 2D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -818,7 +818,7 @@ Containers::Optional> Implementation::ImageConverterOptionalButAlsoArray #endif AbstractImageConverter::convertToData(const Containers::ArrayView imageLevels) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressedLevels3DToData, + CORRADE_ASSERT(features() >= ImageConverterFeature::Levels, "Trade::AbstractImageConverter::convertToData(): multi-level compressed 3D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -868,7 +868,7 @@ bool AbstractImageConverter::doConvertToFile(const ImageView1D& image, const Con /* Prefer to go through the ToFile variant instead of ToData assuming that it could have a more memory-efficient implementation than having to materialize the whole output in memory first */ - if(features() >= ImageConverterFeature::ConvertLevels1DToFile) + if(features() >= ImageConverterFeature::Levels) return doConvertToFile(Containers::arrayView({image}), filename); CORRADE_ASSERT(features() >= ImageConverterFeature::Convert1DToData, "Trade::AbstractImageConverter::convertToFile(): 1D image conversion advertised but not implemented", false); @@ -902,7 +902,7 @@ bool AbstractImageConverter::doConvertToFile(const ImageView2D& image, const Con /* Prefer to go through the ToFile variant instead of ToData assuming that it could have a more memory-efficient implementation than having to materialize the whole output in memory first */ - if(features() >= ImageConverterFeature::ConvertLevels2DToFile) + if(features() >= ImageConverterFeature::Levels) return doConvertToFile(Containers::arrayView({image}), filename); CORRADE_ASSERT(features() >= ImageConverterFeature::Convert2DToData, "Trade::AbstractImageConverter::convertToFile(): 2D image conversion advertised but not implemented", false); @@ -942,7 +942,7 @@ bool AbstractImageConverter::doConvertToFile(const ImageView3D& image, const Con /* Prefer to go through the ToFile variant instead of ToData assuming that it could have a more memory-efficient implementation than having to materialize the whole output in memory first */ - if(features() >= ImageConverterFeature::ConvertLevels3DToFile) + if(features() >= ImageConverterFeature::Levels) return doConvertToFile(Containers::arrayView({image}), filename); CORRADE_ASSERT(features() >= ImageConverterFeature::Convert3DToData, "Trade::AbstractImageConverter::convertToFile(): 3D image conversion advertised but not implemented", false); @@ -976,7 +976,7 @@ bool AbstractImageConverter::doConvertToFile(const CompressedImageView1D& image, /* Prefer to go through the ToFile variant instead of ToData assuming that it could have a more memory-efficient implementation than having to materialize the whole output in memory first */ - if(features() >= ImageConverterFeature::ConvertCompressedLevels1DToFile) + if(features() >= ImageConverterFeature::Levels) return doConvertToFile(Containers::arrayView({image}), filename); CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressed1DToData, "Trade::AbstractImageConverter::convertToFile(): compressed 1D image conversion advertised but not implemented", false); @@ -1010,7 +1010,7 @@ bool AbstractImageConverter::doConvertToFile(const CompressedImageView2D& image, /* Prefer to go through the ToFile variant instead of ToData assuming that it could have a more memory-efficient implementation than having to materialize the whole output in memory first */ - if(features() >= ImageConverterFeature::ConvertCompressedLevels2DToFile) + if(features() >= ImageConverterFeature::Levels) return doConvertToFile(Containers::arrayView({image}), filename); CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressed2DToData, "Trade::AbstractImageConverter::convertToFile(): compressed 2D image conversion advertised but not implemented", false); @@ -1050,7 +1050,7 @@ bool AbstractImageConverter::doConvertToFile(const CompressedImageView3D& image, /* Prefer to go through the ToFile variant instead of ToData assuming that it could have a more memory-efficient implementation than having to materialize the whole output in memory first */ - if(features() >= ImageConverterFeature::ConvertCompressedLevels3DToFile) + if(features() >= ImageConverterFeature::Levels) return doConvertToFile(Containers::arrayView({image}), filename); CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressed3DToData, "Trade::AbstractImageConverter::convertToFile(): compressed 3D image conversion advertised but not implemented", false); @@ -1086,7 +1086,7 @@ bool AbstractImageConverter::convertToFile(const ImageData3D& image, const Conta } bool AbstractImageConverter::convertToFile(const Containers::ArrayView imageLevels, const Containers::StringView filename) { - CORRADE_ASSERT(features() & ImageConverterFeature::ConvertLevels1DToFile, + CORRADE_ASSERT(features() >= (ImageConverterFeature::Convert1DToFile|ImageConverterFeature::Levels), "Trade::AbstractImageConverter::convertToFile(): multi-level 1D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -1103,7 +1103,7 @@ bool AbstractImageConverter::convertToFile(const std::initializer_list imageLevels, const Containers::StringView filename) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertLevels1DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level 1D image conversion advertised but not implemented", false); + CORRADE_ASSERT(features() >= ImageConverterFeature::Convert1DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level 1D image conversion advertised but not implemented", false); const Containers::Optional> data = doConvertToData(imageLevels); /* No deleter checks as it doesn't matter here */ @@ -1118,7 +1118,7 @@ bool AbstractImageConverter::doConvertToFile(const Containers::ArrayView imageLevels, const Containers::StringView filename) { - CORRADE_ASSERT(features() & ImageConverterFeature::ConvertLevels2DToFile, + CORRADE_ASSERT(features() >= (ImageConverterFeature::Convert2DToFile|ImageConverterFeature::Levels), "Trade::AbstractImageConverter::convertToFile(): multi-level 2D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -1135,7 +1135,7 @@ bool AbstractImageConverter::convertToFile(const std::initializer_list imageLevels, const Containers::StringView filename) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertLevels2DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level 2D image conversion advertised but not implemented", false); + CORRADE_ASSERT(features() >= ImageConverterFeature::Convert2DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level 2D image conversion advertised but not implemented", false); const Containers::Optional> data = doConvertToData(imageLevels); /* No deleter checks as it doesn't matter here */ @@ -1150,7 +1150,7 @@ bool AbstractImageConverter::doConvertToFile(const Containers::ArrayView imageLevels, const Containers::StringView filename) { - CORRADE_ASSERT(features() & ImageConverterFeature::ConvertLevels3DToFile, + CORRADE_ASSERT(features() >= (ImageConverterFeature::Convert3DToFile|ImageConverterFeature::Levels), "Trade::AbstractImageConverter::convertToFile(): multi-level 3D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -1167,7 +1167,7 @@ bool AbstractImageConverter::convertToFile(const std::initializer_list imageLevels, const Containers::StringView filename) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertLevels3DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level 3D image conversion advertised but not implemented", false); + CORRADE_ASSERT(features() >= ImageConverterFeature::Convert3DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level 3D image conversion advertised but not implemented", false); const Containers::Optional> data = doConvertToData(imageLevels); /* No deleter checks as it doesn't matter here */ @@ -1182,7 +1182,7 @@ bool AbstractImageConverter::doConvertToFile(const Containers::ArrayView imageLevels, const Containers::StringView filename) { - CORRADE_ASSERT(features() & ImageConverterFeature::ConvertCompressedLevels1DToFile, + CORRADE_ASSERT(features() >= (ImageConverterFeature::ConvertCompressed1DToFile|ImageConverterFeature::Levels), "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 1D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -1199,7 +1199,7 @@ bool AbstractImageConverter::convertToFile(const std::initializer_list imageLevels, Containers::StringView filename) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressedLevels1DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 1D image conversion advertised but not implemented", false); + CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressed1DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 1D image conversion advertised but not implemented", false); const Containers::Optional> data = doConvertToData(imageLevels); /* No deleter checks as it doesn't matter here */ @@ -1214,7 +1214,7 @@ bool AbstractImageConverter::doConvertToFile(const Containers::ArrayView imageLevels, const Containers::StringView filename) { - CORRADE_ASSERT(features() & ImageConverterFeature::ConvertCompressedLevels2DToFile, + CORRADE_ASSERT(features() >= (ImageConverterFeature::ConvertCompressed2DToFile|ImageConverterFeature::Levels), "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 2D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -1231,7 +1231,7 @@ bool AbstractImageConverter::convertToFile(const std::initializer_list imageLevels, Containers::StringView filename) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressedLevels2DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 2D image conversion advertised but not implemented", false); + CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressed2DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 2D image conversion advertised but not implemented", false); const Containers::Optional> data = doConvertToData(imageLevels); /* No deleter checks as it doesn't matter here */ @@ -1246,7 +1246,7 @@ bool AbstractImageConverter::doConvertToFile(const Containers::ArrayView imageLevels, const Containers::StringView filename) { - CORRADE_ASSERT(features() & ImageConverterFeature::ConvertCompressedLevels3DToFile, + CORRADE_ASSERT(features() >= (ImageConverterFeature::ConvertCompressed3DToFile|ImageConverterFeature::Levels), "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 3D image conversion not supported", {}); #ifndef CORRADE_NO_ASSERT @@ -1263,7 +1263,7 @@ bool AbstractImageConverter::convertToFile(const std::initializer_list imageLevels, Containers::StringView filename) { - CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressedLevels3DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 3D image conversion advertised but not implemented", false); + CORRADE_ASSERT(features() >= ImageConverterFeature::ConvertCompressed3DToData, "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 3D image conversion advertised but not implemented", false); const Containers::Optional> data = doConvertToData(imageLevels); /* No deleter checks as it doesn't matter here */ @@ -1278,6 +1278,13 @@ bool AbstractImageConverter::doConvertToFile(const Containers::ArrayView(UnsignedInt(value)) << Debug::nospace << ")"; @@ -1328,22 +1344,6 @@ Debug& operator<<(Debug& debug, const ImageConverterFeatures value) { ImageConverterFeature::ConvertCompressed1D, ImageConverterFeature::ConvertCompressed2D, ImageConverterFeature::ConvertCompressed3D, - ImageConverterFeature::ConvertLevels1DToData, - ImageConverterFeature::ConvertLevels2DToData, - ImageConverterFeature::ConvertLevels3DToData, - ImageConverterFeature::ConvertCompressedLevels1DToData, - ImageConverterFeature::ConvertCompressedLevels2DToData, - ImageConverterFeature::ConvertCompressedLevels3DToData, - /* These 6 are implied by Convert[Compressed]LevelsToData, so have to - be after */ - ImageConverterFeature::ConvertLevels1DToFile, - ImageConverterFeature::ConvertLevels2DToFile, - ImageConverterFeature::ConvertLevels3DToFile, - ImageConverterFeature::ConvertCompressedLevels1DToFile, - ImageConverterFeature::ConvertCompressedLevels2DToFile, - ImageConverterFeature::ConvertCompressedLevels3DToFile, - /* These 12 are implied by Convert[Compressed]LevelsTo{File,Data}, so - have to be after */ ImageConverterFeature::Convert1DToData, ImageConverterFeature::Convert2DToData, ImageConverterFeature::Convert3DToData, @@ -1357,7 +1357,8 @@ Debug& operator<<(Debug& debug, const ImageConverterFeatures value) { ImageConverterFeature::Convert3DToFile, ImageConverterFeature::ConvertCompressed1DToFile, ImageConverterFeature::ConvertCompressed2DToFile, - ImageConverterFeature::ConvertCompressed3DToFile}); + ImageConverterFeature::ConvertCompressed3DToFile, + ImageConverterFeature::Levels}); } Debug& operator<<(Debug& debug, const ImageConverterFlag value) { diff --git a/src/Magnum/Trade/AbstractImageConverter.h b/src/Magnum/Trade/AbstractImageConverter.h index ae2f0a01e..fc819399a 100644 --- a/src/Magnum/Trade/AbstractImageConverter.h +++ b/src/Magnum/Trade/AbstractImageConverter.h @@ -242,112 +242,126 @@ enum class ImageConverterFeature: UnsignedInt { ConvertCompressed3DToData = ConvertCompressed3DToFile|(1 << 13), /** - * Convert a set of 1D image levels to a file with - * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView). - * Implies @ref ImageConverterFeature::Convert1DToFile. + * Convert multiple image levels with + * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView) / + * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView) + * if @ref ImageConverterFeature::Convert1DToFile / + * @relativeref{ImageConverterFeature,ConvertCompressed1DToFile} is also + * supported; with + * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView) / + * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView) + * if @ref ImageConverterFeature::Convert2DToFile / + * @relativeref{ImageConverterFeature,ConvertCompressed2DToFile} is also + * supported; with + * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView) / + * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView) + * if @ref ImageConverterFeature::Convert3DToFile / + * @relativeref{ImageConverterFeature,ConvertCompressed3DToFile} is also + * supported; with + * @ref AbstractImageConverter::convertToData(Containers::ArrayView) / + * @ref AbstractImageConverter::convertToData(Containers::ArrayView) + * if @ref ImageConverterFeature::Convert1DToData / + * @relativeref{ImageConverterFeature,ConvertCompressed1DToData} is also + * supported; with + * @ref AbstractImageConverter::convertToData(Containers::ArrayView) / + * @ref AbstractImageConverter::convertToData(Containers::ArrayView) + * if @ref ImageConverterFeature::Convert2DToData / + * @relativeref{ImageConverterFeature,ConvertCompressed2DToData} is also + * supported; with + * @ref AbstractImageConverter::convertToData(Containers::ArrayView) / + * @ref AbstractImageConverter::convertToData(Containers::ArrayView) + * if @ref ImageConverterFeature::Convert3DToData / + * @relativeref{ImageConverterFeature,ConvertCompressed3DToData} is also + * supported. * @m_since_latest */ - ConvertLevels1DToFile = Convert1DToFile|(1 << 14), + Levels = 1 << 14, + #ifdef MAGNUM_BUILD_DEPRECATED /** - * Convert a set of 2D image levels to a file with - * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView). - * Implies @ref ImageConverterFeature::Convert2DToFile. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::Convert1DToFile together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertLevels2DToFile = Convert2DToFile|(1 << 14), + ConvertLevels1DToFile CORRADE_DEPRECATED_ENUM("use Convert1DToFile together with Levels instead") = Convert1DToFile|Levels, /** - * Convert a set of 3D image levels to a file with - * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView). - * Implies @ref ImageConverterFeature::Convert3DToFile. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::Convert2DToFile together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertLevels3DToFile = Convert3DToFile|(1 << 14), + ConvertLevels2DToFile CORRADE_DEPRECATED_ENUM("use Convert2DToFile together with Levels instead") = Convert2DToFile|Levels, /** - * Convert a set of compressed 1D image levels to a file with - * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView). - * Implies @ref ImageConverterFeature::ConvertCompressed1DToFile. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::Convert3DToFile together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertCompressedLevels1DToFile = ConvertCompressed1DToFile|(1 << 14), + ConvertLevels3DToFile CORRADE_DEPRECATED_ENUM("use Convert3DToFile together with Levels instead") = Convert3DToFile|Levels, /** - * Convert a set of compressed 2D image levels to a file with - * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView). - * Implies @ref ImageConverterFeature::ConvertCompressed2DToFile. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::ConvertCompressed1DToFile together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertCompressedLevels2DToFile = ConvertCompressed2DToFile|(1 << 14), + ConvertCompressedLevels1DToFile CORRADE_DEPRECATED_ENUM("use ConvertCompressed1DToFile together with Levels instead") = ConvertCompressed1DToFile|Levels, /** - * Convert a set of compressed 3D image levels to a file with - * @ref AbstractImageConverter::convertToFile(Containers::ArrayView, Containers::StringView). - * Implies @ref ImageConverterFeature::ConvertCompressed3DToFile. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::ConvertCompressed2DToFile together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertCompressedLevels3DToFile = ConvertCompressed3DToFile|(1 << 14), + ConvertCompressedLevels2DToFile CORRADE_DEPRECATED_ENUM("use ConvertCompressed2DToFile together with Levels instead") = ConvertCompressed2DToFile|Levels, /** - * Convert a set of 1D image levels to raw data with - * @ref AbstractImageConverter::convertToData(Containers::ArrayView). - * Implies @ref ImageConverterFeature::ConvertLevels1DToFile and - * @relativeref{ImageConverterFeature,Convert1DToData}, which implies also - * @relativeref{ImageConverterFeature,Convert1DToFile}. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::ConvertCompressed3DToFile together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertLevels1DToData = ConvertLevels1DToFile|Convert1DToData|(1 << 14), + ConvertCompressedLevels3DToFile CORRADE_DEPRECATED_ENUM("use ConvertCompressed3DToFile together with Levels instead") = ConvertCompressed3DToFile|Levels, /** - * Convert a set of 2D image levels to raw data with - * @ref AbstractImageConverter::convertToData(Containers::ArrayView). - * Implies @ref ImageConverterFeature::ConvertLevels2DToFile and - * @relativeref{ImageConverterFeature,Convert2DToData}, which implies also - * @relativeref{ImageConverterFeature,Convert2DToFile}. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::Convert1DToData together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertLevels2DToData = ConvertLevels2DToFile|Convert2DToData|(1 << 14), + ConvertLevels1DToData CORRADE_DEPRECATED_ENUM("use Convert1DToData together with Levels instead") = Convert1DToData|Levels, /** - * Convert a set of 3D image levels to raw data with - * @ref AbstractImageConverter::convertToData(Containers::ArrayView). - * Implies @ref ImageConverterFeature::ConvertLevels3DToFile and - * @relativeref{ImageConverterFeature,Convert3DToData}, which implies also - * @relativeref{ImageConverterFeature,Convert3DToFile}. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::Convert2DToData together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertLevels3DToData = ConvertLevels3DToFile|Convert3DToData|(1 << 14), + ConvertLevels2DToData CORRADE_DEPRECATED_ENUM("use Convert2DToData together with Levels instead") = Convert2DToData|Levels, /** - * Convert a set of compressed 1D image levels to raw data with - * @ref AbstractImageConverter::convertToData(Containers::ArrayView). - * Implies @ref ImageConverterFeature::ConvertCompressedLevels1DToFile and - * @relativeref{ImageConverterFeature,ConvertCompressed1DToData}, which - * implies also @relativeref{ImageConverterFeature,ConvertCompressed1DToFile}. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::Convert3DToData together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertCompressedLevels1DToData = ConvertCompressedLevels1DToFile|ConvertCompressed1DToData|(1 << 14), + ConvertLevels3DToData CORRADE_DEPRECATED_ENUM("use Convert3DToData together with Levels instead") = Convert3DToData|Levels, /** - * Convert a set of compressed 2D image levels to raw data with - * @ref AbstractImageConverter::convertToData(Containers::ArrayView). - * Implies @ref ImageConverterFeature::ConvertCompressedLevels2DToFile and - * @relativeref{ImageConverterFeature,ConvertCompressed2DToData}, which - * implies also @relativeref{ImageConverterFeature,ConvertCompressed2DToFile}. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::ConvertCompressed1DToData together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertCompressedLevels2DToData = ConvertCompressedLevels2DToFile|ConvertCompressed2DToData|(1 << 14), + ConvertCompressedLevels1DToData CORRADE_DEPRECATED_ENUM("use ConvertCompressed1DToData together with Levels instead") = ConvertCompressed1DToData|Levels, /** - * Convert a set of compressed 3D image levels to raw data with - * @ref AbstractImageConverter::convertToData(Containers::ArrayView). - * Implies @ref ImageConverterFeature::ConvertCompressedLevels3DToFile and - * @relativeref{ImageConverterFeature,ConvertCompressed3DToData}, which - * implies also @relativeref{ImageConverterFeature,ConvertCompressed3DToFile}. - * @m_since_latest + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::ConvertCompressed2DToData together with + * @relativeref{ImageConverterFeature,Levels} instead. + */ + ConvertCompressedLevels2DToData CORRADE_DEPRECATED_ENUM("use ConvertCompressed2DToData together with Levels instead") = ConvertCompressed2DToData|Levels, + + /** + * @m_deprecated_since_latest Use + * @ref ImageConverterFeature::ConvertCompressed3DToData together with + * @relativeref{ImageConverterFeature,Levels} instead. */ - ConvertCompressedLevels3DToData = ConvertCompressedLevels3DToFile|ConvertCompressed3DToData|(1 << 14) + ConvertCompressedLevels3DToData CORRADE_DEPRECATED_ENUM("use ConvertCompressed3DToData together with Levels instead") = ConvertCompressed3DToData|Levels + #endif }; /** @@ -454,20 +468,9 @@ commonly advertising support for a subset of them via @ref features(): - Saving a set of (compressed) 1D/2D/3D image levels to a file / data using @ref convertToFile() / @ref convertToData(). Common use case is to save already pregenerated levels instead of having to create them during load. - Advertised with @ref ImageConverterFeature::ConvertLevels1DToFile / - @relativeref{ImageConverterFeature,ConvertLevels2DToFile} / - @relativeref{ImageConverterFeature,ConvertLevels3DToFile} or - @ref ImageConverterFeature::ConvertLevels1DToData / - @relativeref{ImageConverterFeature,ConvertLevels2DToData} / - @relativeref{ImageConverterFeature,ConvertLevels3DToData} and - @ref ImageConverterFeature::ConvertCompressedLevels1DToFile / - @relativeref{ImageConverterFeature,ConvertCompressedLevels2DToFile} / - @relativeref{ImageConverterFeature,ConvertCompressedLevels3DToFile} or - @ref ImageConverterFeature::ConvertCompressedLevels1DToData - @relativeref{ImageConverterFeature,ConvertCompressedLevels2DToData} / - @relativeref{ImageConverterFeature,ConvertCompressedLevels3DToData} for - compressed input images. Note that if a plugin advertises those, it's also - capable of saving single images --- in that case the single-image + Advertised with @ref ImageConverterFeature::Levels in addition to the + single-image feature. Note that if a plugin advertises multi-level support, + it's also capable of saving single images --- in that case the single-image @ref convertToFile() / @ref convertToData() delegates to the multi-level variant with just a single image. - Performing an operation on the image data itself using @ref convert(), from @@ -576,39 +579,9 @@ checked by the implementation: if @ref ImageConverterFeature::Convert2DToData "ImageConverterFeature::Convert*ToData" or @ref ImageConverterFeature::Convert2DToFile "Convert*ToFile" is supported -- The @ref doConvert(const ImageView2D&) function is called only if - @ref ImageConverterFeature::Convert2D is supported; equivalently for the - 1D and 3D case. -- The @ref doConvert(const CompressedImageView2D&) function is called only if - @ref ImageConverterFeature::ConvertCompressed2D is supported; equivalently - for the 1D and 3D case. -- The @ref doConvertToData(const ImageView2D&) function is called only if - @ref ImageConverterFeature::Convert2DToData is supported; equivalently - for the 1D and 3D case. -- The @ref doConvertToData(Containers::ArrayView) function - is called only if @ref ImageConverterFeature::ConvertLevels2DToData is - supported; equivalently for the 1D and 3D case. -- The @ref doConvertToData(const CompressedImageView2D&) function is called - only if @ref ImageConverterFeature::ConvertCompressed2DToData is supported; - equivalently for the 1D and 3D case. -- The @ref doConvertToData(Containers::ArrayView) - function is called only if - @ref ImageConverterFeature::ConvertCompressedLevels2DToData is supported; - equivalently for the 1D and 3D case. -- The @ref doConvertToFile(const ImageView2D&, Containers::StringView) - function is called only if @ref ImageConverterFeature::Convert2DToFile is - supported; equivalently for the 1D and 3D case. -- The @ref doConvertToFile(Containers::ArrayView, Containers::StringView) - function is called only if @ref ImageConverterFeature::ConvertLevels2DToFile - is supported; equivalently for the 1D and 3D case. -- The @ref doConvertToFile(const CompressedImageView2D&, Containers::StringView) - function is called only if - @ref ImageConverterFeature::ConvertCompressed2DToFile is supported; - equivalently for the 1D and 3D case. -- The @ref doConvertToFile(Containers::ArrayView, Containers::StringView) - function is called only if - @ref ImageConverterFeature::ConvertCompressedLevels2DToFile is supported; - equivalently for the 1D and 3D case. +- The @ref doConvert(), @ref doConvertToData() and @ref doConvertToFile() + functions are called only if a corresponding @ref ImageConverterFeature is + supported - All @ref doConvertToData() and @ref doConvertToFile() functions taking a single (compressed) image are called only if the image has a non-zero size in all dimensions and the view is not @cpp nullptr @ce. Note that this does @@ -918,10 +891,9 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a 1D image to a raw data * @m_since_latest * - * Available only if @ref ImageConverterFeature::Convert1DToData or - * @ref ImageConverterFeature::ConvertLevels1DToData is supported. The - * image view is expected to not be @cpp nullptr @ce and to have a - * non-zero size. On failure prints a message to + * Available only if @ref ImageConverterFeature::Convert1DToData is + * supported. The image view is expected to not be @cpp nullptr @ce and + * to have a non-zero size. On failure prints a message to * @relativeref{Magnum,Error} and returns @ref Containers::NullOpt. * @see @ref features(), @ref convertToData(const CompressedImageView1D&), * @ref convertToData(const ImageData1D&), @ref convert(), @@ -938,11 +910,11 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a 2D image to a raw data * @m_since_latest * - * Available only if @ref ImageConverterFeature::Convert2DToData or - * @ref ImageConverterFeature::ConvertLevels2DToData is supported. The - * image view is expected to not be @cpp nullptr @ce and to have a - * non-zero size in all dimensions. On failure prints a message to - * @relativeref{Magnum,Error} and returns @ref Containers::NullOpt. + * Available only if @ref ImageConverterFeature::Convert2DToData is + * supported. The image view is expected to not be @cpp nullptr @ce and + * to have a non-zero size in all dimensions. On failure prints a + * message to @relativeref{Magnum,Error} and returns + * @ref Containers::NullOpt. * @see @ref features(), @ref convertToData(const CompressedImageView2D&), * @ref convertToData(const ImageData2D&), @ref convert(), * @ref convertToFile() @@ -967,11 +939,11 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a 3D image to a raw data * @m_since_latest * - * Available only if @ref ImageConverterFeature::Convert3DToData or - * @ref ImageConverterFeature::ConvertLevels3DToData is supported. The - * image view is expected to not be @cpp nullptr @ce and to have a - * non-zero size in all dimensions. On failure prints a message to - * @relativeref{Magnum,Error} and returns @ref Containers::NullOpt. + * Available only if @ref ImageConverterFeature::Convert3DToData is + * supported. The image view is expected to not be @cpp nullptr @ce and + * to have a non-zero size in all dimensions. On failure prints a + * message to @relativeref{Magnum,Error} and returns + * @ref Containers::NullOpt. * @see @ref features(), @ref convertToData(const CompressedImageView3D&), * @ref convertToData(const ImageData3D&), @ref convert(), * @ref convertToFile() @@ -988,9 +960,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @m_since_latest * * Available only if @ref ImageConverterFeature::ConvertCompressed1DToData - * or @ref ImageConverterFeature::ConvertCompressedLevels1DToData is - * supported. The image view is expected to not be @cpp nullptr @ce and - * to have a non-zero size. On failure prints a message to + * is supported. The image view is expected to not be @cpp nullptr @ce + * and to have a non-zero size. On failure prints a message to * @relativeref{Magnum,Error} and returns @ref Containers::NullOpt. * @see @ref features(), @ref convertToData(const ImageView1D&), * @ref convertToData(const ImageData1D&), @ref convert(), @@ -1008,9 +979,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @m_since_latest * * Available only if @ref ImageConverterFeature::ConvertCompressed2DToData - * or @ref ImageConverterFeature::ConvertCompressedLevels2DToData is - * supported. The image view is expected to not be @cpp nullptr @ce and - * to have a non-zero size in all dimensions. On failure prints a + * is supported. The image view is expected to not be @cpp nullptr @ce + * and to have a non-zero size in all dimensions. On failure prints a * message to @relativeref{Magnum,Error} and returns * @ref Containers::NullOpt. * @see @ref features(), @ref convertToData(const ImageView2D&), @@ -1038,9 +1008,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @m_since_latest * * Available only if @ref ImageConverterFeature::ConvertCompressed3DToData - * or @ref ImageConverterFeature::ConvertCompressedLevels3DToData is - * supported. The image view is expected to not be @cpp nullptr @ce and - * to have a non-zero size in all dimensions. On failure prints a + * is supported. The image view is expected to not be @cpp nullptr @ce + * and to have a non-zero size in all dimensions. On failure prints a * message to @relativeref{Magnum,Error} and returns * @ref Containers::NullOpt. * @see @ref features(), @ref convertToData(const ImageView3D&), @@ -1118,14 +1087,15 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of 1D image levels to a raw data * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertLevels1DToData - * is supported. The function expects at least one image to be passed, - * with each view expected to not be @cpp nullptr @ce, to have a - * non-zero size, and all of them sharing the same pixel format and - * layout flags. Note that certain converters may impose additional - * size and order restrictions on the images, see documentation of a - * particular plugin for more information. On failure prints a message - * to @relativeref{Magnum,Error} and returns @ref Containers::NullOpt. + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,Convert1DToData} is supported. + * The function expects at least one image to be passed, with each view + * expected to not be @cpp nullptr @ce, to have a non-zero size, and + * all of them sharing the same pixel format and layout flags. Note + * that certain converters may impose additional size and order + * restrictions on the images, see documentation of a particular plugin + * for more information. On failure prints a message to + * @relativeref{Magnum,Error} and returns @ref Containers::NullOpt. * @see @ref features(), @ref convertToData(Containers::ArrayView), * @ref convert(), @ref convertToFile() */ @@ -1150,15 +1120,15 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of 2D image levels to a raw data * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertLevels2DToData - * is supported. The function expects at least one image to be passed, - * with each view expected to not be @cpp nullptr @ce, to have a - * non-zero size in all dimensions, and all views sharing the same - * pixel format and layout flags. Note that certain converters may - * impose additional size and order restrictions on the images, see - * documentation of a particular plugin for more information. On - * failure prints a message to @relativeref{Magnum,Error} and returns - * @ref Containers::NullOpt. + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,Convert2DToData} is supported. + * The function expects at least one image to be passed, with each view + * expected to not be @cpp nullptr @ce, to have a non-zero size in all + * dimensions, and all views sharing the same pixel format and layout + * flags. Note that certain converters may impose additional size and + * order restrictions on the images, see documentation of a particular + * plugin for more information. On failure prints a message to + * @relativeref{Magnum,Error} and returns @ref Containers::NullOpt. * @see @ref features(), @ref convertToData(Containers::ArrayView), * @ref convert(), @ref convertToFile() */ @@ -1183,15 +1153,15 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of 3D image levels to a raw data * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertLevels3DToData - * is supported. The function expects at least one image to be passed, - * with each view expected to not be @cpp nullptr @ce, to have a - * non-zero size in all dimensions, and all views sharing the same - * pixel format and layout flags. Note that certain converters may - * impose additional size and order restrictions on the images, see - * documentation of a particular plugin for more information. On - * failure prints a message to @relativeref{Magnum,Error} and returns - * @ref Containers::NullOpt. + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,Convert3DToData} is supported. + * The function expects at least one image to be passed, with each view + * expected to not be @cpp nullptr @ce, to have a non-zero size in all + * dimensions, and all views sharing the same pixel format and layout + * flags. Note that certain converters may impose additional size and + * order restrictions on the images, see documentation of a particular + * plugin for more information. On failure prints a message to + * @relativeref{Magnum,Error} and returns @ref Containers::NullOpt. * @see @ref features(), @ref convertToData(Containers::ArrayView), * @ref convert(), @ref convertToFile() */ @@ -1216,8 +1186,9 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of compressed 1D image levels to a raw data * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertCompressedLevels1DToData - * is supported. The function expects at least one image to be passed, + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,ConvertCompressed1DToData} is + * supported. The function expects at least one image to be passed, * with each view expected to not be @cpp nullptr @ce, to have a * non-zero size, and all views sharing the same pixel format and * layout flags. Note that certain converters may impose additional @@ -1248,8 +1219,9 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of compressed 2D image levels to a raw data * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertCompressedLevels2DToData - * is supported. The function expects at least one image to be passed, + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,ConvertCompressed2DToData} is + * supported. The function expects at least one image to be passed, * with each view expected to not be @cpp nullptr @ce, to have a * non-zero size in all dimensions, and all views sharing the same * pixel format and layout flags. Note that certain converters may @@ -1281,8 +1253,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of compressed 3D image levels to a raw data * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertCompressedLevels3DToData - * is supported. The function expects at least one image to be passed, + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,ConvertCompressed3DToData} is supported. The function expects at least one image to be passed, * with each view expected to not be @cpp nullptr @ce, to have a * non-zero size in all dimensions, and all views sharing the same * pixel format and layout flags. Note that certain converters may @@ -1314,11 +1286,10 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a 1D image to a file * @m_since_latest * - * Available only if @ref ImageConverterFeature::Convert1DToFile or - * @ref ImageConverterFeature::Convert1DToData is supported. The image - * view is expected to not be @cpp nullptr @ce and to have a non-zero - * size. On failure prints a message to @relativeref{Magnum,Error} and - * returns @cpp false @ce. + * Available only if @ref ImageConverterFeature::Convert1DToFile is + * supported. The image view is expected to not be @cpp nullptr @ce and + * to have a non-zero size. On failure prints a message to + * @relativeref{Magnum,Error} and returns @cpp false @ce. * @see @ref features(), @ref convertToFile(const CompressedImageView1D&, Containers::StringView), * @ref convertToFile(const ImageData1D&, Containers::StringView), * @ref convert(), @ref convertToData() @@ -1329,11 +1300,10 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a 2D image to a file * @m_since_latest * - * Available only if @ref ImageConverterFeature::Convert2DToFile or - * @ref ImageConverterFeature::Convert2DToData is supported. The image - * view is expected to not be @cpp nullptr @ce and to have a non-zero - * size in all dimensions. Returns @cpp true @ce on success, - * @cpp false @ce otherwise. + * Available only if @ref ImageConverterFeature::Convert2DToFile is + * supported. The image view is expected to not be @cpp nullptr @ce and + * to have a non-zero size in all dimensions. Returns @cpp true @ce on + * success, @cpp false @ce otherwise. * @see @ref features(), @ref convertToFile(const CompressedImageView2D&, Containers::StringView), * @ref convertToFile(const ImageData2D&, Containers::StringView), * @ref convert(), @ref convertToData() @@ -1354,11 +1324,10 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a 3D image to a file * @m_since_latest * - * Available only if @ref ImageConverterFeature::Convert3DToFile or - * @ref ImageConverterFeature::Convert3DToData is supported. The image - * view is expected to not be @cpp nullptr @ce and to have a non-zero - * size. On failure prints a message to @relativeref{Magnum,Error} and - * returns @cpp false @ce. + * Available only if @ref ImageConverterFeature::Convert3DToFile is + * supported. The image view is expected to not be @cpp nullptr @ce and + * to have a non-zero size. On failure prints a message to + * @relativeref{Magnum,Error} and returns @cpp false @ce. * @see @ref features(), @ref convertToFile(const CompressedImageView3D&, Containers::StringView), * @ref convertToFile(const ImageData3D&, Containers::StringView), * @ref convert(), @ref convertToData() @@ -1370,9 +1339,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @m_since_latest * * Available only if @ref ImageConverterFeature::ConvertCompressed1DToFile - * or @ref ImageConverterFeature::ConvertCompressed1DToData is - * supported. The image view is expected to not be @cpp nullptr @ce and - * to have a non-zero size in all dimensions. On failure prints a + * is supported. The image view is expected to not be @cpp nullptr @ce + * and to have a non-zero size in all dimensions. On failure prints a * message to @relativeref{Magnum,Error} and returns @cpp false @ce. * @see @ref features(), @ref convertToFile(const ImageView1D&, Containers::StringView), * @ref convertToFile(const ImageData1D&, Containers::StringView), @@ -1385,9 +1353,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @m_since_latest * * Available only if @ref ImageConverterFeature::ConvertCompressed2DToFile - * or @ref ImageConverterFeature::ConvertCompressed2DToData is - * supported. The image view is expected to not be @cpp nullptr @ce and - * to have a non-zero size in all dimensions. On failure prints a + * is supported. The image view is expected to not be @cpp nullptr @ce + * and to have a non-zero size in all dimensions. On failure prints a * message to @relativeref{Magnum,Error} and returns @cpp false @ce. * @see @ref features(), @ref convertToFile(const ImageView2D&, Containers::StringView), * @ref convertToFile(const ImageData2D&, Containers::StringView), @@ -1410,9 +1377,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @m_since_latest * * Available only if @ref ImageConverterFeature::ConvertCompressed3DToFile - * or @ref ImageConverterFeature::ConvertCompressed3DToData is - * supported. The image view is expected to not be @cpp nullptr @ce and - * to have a non-zero size in all dimensions. On failure prints a + * is supported. The image view is expected to not be @cpp nullptr @ce + * and to have a non-zero size in all dimensions. On failure prints a * message to @relativeref{Magnum,Error} and returns @cpp false @ce. * @see @ref features(), @ref convertToFile(const ImageView3D&, Containers::StringView), * @ref convertToFile(const ImageData3D&, Containers::StringView), @@ -1482,13 +1448,14 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of 1D image levels to a file * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertLevels1DToFile - * is supported. The function expects at least one image to be passed, - * with each view expected to not be @cpp nullptr @ce, to have a - * non-zero size, and all views sharing the same pixel format. Note - * that certain converters may impose additional size and order - * restrictions on the images, see documentation of a particular plugin - * for more information. On failure prints a message to + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,Convert1DToFile} is supported. + * The function expects at least one image to be passed, with each view + * expected to not be @cpp nullptr @ce, to have a non-zero size, and + * all views sharing the same pixel format and layout flags. Note that + * certain converters may impose additional size and order restrictions + * on the images, see documentation of a particular plugin for more + * information. On failure prints a message to * @relativeref{Magnum,Error} and returns @cpp false @ce. * @see @ref features(), @ref convertToFile(Containers::ArrayView, Containers::StringView), * @ref convert(), @ref convertToData() @@ -1504,15 +1471,15 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of 2D image levels to a file * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertLevels2DToFile - * is supported. The function expects at least one image to be passed, - * with each view expected to not be @cpp nullptr @ce, to have a - * non-zero size in all dimensions, and all views sharing the same - * pixel format and layout flags. Note that certain converters may - * impose additional size and order restrictions on the images, see - * documentation of a particular plugin for more information. On - * failure prints a message to @relativeref{Magnum,Error} and returns - * @cpp false @ce. + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,Convert2DToFile} is supported. + * The function expects at least one image to be passed, with each view + * expected to not be @cpp nullptr @ce, to have a non-zero size in all + * dimensions, and all views sharing the same pixel format and layout + * flags. Note that certain converters may impose additional size and + * order restrictions on the images, see documentation of a particular + * plugin for more information. On failure prints a message to + * @relativeref{Magnum,Error} and returns @cpp false @ce. * @see @ref features(), @ref convertToFile(Containers::ArrayView, Containers::StringView), * @ref convert(), @ref convertToData() */ @@ -1527,15 +1494,15 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of 3D image levels to a file * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertLevels3DToFile - * is supported. The function expects at least one image to be passed, - * with each view expected to not be @cpp nullptr @ce, to have a - * non-zero size in all dimensions, and all views sharing the same - * pixel format and layout flags. Note that certain converters may - * impose additional size and order restrictions on the images, see - * documentation of a particular plugin for more information. On - * failure prints a message to @relativeref{Magnum,Error} and returns - * @cpp false @ce. + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,Convert3DToFile} is supported. + * The function expects at least one image to be passed, with each view + * expected to not be @cpp nullptr @ce, to have a non-zero size in all + * dimensions, and all views sharing the same pixel format and layout + * flags. Note that certain converters may impose additional size and + * order restrictions on the images, see documentation of a particular + * plugin for more information. On failure prints a message to + * @relativeref{Magnum,Error} and returns @cpp false @ce. * @see @ref features(), @ref convertToFile(Containers::ArrayView, Containers::StringView), * @ref convert(), @ref convertToData() */ @@ -1550,8 +1517,9 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of compressed 1D image levels to a file * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertCompressedLevels1DToFile - * is supported. The function expects at least one image to be passed, + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,ConvertCompressed1DToFile} is + * supported. The function expects at least one image to be passed, * with each view expected to not be @cpp nullptr @ce, to have a * non-zero size, and all views sharing the same pixel format and * layout flags. Note that certain converters may impose additional @@ -1572,8 +1540,9 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of compressed 2D image levels to a file * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertCompressedLevels2DToFile - * is supported. The function expects at least one image to be passed, + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,ConvertCompressed2DToFile} is + * supported. The function expects at least one image to be passed, * with each view expected to not be @cpp nullptr @ce, to have a * non-zero size in all dimensions, and all views sharing the same * pixel format and layout flags. Note that certain converters may @@ -1595,8 +1564,9 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Convert a set of compressed 3D image levels to a file * @m_since_latest * - * Available only if @ref ImageConverterFeature::ConvertCompressedLevels3DToFile - * is supported. The function expects at least one image to be passed, + * Available only if @ref ImageConverterFeature::Levels together with + * @relativeref{ImageConverterFeature,ConvertCompressed3DToFile} is + * supported. The function expects at least one image to be passed, * with each view expected to not be @cpp nullptr @ce, to have a * non-zero size in all dimensions, and all views sharing the same * pixel format and layout flags. Note that certain converters may @@ -1619,9 +1589,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(const ImageView1D&, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertLevels1DToFile is supported, - * default implementation calls - * @ref doConvertToFile(Containers::ArrayView, Containers::StringView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToFile(Containers::ArrayView, Containers::StringView) * with just the single @p image. Otherwise, if * @ref ImageConverterFeature::Convert1DToData is supported, default * implementation calls @ref doConvertToData(const ImageView1D&) and @@ -1635,9 +1604,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(const ImageView2D&, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertLevels2DToFile is supported, - * default implementation calls - * @ref doConvertToFile(Containers::ArrayView, Containers::StringView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToFile(Containers::ArrayView, Containers::StringView) * with just the single @p image. Otherwise, if * @ref ImageConverterFeature::Convert2DToData is supported, default * implementation calls @ref doConvertToData(const ImageView2D&) and @@ -1651,9 +1619,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(const ImageView3D&, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertLevels3DToFile is supported, - * default implementation calls - * @ref doConvertToFile(Containers::ArrayView, Containers::StringView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToFile(Containers::ArrayView, Containers::StringView) * with just the single @p image. Otherwise, if * @ref ImageConverterFeature::Convert3DToData is supported, default * implementation calls @ref doConvertToData(const ImageView3D&) and @@ -1667,9 +1634,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(const CompressedImageView1D&, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertCompressedLevels1DToFile is - * supported, default implementation calls - * @ref doConvertToFile(Containers::ArrayView, Containers::StringView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToFile(Containers::ArrayView, Containers::StringView) * with just the single @p image. Otherwise, if * @ref ImageConverterFeature::ConvertCompressed1DToData is supported, * default implementation calls @ref doConvertToData(const CompressedImageView1D&) @@ -1684,9 +1650,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(const CompressedImageView2D&, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertCompressedLevels2DToFile is - * supported, default implementation calls - * @ref doConvertToFile(Containers::ArrayView, Containers::StringView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToFile(Containers::ArrayView, Containers::StringView) * with just the single @p image. Otherwise, if * @ref ImageConverterFeature::ConvertCompressed2DToData is supported, * default implementation calls @ref doConvertToData(const CompressedImageView2D&) @@ -1701,9 +1666,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(const CompressedImageView3D&, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertCompressedLevels3DToFile is - * supported, default implementation calls - * @ref doConvertToFile(Containers::ArrayView, Containers::StringView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToFile(Containers::ArrayView, Containers::StringView) * with just the single @p image. Otherwise, if * @ref ImageConverterFeature::ConvertCompressed3DToData is supported, * default implementation calls @ref doConvertToData(const CompressedImageView3D&) @@ -1718,12 +1682,12 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(Containers::ArrayView, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertLevels1DToData is supported, - * default implementation calls - * @ref doConvertToData(Containers::ArrayView) and - * saves the result to given file. It is allowed to call this function - * from your @ref doConvertToFile() implementation, for example when - * you only need to do format detection based on file extension. + * If @ref ImageConverterFeature::Convert1DToData is supported, default + * implementation calls @ref doConvertToData(Containers::ArrayView) + * and saves the result to given file. It is allowed to call this + * function from your @ref doConvertToFile() implementation, for + * example when you only need to do format detection based on file + * extension. */ virtual bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename); @@ -1731,12 +1695,12 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(Containers::ArrayView, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertLevels1DToData is supported, - * default implementation calls - * @ref doConvertToData(Containers::ArrayView) and - * saves the result to given file. It is allowed to call this function - * from your @ref doConvertToFile() implementation, for example when - * you only need to do format detection based on file extension. + * If @ref ImageConverterFeature::Convert2DToData is supported, default + * implementation calls @ref doConvertToData(Containers::ArrayView) + * and saves the result to given file. It is allowed to call this + * function from your @ref doConvertToFile() implementation, for + * example when you only need to do format detection based on file + * extension. */ virtual bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename); @@ -1744,12 +1708,12 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(Containers::ArrayView, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertLevels1DToData is supported, - * default implementation calls - * @ref doConvertToData(Containers::ArrayView) and - * saves the result to given file. It is allowed to call this function - * from your @ref doConvertToFile() implementation, for example when - * you only need to do format detection based on file extension. + * If @ref ImageConverterFeature::Convert3DToData is supported, default + * implementation calls @ref doConvertToData(Containers::ArrayView) + * and saves the result to given file. It is allowed to call this + * function from your @ref doConvertToFile() implementation, for + * example when you only need to do format detection based on file + * extension. */ virtual bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename); @@ -1757,7 +1721,7 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(Containers::ArrayView, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertCompressedLevels1DToData is + * If @ref ImageConverterFeature::ConvertCompressed1DToData is * supported, default implementation calls * @ref doConvertToData(Containers::ArrayView) * and saves the result to given file. It is allowed to call this @@ -1771,7 +1735,7 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(Containers::ArrayView, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertCompressedLevels2DToData is + * If @ref ImageConverterFeature::ConvertCompressed2DToData is * supported, default implementation calls @ref doConvertToData(Containers::ArrayView) * and saves the result to given file. It is allowed to call this * function from your @ref doConvertToFile() implementation, for @@ -1784,7 +1748,7 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToFile(Containers::ArrayView, Containers::StringView) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertCompressedLevels3DToData is + * If @ref ImageConverterFeature::ConvertCompressed3DToData is * supported, default implementation calls @ref doConvertToData(Containers::ArrayView) * and saves the result to given file. It is allowed to call this * function from your @ref doConvertToFile() implementation, for @@ -1869,8 +1833,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToData(const ImageView1D&) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertLevels1DToData is supported, - * default implementation calls @ref doConvertToData(Containers::ArrayView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToData(Containers::ArrayView) * with just the single @p image and propagates the result back. */ virtual Containers::Optional> doConvertToData(const ImageView1D& image); @@ -1879,8 +1843,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToData(const ImageView2D&) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertLevels2DToData is supported, - * default implementation calls @ref doConvertToData(Containers::ArrayView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToData(Containers::ArrayView) * with just the single @p image and propagates the result back. */ virtual Containers::Optional> doConvertToData(const ImageView2D& image); @@ -1889,8 +1853,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToData(const ImageView3D&) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertLevels3DToData is supported, - * default implementation calls @ref doConvertToData(Containers::ArrayView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToData(Containers::ArrayView) * with just the single @p image and propagates the result back. */ virtual Containers::Optional> doConvertToData(const ImageView3D& image); @@ -1899,9 +1863,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToData(const CompressedImageView1D&) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertCompressedLevels1DToData is - * supported, default implementation calls - * @ref doConvertToData(Containers::ArrayView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToData(Containers::ArrayView) * with just the single @p image and propagates the result back. */ virtual Containers::Optional> doConvertToData(const CompressedImageView1D& image); @@ -1910,9 +1873,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToData(const CompressedImageView2D&) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertCompressedLevels2DToData is - * supported, default implementation calls - * @ref doConvertToData(Containers::ArrayView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToData(Containers::ArrayView) * with just the single @p image and propagates the result back. */ virtual Containers::Optional> doConvertToData(const CompressedImageView2D& image); @@ -1921,9 +1883,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract * @brief Implementation for @ref convertToData(const CompressedImageView3D&) * @m_since_latest * - * If @ref ImageConverterFeature::ConvertCompressedLevels3DToData is - * supported, default implementation calls - * @ref doConvertToData(Containers::ArrayView) + * If @ref ImageConverterFeature::Levels is supported, default + * implementation calls @ref doConvertToData(Containers::ArrayView) * with just the single @p image and propagates the result back. */ virtual Containers::Optional> doConvertToData(const CompressedImageView3D& image); diff --git a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp index 1c6354b46..6b7b07739 100644 --- a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp @@ -296,6 +296,9 @@ struct AbstractImageConverterTest: TestSuite::Tester { void convertCompressed3DToFileThroughLevels(); void debugFeature(); + #ifdef MAGNUM_BUILD_DEPRECATED + void debugFeatureDeprecated(); + #endif void debugFeatures(); void debugFeaturesSupersets(); void debugFlag(); @@ -532,6 +535,9 @@ AbstractImageConverterTest::AbstractImageConverterTest() { &AbstractImageConverterTest::convertCompressed3DToFileThroughLevels, &AbstractImageConverterTest::debugFeature, + #ifdef MAGNUM_BUILD_DEPRECATED + &AbstractImageConverterTest::debugFeatureDeprecated, + #endif &AbstractImageConverterTest::debugFeatures, &AbstractImageConverterTest::debugFeaturesSupersets, &AbstractImageConverterTest::debugFlag, @@ -677,7 +683,7 @@ void AbstractImageConverterTest::thingNotSupported() { void AbstractImageConverterTest::extensionMimeType() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertCompressedLevels3DToData; + return ImageConverterFeature::ConvertCompressed3DToData; } Containers::String doExtension() const override { return "yello"; } Containers::String doMimeType() const override { return "yel/low"; } @@ -1766,7 +1772,10 @@ void AbstractImageConverterTest::convertImageData3DToData() { void AbstractImageConverterTest::convertLevels1DToData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -1785,7 +1794,10 @@ void AbstractImageConverterTest::convertLevels1DToData() { void AbstractImageConverterTest::convertLevels2DToData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -1804,7 +1816,10 @@ void AbstractImageConverterTest::convertLevels2DToData() { void AbstractImageConverterTest::convertLevels3DToData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -1824,7 +1839,8 @@ void AbstractImageConverterTest::convertLevels3DToData() { void AbstractImageConverterTest::convertLevels1DToDataFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertLevels1DToData; + return ImageConverterFeature::Convert1DToData| + ImageConverterFeature::Levels; } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -1843,7 +1859,8 @@ void AbstractImageConverterTest::convertLevels1DToDataFailed() { void AbstractImageConverterTest::convertLevels2DToDataFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertLevels2DToData; + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -1862,7 +1879,8 @@ void AbstractImageConverterTest::convertLevels2DToDataFailed() { void AbstractImageConverterTest::convertLevels3DToDataFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertLevels3DToData; + return ImageConverterFeature::Convert3DToData| + ImageConverterFeature::Levels; } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -1882,7 +1900,10 @@ void AbstractImageConverterTest::convertLevels1DToDataInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToData| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -1895,7 +1916,10 @@ void AbstractImageConverterTest::convertLevels2DToDataNoLevels() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -1908,7 +1932,10 @@ void AbstractImageConverterTest::convertLevels2DToDataZeroSize() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[16]{}; @@ -1925,7 +1952,10 @@ void AbstractImageConverterTest::convertLevels2DToDataNullptr() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[16]{}; @@ -1942,7 +1972,10 @@ void AbstractImageConverterTest::convertLevels2DToDataInconsistentFormat() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[16]{}; @@ -1960,7 +1993,10 @@ void AbstractImageConverterTest::convertLevels2DToDataInconsistentFormatExtra() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[16]{}; @@ -1978,7 +2014,10 @@ void AbstractImageConverterTest::convertLevels2DToDataInconsistentFlags() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[16]{}; @@ -1996,7 +2035,10 @@ void AbstractImageConverterTest::convertLevels3DToDataInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToData| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -2009,7 +2051,10 @@ void AbstractImageConverterTest::convertLevels1DToDataNotImplemented() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToData| + ImageConverterFeature::Levels; + } } converter; const char data[4]{}; @@ -2023,7 +2068,10 @@ void AbstractImageConverterTest::convertLevels2DToDataNotImplemented() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[4]{}; @@ -2037,7 +2085,10 @@ void AbstractImageConverterTest::convertLevels3DToDataNotImplemented() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToData| + ImageConverterFeature::Levels; + } } converter; const char data[4]{}; @@ -2051,7 +2102,10 @@ void AbstractImageConverterTest::convertLevels1DToDataCustomDeleter() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::Array{nullptr, 0, [](char*, std::size_t) {}}; } @@ -2068,7 +2122,10 @@ void AbstractImageConverterTest::convertLevels2DToDataCustomDeleter() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::Array{nullptr, 0, [](char*, std::size_t) {}}; } @@ -2085,7 +2142,10 @@ void AbstractImageConverterTest::convertLevels3DToDataCustomDeleter() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::Array{nullptr, 0, [](char*, std::size_t) {}}; } @@ -2100,7 +2160,10 @@ void AbstractImageConverterTest::convertLevels3DToDataCustomDeleter() { void AbstractImageConverterTest::convertCompressedLevels1DToData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -2119,7 +2182,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToData() { void AbstractImageConverterTest::convertCompressedLevels2DToData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -2138,7 +2204,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToData() { void AbstractImageConverterTest::convertCompressedLevels3DToData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -2158,7 +2227,8 @@ void AbstractImageConverterTest::convertCompressedLevels3DToData() { void AbstractImageConverterTest::convertCompressedLevels1DToDataFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertCompressedLevels1DToData; + return ImageConverterFeature::ConvertCompressed1DToData| + ImageConverterFeature::Levels; } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -2177,7 +2247,8 @@ void AbstractImageConverterTest::convertCompressedLevels1DToDataFailed() { void AbstractImageConverterTest::convertCompressedLevels2DToDataFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertCompressedLevels2DToData; + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -2196,7 +2267,8 @@ void AbstractImageConverterTest::convertCompressedLevels2DToDataFailed() { void AbstractImageConverterTest::convertCompressedLevels3DToDataFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertCompressedLevels3DToData; + return ImageConverterFeature::ConvertCompressed3DToData| + ImageConverterFeature::Levels; } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -2216,7 +2288,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToDataInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToData| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -2229,7 +2304,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToDataNoLevels() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -2242,7 +2320,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToDataZeroSize() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[16]{}; @@ -2259,7 +2340,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToDataNullptr() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[16]{}; @@ -2276,7 +2360,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToDataInconsistentForm CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[16]{}; @@ -2294,7 +2381,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToDataInconsistentFlag CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[16]{}; @@ -2312,7 +2402,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToDataInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToData| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -2325,7 +2418,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToDataNotImplemented() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToData| + ImageConverterFeature::Levels; + } } converter; const char data[8]{}; @@ -2339,7 +2435,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToDataNotImplemented() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } } converter; const char data[8]{}; @@ -2353,7 +2452,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToDataNotImplemented() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToData| + ImageConverterFeature::Levels; + } } converter; const char data[8]{}; @@ -2367,7 +2469,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToDataCustomDeleter() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::Array{nullptr, 0, [](char*, std::size_t) {}}; } @@ -2384,7 +2489,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToDataCustomDeleter() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::Array{nullptr, 0, [](char*, std::size_t) {}}; } @@ -2401,7 +2509,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToDataCustomDeleter() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::Array{nullptr, 0, [](char*, std::size_t) {}}; } @@ -2416,7 +2527,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToDataCustomDeleter() void AbstractImageConverterTest::convert1DToDataThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -2430,7 +2544,10 @@ void AbstractImageConverterTest::convert1DToDataThroughLevels() { void AbstractImageConverterTest::convert2DToDataThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -2444,7 +2561,10 @@ void AbstractImageConverterTest::convert2DToDataThroughLevels() { void AbstractImageConverterTest::convert3DToDataThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -2458,7 +2578,10 @@ void AbstractImageConverterTest::convert3DToDataThroughLevels() { void AbstractImageConverterTest::convertCompressed1DToDataThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -2472,7 +2595,10 @@ void AbstractImageConverterTest::convertCompressed1DToDataThroughLevels() { void AbstractImageConverterTest::convertCompressed2DToDataThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -2486,7 +2612,10 @@ void AbstractImageConverterTest::convertCompressed2DToDataThroughLevels() { void AbstractImageConverterTest::convertCompressed3DToDataThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::Array{nullptr, std::size_t(imageLevels[0].size().product()*imageLevels.size())}; } @@ -3310,7 +3439,10 @@ void AbstractImageConverterTest::convertImageData3DToFile() { void AbstractImageConverterTest::convertLevels1DToFile() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size()[0]), char(imageLevels.size())})); @@ -3334,7 +3466,10 @@ void AbstractImageConverterTest::convertLevels1DToFile() { void AbstractImageConverterTest::convertLevels2DToFile() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())})); @@ -3358,7 +3493,10 @@ void AbstractImageConverterTest::convertLevels2DToFile() { void AbstractImageConverterTest::convertLevels3DToFile() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())})); @@ -3383,7 +3521,8 @@ void AbstractImageConverterTest::convertLevels3DToFile() { void AbstractImageConverterTest::convertLevels1DToFileFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertLevels1DToFile; + return ImageConverterFeature::Convert1DToFile| + ImageConverterFeature::Levels; } bool doConvertToFile(Containers::ArrayView, Containers::StringView) override { return {}; @@ -3402,7 +3541,8 @@ void AbstractImageConverterTest::convertLevels1DToFileFailed() { void AbstractImageConverterTest::convertLevels2DToFileFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertLevels2DToFile; + return ImageConverterFeature::Convert2DToFile| + ImageConverterFeature::Levels; } bool doConvertToFile(Containers::ArrayView, Containers::StringView) override { return {}; @@ -3421,7 +3561,8 @@ void AbstractImageConverterTest::convertLevels2DToFileFailed() { void AbstractImageConverterTest::convertLevels3DToFileFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertLevels3DToFile; + return ImageConverterFeature::Convert3DToFile| + ImageConverterFeature::Levels; } bool doConvertToFile(Containers::ArrayView, Containers::StringView) override { return {}; @@ -3439,7 +3580,10 @@ void AbstractImageConverterTest::convertLevels3DToFileFailed() { void AbstractImageConverterTest::convertLevels1DToFileThroughData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::array({char(imageLevels[0].size()[0]), char(imageLevels.size())}); @@ -3465,7 +3609,10 @@ void AbstractImageConverterTest::convertLevels1DToFileThroughData() { void AbstractImageConverterTest::convertLevels2DToFileThroughData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::array({char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())}); @@ -3490,7 +3637,10 @@ void AbstractImageConverterTest::convertLevels2DToFileThroughData() { void AbstractImageConverterTest::convertLevels3DToFileThroughData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::array({char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())}); @@ -3515,7 +3665,10 @@ void AbstractImageConverterTest::convertLevels3DToFileThroughData() { void AbstractImageConverterTest::convertLevels1DToFileThroughDataFailed() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -3540,7 +3693,10 @@ void AbstractImageConverterTest::convertLevels1DToFileThroughDataFailed() { void AbstractImageConverterTest::convertLevels2DToFileThroughDataFailed() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -3565,7 +3721,10 @@ void AbstractImageConverterTest::convertLevels2DToFileThroughDataFailed() { void AbstractImageConverterTest::convertLevels3DToFileThroughDataFailed() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -3590,7 +3749,10 @@ void AbstractImageConverterTest::convertLevels3DToFileThroughDataFailed() { void AbstractImageConverterTest::convertLevels1DToFileThroughDataNotWritable() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::array({'\x00'}); }; @@ -3607,7 +3769,10 @@ void AbstractImageConverterTest::convertLevels1DToFileThroughDataNotWritable() { void AbstractImageConverterTest::convertLevels2DToFileThroughDataNotWritable() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::array({'\x00'}); @@ -3625,7 +3790,10 @@ void AbstractImageConverterTest::convertLevels2DToFileThroughDataNotWritable() { void AbstractImageConverterTest::convertLevels3DToFileThroughDataNotWritable() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::array({'\x00'}); @@ -3645,7 +3813,10 @@ void AbstractImageConverterTest::convertLevels1DToFileInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToFile| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -3658,7 +3829,10 @@ void AbstractImageConverterTest::convertLevels2DToFileInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToFile| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -3671,7 +3845,10 @@ void AbstractImageConverterTest::convertLevels3DToFileInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToFile| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -3684,7 +3861,10 @@ void AbstractImageConverterTest::convertLevels1DToFileNotImplemented() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToFile| + ImageConverterFeature::Levels; + } } converter; const char data[4]{}; @@ -3698,7 +3878,10 @@ void AbstractImageConverterTest::convertLevels2DToFileNotImplemented() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToFile| + ImageConverterFeature::Levels; + } } converter; const char data[4]{}; @@ -3712,7 +3895,10 @@ void AbstractImageConverterTest::convertLevels3DToFileNotImplemented() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToFile| + ImageConverterFeature::Levels; + } } converter; const char data[4]{}; @@ -3724,7 +3910,10 @@ void AbstractImageConverterTest::convertLevels3DToFileNotImplemented() { void AbstractImageConverterTest::convertCompressedLevels1DToFile() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size()[0]), char(imageLevels.size())})); @@ -3747,7 +3936,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFile() { void AbstractImageConverterTest::convertCompressedLevels2DToFile() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())})); @@ -3770,7 +3962,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFile() { void AbstractImageConverterTest::convertCompressedLevels3DToFile() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())})); @@ -3794,7 +3989,8 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFile() { void AbstractImageConverterTest::convertCompressedLevels1DToFileFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertCompressedLevels1DToFile; + return ImageConverterFeature::ConvertCompressed1DToFile| + ImageConverterFeature::Levels; } bool doConvertToFile(Containers::ArrayView, Containers::StringView) override { return {}; @@ -3813,7 +4009,8 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileFailed() { void AbstractImageConverterTest::convertCompressedLevels2DToFileFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertCompressedLevels2DToFile; + return ImageConverterFeature::ConvertCompressed2DToFile| + ImageConverterFeature::Levels; } bool doConvertToFile(Containers::ArrayView, Containers::StringView) override { return {}; @@ -3832,7 +4029,8 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileFailed() { void AbstractImageConverterTest::convertCompressedLevels3DToFileFailed() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { - return ImageConverterFeature::ConvertCompressedLevels3DToFile; + return ImageConverterFeature::ConvertCompressed3DToFile| + ImageConverterFeature::Levels; } bool doConvertToFile(Containers::ArrayView, Containers::StringView) override { return {}; @@ -3850,7 +4048,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileFailed() { void AbstractImageConverterTest::convertCompressedLevels1DToFileThroughData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::array({char(imageLevels[0].size()[0]), char(imageLevels.size())}); @@ -3875,7 +4076,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileThroughData() { void AbstractImageConverterTest::convertCompressedLevels2DToFileThroughData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::array({char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())}); @@ -3900,7 +4104,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileThroughData() { void AbstractImageConverterTest::convertCompressedLevels3DToFileThroughData() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView imageLevels) override { return Containers::array({char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())}); @@ -3925,7 +4132,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileThroughData() { void AbstractImageConverterTest::convertCompressedLevels1DToFileThroughDataFailed() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -3950,7 +4160,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileThroughDataFaile void AbstractImageConverterTest::convertCompressedLevels2DToFileThroughDataFailed() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -3975,7 +4188,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileThroughDataFaile void AbstractImageConverterTest::convertCompressedLevels3DToFileThroughDataFailed() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return {}; @@ -4000,7 +4216,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileThroughDataFaile void AbstractImageConverterTest::convertCompressedLevels1DToFileThroughDataNotWritable() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::array({'\x00'}); @@ -4018,7 +4237,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileThroughDataNotWr void AbstractImageConverterTest::convertCompressedLevels2DToFileThroughDataNotWritable() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::array({'\x00'}); @@ -4036,7 +4258,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileThroughDataNotWr void AbstractImageConverterTest::convertCompressedLevels3DToFileThroughDataNotWritable() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToData; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToData| + ImageConverterFeature::Levels; + } Containers::Optional> doConvertToData(Containers::ArrayView) override { return Containers::array({'\x00'}); @@ -4056,7 +4281,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToFile| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -4069,7 +4297,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToFile| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -4082,7 +4313,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileInvalidImage() { CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToFile| + ImageConverterFeature::Levels; + } } converter; std::ostringstream out; @@ -4095,7 +4329,10 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileNotImplemented() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToFile| + ImageConverterFeature::Levels; + } } converter; const char data[8]{}; @@ -4109,7 +4346,10 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileNotImplemented() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToFile| + ImageConverterFeature::Levels; + } } converter; const char data[8]{}; @@ -4123,7 +4363,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileNotImplemented() CORRADE_SKIP_IF_NO_ASSERT(); struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToFile| + ImageConverterFeature::Levels; + } } converter; const char data[8]{}; @@ -4135,7 +4378,10 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileNotImplemented() void AbstractImageConverterTest::convert1DToFileThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert1DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size()[0]), char(imageLevels.size())})); @@ -4154,7 +4400,10 @@ void AbstractImageConverterTest::convert1DToFileThroughLevels() { void AbstractImageConverterTest::convert2DToFileThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert2DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())})); @@ -4173,7 +4422,10 @@ void AbstractImageConverterTest::convert2DToFileThroughLevels() { void AbstractImageConverterTest::convert3DToFileThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::Convert3DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())})); @@ -4192,7 +4444,10 @@ void AbstractImageConverterTest::convert3DToFileThroughLevels() { void AbstractImageConverterTest::convertCompressed1DToFileThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed1DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size()[0]), char(imageLevels.size())})); @@ -4211,7 +4466,10 @@ void AbstractImageConverterTest::convertCompressed1DToFileThroughLevels() { void AbstractImageConverterTest::convertCompressed2DToFileThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed2DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())})); @@ -4230,7 +4488,10 @@ void AbstractImageConverterTest::convertCompressed2DToFileThroughLevels() { void AbstractImageConverterTest::convertCompressed3DToFileThroughLevels() { struct: AbstractImageConverter { - ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToFile; } + ImageConverterFeatures doFeatures() const override { + return ImageConverterFeature::ConvertCompressed3DToFile| + ImageConverterFeature::Levels; + } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())})); @@ -4254,6 +4515,17 @@ void AbstractImageConverterTest::debugFeature() { CORRADE_COMPARE(out.str(), "Trade::ImageConverterFeature::ConvertCompressed2D Trade::ImageConverterFeature(0xdeadbeef)\n"); } +#ifdef MAGNUM_BUILD_DEPRECATED +void AbstractImageConverterTest::debugFeatureDeprecated() { + std::ostringstream out; + + CORRADE_IGNORE_DEPRECATED_PUSH + Debug{&out} << ImageConverterFeature::ConvertCompressedLevels1DToData << ImageConverterFeature::ConvertLevels3DToFile; + CORRADE_IGNORE_DEPRECATED_POP + CORRADE_COMPARE(out.str(), "Trade::ImageConverterFeature::ConvertCompressed1DToData|Trade::ImageConverterFeature::Levels Trade::ImageConverterFeature::Convert3DToFile|Trade::ImageConverterFeature::Levels\n"); +} +#endif + void AbstractImageConverterTest::debugFeatures() { std::ostringstream out; @@ -4275,34 +4547,6 @@ void AbstractImageConverterTest::debugFeaturesSupersets() { std::ostringstream out; Debug{&out} << (ImageConverterFeature::ConvertCompressed1DToData|ImageConverterFeature::ConvertCompressed1DToFile); CORRADE_COMPARE(out.str(), "Trade::ImageConverterFeature::ConvertCompressed1DToData\n"); - - /* ConvertLevels*DToData is a superset of ConvertLevels*DToFile, so only - one should be printed */ - } { - std::ostringstream out; - Debug{&out} << (ImageConverterFeature::ConvertLevels2DToData|ImageConverterFeature::ConvertLevels2DToFile); - CORRADE_COMPARE(out.str(), "Trade::ImageConverterFeature::ConvertLevels2DToData\n"); - - /* ConvertLevels*DToData is *also* a superset of Convert*DToData, so only - one should be printed */ - } { - std::ostringstream out; - Debug{&out} << (ImageConverterFeature::ConvertLevels3DToData|ImageConverterFeature::Convert3DToData); - CORRADE_COMPARE(out.str(), "Trade::ImageConverterFeature::ConvertLevels3DToData\n"); - - /* ConvertCompressedLevels*DToData is a superset of - ConvertCompressedLevels*DToFile, so only one should be printed */ - } { - std::ostringstream out; - Debug{&out} << (ImageConverterFeature::ConvertCompressedLevels1DToData|ImageConverterFeature::ConvertCompressedLevels1DToFile); - CORRADE_COMPARE(out.str(), "Trade::ImageConverterFeature::ConvertCompressedLevels1DToData\n"); - - /* ConvertCompressedLevels*DToData is *also* a superset of - ConvertCompressed*DToData, so only one should be printed */ - } { - std::ostringstream out; - Debug{&out} << (ImageConverterFeature::ConvertCompressedLevels3DToData|ImageConverterFeature::ConvertCompressed3DToData); - CORRADE_COMPARE(out.str(), "Trade::ImageConverterFeature::ConvertCompressedLevels3DToData\n"); } } diff --git a/src/Magnum/Trade/imageconverter.cpp b/src/Magnum/Trade/imageconverter.cpp index c46e78843..2b5e8a2c8 100644 --- a/src/Magnum/Trade/imageconverter.cpp +++ b/src/Magnum/Trade/imageconverter.cpp @@ -1021,10 +1021,8 @@ no -C / --converter is specified, AnyImageConverter is used.)") Trade::ImageConverterFeature::ConvertCompressed3DToFile : Trade::ImageConverterFeature::Convert3DToFile; } else CORRADE_INTERNAL_ASSERT_UNREACHABLE(); - /** @todo use a sane flag once the feature enum is ... sane */ - constexpr Trade::ImageConverterFeatures ImageConverterFeatureLevels = - Trade::ImageConverterFeature::ConvertLevels1DToFile & ~Trade::ImageConverterFeature::Convert1DToFile; - if(outputIsMultiLevel) expectedFeatures |= ImageConverterFeatureLevels; + if(outputIsMultiLevel) + expectedFeatures |= Trade::ImageConverterFeature::Levels; if(!(converter->features() >= expectedFeatures)) { Error err; err << converterName << "doesn't support"; diff --git a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp b/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp index 9e50dbd45..a27e5ce14 100644 --- a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp +++ b/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp @@ -54,12 +54,7 @@ ImageConverterFeatures AnyImageConverter::doFeatures() const { ImageConverterFeature::ConvertCompressed1DToFile| ImageConverterFeature::ConvertCompressed2DToFile| ImageConverterFeature::ConvertCompressed3DToFile| - ImageConverterFeature::ConvertLevels1DToFile| - ImageConverterFeature::ConvertLevels2DToFile| - ImageConverterFeature::ConvertLevels3DToFile| - ImageConverterFeature::ConvertCompressedLevels1DToFile| - ImageConverterFeature::ConvertCompressedLevels2DToFile| - ImageConverterFeature::ConvertCompressedLevels3DToFile; + ImageConverterFeature::Levels; } bool AnyImageConverter::doConvertToFile(const ImageView1D& image, const Containers::StringView filename) {