From 37e79ad69a90e24b19041665bdaf7db5faf30aae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 25 Jun 2022 13:35:48 +0200 Subject: [PATCH] {scene,image}converter: show image flags in --info. --- src/Magnum/SceneTools/sceneconverter.cpp | 11 +++++++++-- .../Trade/Implementation/converterUtilities.h | 15 +++++++++++++++ src/Magnum/Trade/imageconverter.cpp | 11 +++++++++-- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/Magnum/SceneTools/sceneconverter.cpp b/src/Magnum/SceneTools/sceneconverter.cpp index d3bb4275e..88afda92f 100644 --- a/src/Magnum/SceneTools/sceneconverter.cpp +++ b/src/Magnum/SceneTools/sceneconverter.cpp @@ -1276,8 +1276,15 @@ is specified as well, the IDs reference attributes of the first mesh.)") << info.name << Debug::resetColor; d << Debug::newline; } - d << " Level" << info.level << Debug::nospace << ":" - << Debug::packed; + d << " Level" << info.level << Debug::nospace << ":"; + if(info.flags.one) { + d << Debug::packed << Debug::color(Debug::Color::Cyan); + if(info.size.z()) d << info.flags.three; + else if(info.size.y()) d << info.flags.two; + else d << info.flags.one; + d << Debug::resetColor; + } + d << Debug::packed; if(info.size.z()) d << info.size; else if(info.size.y()) d << info.size.xy(); else d << Math::Vector<1, Int>(info.size.x()); diff --git a/src/Magnum/Trade/Implementation/converterUtilities.h b/src/Magnum/Trade/Implementation/converterUtilities.h index d936a081b..f856f83b2 100644 --- a/src/Magnum/Trade/Implementation/converterUtilities.h +++ b/src/Magnum/Trade/Implementation/converterUtilities.h @@ -48,6 +48,17 @@ struct Duration { std::chrono::high_resolution_clock::time_point _t; }; +union ImageInfoFlags { + /* Wow, C++, YOU FUCKING SUCK, how is this not the implicit behavior?!! */ + ImageInfoFlags(ImageFlags1D flags): one{flags} {} + ImageInfoFlags(ImageFlags2D flags): two{flags} {} + ImageInfoFlags(ImageFlags3D flags): three{flags} {} + + ImageFlags1D one; + ImageFlags2D two; + ImageFlags3D three; +}; + struct ImageInfo { UnsignedInt image, level; bool compressed; @@ -56,6 +67,7 @@ struct ImageInfo { Vector3i size; std::size_t dataSize; Trade::DataFlags dataFlags; + ImageInfoFlags flags; Containers::String name; }; @@ -83,6 +95,7 @@ Containers::Array imageInfo(AbstractImporter& importer, bool& error, Vector3i::pad(image->size()), image->data().size(), image->dataFlags(), + ImageInfoFlags{image->flags()}, j ? "" : importer.image1DName(i)); } } @@ -108,6 +121,7 @@ Containers::Array imageInfo(AbstractImporter& importer, bool& error, Vector3i::pad(image->size()), image->data().size(), image->dataFlags(), + ImageInfoFlags{image->flags()}, j ? "" : name); } } @@ -133,6 +147,7 @@ Containers::Array imageInfo(AbstractImporter& importer, bool& error, image->size(), image->data().size(), image->dataFlags(), + ImageInfoFlags{image->flags()}, j ? "" : name); } } diff --git a/src/Magnum/Trade/imageconverter.cpp b/src/Magnum/Trade/imageconverter.cpp index 61566413d..c46e78843 100644 --- a/src/Magnum/Trade/imageconverter.cpp +++ b/src/Magnum/Trade/imageconverter.cpp @@ -609,8 +609,15 @@ no -C / --converter is specified, AnyImageConverter is used.)") << info.name << Debug::resetColor; d << Debug::newline; } - d << " Level" << info.level << Debug::nospace << ":" - << Debug::packed; + d << " Level" << info.level << Debug::nospace << ":"; + if(info.flags.one) { + d << Debug::packed << Debug::color(Debug::Color::Cyan); + if(info.size.z()) d << info.flags.three; + else if(info.size.y()) d << info.flags.two; + else d << info.flags.one; + d << Debug::resetColor; + } + d << Debug::packed; if(info.size.z()) d << info.size; else if(info.size.y()) d << info.size.xy(); else d << Math::Vector<1, Int>(info.size.x());