diff --git a/doc/changelog.dox b/doc/changelog.dox index 9c88db42d..dd1ddd268 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -1842,6 +1842,12 @@ See also: plugins, be it speed, efficiency, file size or portability. Use the @relativeref{Text,StbTrueTypeFont} plugin instead, which doesn't require any font preprocessing upfront. +- Direct plugin instantiation through the constructors isn't a supported use + case for @relativeref{Trade,ObjImporter}, @relativeref{Trade,TgaImporter}, + @relativeref{Trade,TgaImageConverter} and @ref Audio::WavImporter "WavAudioImporter" + anymore, as such a code path is not easy to test in common setups and + requires significant code duplication in order to preserve plugin-specific + configuration options. Instantiate though the plugin manager instead. @subsection changelog-latest-compatibility Potential compatibility breakages, removed APIs diff --git a/src/MagnumPlugins/MagnumFont/MagnumFont.cpp b/src/MagnumPlugins/MagnumFont/MagnumFont.cpp index 735fb5c4b..b88e812e3 100644 --- a/src/MagnumPlugins/MagnumFont/MagnumFont.cpp +++ b/src/MagnumPlugins/MagnumFont/MagnumFont.cpp @@ -68,7 +68,7 @@ struct MagnumFont::Data { Containers::Array glyphs; }; -MagnumFont::MagnumFont(): _opened(nullptr) {} +MagnumFont::MagnumFont(): _opened(nullptr) {} /* LCOV_EXCL_LINE */ MagnumFont::MagnumFont(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractFont{manager, plugin}, _opened(nullptr) {} @@ -111,7 +111,9 @@ void MagnumFont::doOpenData(Containers::Array&& data, DataFlags, Float, Un /* Open and load image file. Error messages should be printed by the TgaImporter already, no need to repeat them again. */ + CORRADE_IGNORE_DEPRECATED_PUSH Trade::TgaImporter importer; + CORRADE_IGNORE_DEPRECATED_POP importer.setFileCallback(fileCallback(), fileCallbackUserData()); if(!importer.openFile(Utility::Path::join(_opened->filePath ? *_opened->filePath : "", conf.value("image")))) return; diff --git a/src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp b/src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp index 36d0a2738..a23144c8c 100644 --- a/src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp +++ b/src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp @@ -48,7 +48,7 @@ namespace Magnum { namespace Text { -MagnumFontConverter::MagnumFontConverter() = default; +MagnumFontConverter::MagnumFontConverter() = default; /* LCOV_EXCL_LINE */ MagnumFontConverter::MagnumFontConverter(PluginManager::AbstractManager& manager, const std::string& plugin): AbstractFontConverter{manager, plugin} {} @@ -148,10 +148,14 @@ std::vector>> MagnumFontConverter Containers::Optional> tgaData; if(cache.features() & GlyphCacheFeature::ImageProcessing) { const Image3D image3 = cache.processedImage(); + CORRADE_IGNORE_DEPRECATED_PUSH tgaData = Trade::TgaImageConverter().convertToData(ImageView2D{image3.format(), image3.size().xy(), image3.data()}); + CORRADE_IGNORE_DEPRECATED_POP } else { const ImageView3D image3 = cache.image(); + CORRADE_IGNORE_DEPRECATED_PUSH tgaData = Trade::TgaImageConverter().convertToData(ImageView2D{image3.format(), image3.size().xy(), image3.data()}); + CORRADE_IGNORE_DEPRECATED_POP } if(!tgaData) { Error{} << "Text::MagnumFontConverter::exportFontToData(): cannot create a TGA image"; diff --git a/src/MagnumPlugins/ObjImporter/ObjImporter.cpp b/src/MagnumPlugins/ObjImporter/ObjImporter.cpp index 5fef3c035..d36677bb4 100644 --- a/src/MagnumPlugins/ObjImporter/ObjImporter.cpp +++ b/src/MagnumPlugins/ObjImporter/ObjImporter.cpp @@ -145,7 +145,9 @@ inline bool parseInt(const char* const errorPrefix, const Containers::StringView } -ObjImporter::ObjImporter() = default; +#ifdef MAGNUM_BUILD_DEPRECATED +ObjImporter::ObjImporter() = default; /* LCOV_EXCL_LINE */ +#endif ObjImporter::ObjImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImporter{manager, plugin} {} diff --git a/src/MagnumPlugins/ObjImporter/ObjImporter.h b/src/MagnumPlugins/ObjImporter/ObjImporter.h index 7dfeb5e1d..ddc33775a 100644 --- a/src/MagnumPlugins/ObjImporter/ObjImporter.h +++ b/src/MagnumPlugins/ObjImporter/ObjImporter.h @@ -132,8 +132,15 @@ to edit the configuration values. */ class MAGNUM_OBJIMPORTER_EXPORT ObjImporter: public AbstractImporter { public: - /** @brief Default constructor */ - explicit ObjImporter(); + #ifdef MAGNUM_BUILD_DEPRECATED + /** + * @brief Default constructor + * @m_deprecated_since_latest Direct plugin instantiation isn't a + * supported use case anymore, instantiate through the plugin + * manager instead. + */ + CORRADE_DEPRECATED("instantiate through the plugin manager instead") explicit ObjImporter(); + #endif /** @brief Plugin manager constructor */ explicit ObjImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin); diff --git a/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp b/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp index f843d597c..169906e52 100644 --- a/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp +++ b/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp @@ -44,9 +44,9 @@ namespace Magnum { namespace Trade { using namespace Containers::Literals; -/** @todo doesn't populate config options correctly, deprecate (used in - MagnumFontConverter currently) */ -TgaImageConverter::TgaImageConverter() = default; +#ifdef MAGNUM_BUILD_DEPRECATED +TgaImageConverter::TgaImageConverter() = default; /* LCOV_EXCL_LINE */ +#endif TgaImageConverter::TgaImageConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImageConverter{manager, plugin} {} diff --git a/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h b/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h index 740e25608..9569bb25b 100644 --- a/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h +++ b/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h @@ -131,8 +131,15 @@ to edit the configuration values. */ class MAGNUM_TGAIMAGECONVERTER_EXPORT TgaImageConverter: public AbstractImageConverter { public: - /** @brief Default constructor */ - explicit TgaImageConverter(); + #ifdef MAGNUM_BUILD_DEPRECATED + /** + * @brief Default constructor + * @m_deprecated_since_latest Direct plugin instantiation isn't a + * supported use case anymore, instantiate through the plugin + * manager instead. + */ + CORRADE_DEPRECATED("instantiate through the plugin manager instead") explicit TgaImageConverter(); + #endif /** @brief Plugin manager constructor */ explicit TgaImageConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin); diff --git a/src/MagnumPlugins/TgaImporter/TgaImporter.cpp b/src/MagnumPlugins/TgaImporter/TgaImporter.cpp index c286a995f..f9c19daad 100644 --- a/src/MagnumPlugins/TgaImporter/TgaImporter.cpp +++ b/src/MagnumPlugins/TgaImporter/TgaImporter.cpp @@ -42,7 +42,9 @@ namespace Magnum { namespace Trade { using namespace Containers::Literals; -TgaImporter::TgaImporter() = default; +#ifdef MAGNUM_BUILD_DEPRECATED +TgaImporter::TgaImporter() = default; /* LCOV_EXCL_LINE */ +#endif TgaImporter::TgaImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImporter{manager, plugin} {} diff --git a/src/MagnumPlugins/TgaImporter/TgaImporter.h b/src/MagnumPlugins/TgaImporter/TgaImporter.h index b0f917a2e..f7707a3c5 100644 --- a/src/MagnumPlugins/TgaImporter/TgaImporter.h +++ b/src/MagnumPlugins/TgaImporter/TgaImporter.h @@ -116,8 +116,15 @@ causes all import warnings to be suppressed. */ class MAGNUM_TGAIMPORTER_EXPORT TgaImporter: public AbstractImporter { public: - /** @brief Default constructor */ - explicit TgaImporter(); + #ifdef MAGNUM_BUILD_DEPRECATED + /** + * @brief Default constructor + * @m_deprecated_since_latest Direct plugin instantiation isn't a + * supported use case anymore, instantiate through the plugin + * manager instead. + */ + CORRADE_DEPRECATED("instantiate through the plugin manager instead") explicit TgaImporter(); + #endif /** @brief Plugin manager constructor */ explicit TgaImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin); diff --git a/src/MagnumPlugins/WavAudioImporter/WavImporter.cpp b/src/MagnumPlugins/WavAudioImporter/WavImporter.cpp index 780d8efc8..31fa5ad2d 100644 --- a/src/MagnumPlugins/WavAudioImporter/WavImporter.cpp +++ b/src/MagnumPlugins/WavAudioImporter/WavImporter.cpp @@ -40,7 +40,9 @@ using Implementation::WavAudioFormat; using Implementation::WavFormatChunk; using Implementation::WavHeaderChunk; -WavImporter::WavImporter() = default; +#ifdef MAGNUM_BUILD_DEPRECATED +WavImporter::WavImporter() = default; /* LCOV_EXCL_LINE */ +#endif WavImporter::WavImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImporter{manager, plugin} {} diff --git a/src/MagnumPlugins/WavAudioImporter/WavImporter.h b/src/MagnumPlugins/WavAudioImporter/WavImporter.h index e6b370a9a..b148271d7 100644 --- a/src/MagnumPlugins/WavAudioImporter/WavImporter.h +++ b/src/MagnumPlugins/WavAudioImporter/WavImporter.h @@ -121,8 +121,15 @@ Multi-channel formats are not supported. */ class MAGNUM_WAVAUDIOIMPORTER_EXPORT WavImporter: public AbstractImporter { public: - /** @brief Default constructor */ - explicit WavImporter(); + #ifdef MAGNUM_BUILD_DEPRECATED + /** + * @brief Default constructor + * @m_deprecated_since_latest Direct plugin instantiation isn't a + * supported use case anymore, instantiate through the plugin + * manager instead. + */ + CORRADE_DEPRECATED("instantiate through the plugin manager instead") explicit WavImporter(); + #endif /** @brief Plugin manager constructor */ explicit WavImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);