From 327f66183a5db9503eebdaffa022fb830f3a7500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 24 Jul 2018 16:58:51 +0200 Subject: [PATCH] Trade: debug output for AbstractImageConverter::Feature[s]. --- doc/changelog.dox | 6 ++-- src/Magnum/Trade/AbstractImageConverter.cpp | 29 +++++++++++++++++++ src/Magnum/Trade/AbstractImageConverter.h | 6 ++++ .../Trade/Test/AbstractImageConverterTest.cpp | 23 ++++++++++++++- 4 files changed, 61 insertions(+), 3 deletions(-) diff --git a/doc/changelog.dox b/doc/changelog.dox index 1b84bfad1..27fc89c94 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -74,8 +74,10 @@ See also: separate translation / rotation / scaling specification instead of a combined transformation matrix. See @ref Trade::ObjectData2D::transformation() and @ref Trade::ObjectData3D::transformation() for more information. -- Debug output for @ref Trade::AbstractImporter::Feature enum and - @ref Trade::AbstractImporter::Features enum set +- Debug output for @ref Trade::AbstractImporter::Feature, + @ref Trade::AbstractImageConverter::Feature enums and + @ref Trade::AbstractImporter::Features, + @ref Trade::AbstractImageConverter::Features enum sets @subsection changelog-latest-changes Changes and improvements diff --git a/src/Magnum/Trade/AbstractImageConverter.cpp b/src/Magnum/Trade/AbstractImageConverter.cpp index d3c835727..35854b7a0 100644 --- a/src/Magnum/Trade/AbstractImageConverter.cpp +++ b/src/Magnum/Trade/AbstractImageConverter.cpp @@ -26,6 +26,7 @@ #include "AbstractImageConverter.h" #include +#include #include #include @@ -158,4 +159,32 @@ bool AbstractImageConverter::exportToFile(const ImageData2D& image, const std::s return image.isCompressed() ? exportToFile(CompressedImageView2D(image), filename) : exportToFile(ImageView2D(image), filename); } +Debug& operator<<(Debug& debug, const AbstractImageConverter::Feature value) { + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case AbstractImageConverter::Feature::v: return debug << "Trade::AbstractImageConverter::Feature::" #v; + _c(ConvertImage) + _c(ConvertCompressedImage) + _c(ConvertFile) + _c(ConvertCompressedFile) + _c(ConvertData) + _c(ConvertCompressedData) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << "Trade::AbstractImageConverter::Feature(" << Debug::nospace << reinterpret_cast(UnsignedByte(value)) << Debug::nospace << ")"; +} + +Debug& operator<<(Debug& debug, const AbstractImageConverter::Features value) { + return Containers::enumSetDebugOutput(debug, value, "Trade::AbstractImageConverter::Features{}", { + AbstractImageConverter::Feature::ConvertImage, + AbstractImageConverter::Feature::ConvertCompressedImage, + AbstractImageConverter::Feature::ConvertData, + AbstractImageConverter::Feature::ConvertCompressedData, + /* These are implied by Convert[Compressed]Data, so have to be last */ + AbstractImageConverter::Feature::ConvertFile, + AbstractImageConverter::Feature::ConvertCompressedFile}); +} + }} diff --git a/src/Magnum/Trade/AbstractImageConverter.h b/src/Magnum/Trade/AbstractImageConverter.h index 74c35067f..17dd7aa54 100644 --- a/src/Magnum/Trade/AbstractImageConverter.h +++ b/src/Magnum/Trade/AbstractImageConverter.h @@ -275,6 +275,12 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract CORRADE_ENUMSET_OPERATORS(AbstractImageConverter::Features) +/** @debugoperatorclassenum{AbstractImageConverter,AbstractImageConverter::Feature} */ +MAGNUM_TRADE_EXPORT Debug& operator<<(Debug& debug, AbstractImageConverter::Feature value); + +/** @debugoperatorclassenum{AbstractImageConverter,AbstractImageConverter::Features} */ +MAGNUM_TRADE_EXPORT Debug& operator<<(Debug& debug, AbstractImageConverter::Features value); + }} #endif diff --git a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp index 64eb63bc0..3d1fd22d3 100644 --- a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp @@ -23,6 +23,7 @@ DEALINGS IN THE SOFTWARE. */ +#include #include #include #include @@ -46,13 +47,19 @@ class AbstractImageConverterTest: public TestSuite::Tester { void exportToDataImageData(); void exportToFileImageData(); + + void debugFeature(); + void debugFeatures(); }; AbstractImageConverterTest::AbstractImageConverterTest() { addTests({&AbstractImageConverterTest::exportToFile, &AbstractImageConverterTest::exportToDataImageData, - &AbstractImageConverterTest::exportToFileImageData}); + &AbstractImageConverterTest::exportToFileImageData, + + &AbstractImageConverterTest::debugFeature, + &AbstractImageConverterTest::debugFeatures}); /* Create testing dir */ Utility::Directory::mkpath(TRADE_TEST_OUTPUT_DIR); @@ -133,6 +140,20 @@ void AbstractImageConverterTest::exportToFileImageData() { } } +void AbstractImageConverterTest::debugFeature() { + std::ostringstream out; + + Debug{&out} << AbstractImageConverter::Feature::ConvertCompressedImage << AbstractImageConverter::Feature(0xf0); + CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::Feature::ConvertCompressedImage Trade::AbstractImageConverter::Feature(0xf0)\n"); +} + +void AbstractImageConverterTest::debugFeatures() { + std::ostringstream out; + + Debug{&out} << (AbstractImageConverter::Feature::ConvertData|AbstractImageConverter::Feature::ConvertCompressedFile) << AbstractImageConverter::Features{}; + CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::Feature::ConvertData|Trade::AbstractImageConverter::Feature::ConvertCompressedFile Trade::AbstractImageConverter::Features{}\n"); +} + }}} CORRADE_TEST_MAIN(Magnum::Trade::Test::AbstractImageConverterTest)