Browse Source

Deprecate direct instantiation for all plugins except the Any* proxies.

This was done back in October 2024 for all plugins in the magnum-plugins
repository, here it was blocked by usage in (now deprecated) MagnumFont.
In comparison the AnyImageImporter etc. plugins *are* meant to be
constructed directly by plugins that depend on them, so for those
nothing changes.
master
Vladimír Vondruš 4 days ago
parent
commit
2d65016446
  1. 6
      doc/changelog.dox
  2. 4
      src/MagnumPlugins/MagnumFont/MagnumFont.cpp
  3. 6
      src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp
  4. 4
      src/MagnumPlugins/ObjImporter/ObjImporter.cpp
  5. 11
      src/MagnumPlugins/ObjImporter/ObjImporter.h
  6. 6
      src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp
  7. 11
      src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h
  8. 4
      src/MagnumPlugins/TgaImporter/TgaImporter.cpp
  9. 11
      src/MagnumPlugins/TgaImporter/TgaImporter.h
  10. 4
      src/MagnumPlugins/WavAudioImporter/WavImporter.cpp
  11. 11
      src/MagnumPlugins/WavAudioImporter/WavImporter.h

6
doc/changelog.dox

@ -1842,6 +1842,12 @@ See also:
plugins, be it speed, efficiency, file size or portability. Use the plugins, be it speed, efficiency, file size or portability. Use the
@relativeref{Text,StbTrueTypeFont} plugin instead, which doesn't require @relativeref{Text,StbTrueTypeFont} plugin instead, which doesn't require
any font preprocessing upfront. 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 @subsection changelog-latest-compatibility Potential compatibility breakages, removed APIs

4
src/MagnumPlugins/MagnumFont/MagnumFont.cpp

@ -68,7 +68,7 @@ struct MagnumFont::Data {
Containers::Array<Glyph> glyphs; Containers::Array<Glyph> 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) {} MagnumFont::MagnumFont(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractFont{manager, plugin}, _opened(nullptr) {}
@ -111,7 +111,9 @@ void MagnumFont::doOpenData(Containers::Array<char>&& data, DataFlags, Float, Un
/* Open and load image file. Error messages should be printed by the /* Open and load image file. Error messages should be printed by the
TgaImporter already, no need to repeat them again. */ TgaImporter already, no need to repeat them again. */
CORRADE_IGNORE_DEPRECATED_PUSH
Trade::TgaImporter importer; Trade::TgaImporter importer;
CORRADE_IGNORE_DEPRECATED_POP
importer.setFileCallback(fileCallback(), fileCallbackUserData()); importer.setFileCallback(fileCallback(), fileCallbackUserData());
if(!importer.openFile(Utility::Path::join(_opened->filePath ? *_opened->filePath : "", conf.value("image")))) if(!importer.openFile(Utility::Path::join(_opened->filePath ? *_opened->filePath : "", conf.value("image"))))
return; return;

6
src/MagnumPlugins/MagnumFontConverter/MagnumFontConverter.cpp

@ -48,7 +48,7 @@
namespace Magnum { namespace Text { 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} {} MagnumFontConverter::MagnumFontConverter(PluginManager::AbstractManager& manager, const std::string& plugin): AbstractFontConverter{manager, plugin} {}
@ -148,10 +148,14 @@ std::vector<std::pair<std::string, Containers::Array<char>>> MagnumFontConverter
Containers::Optional<Containers::Array<char>> tgaData; Containers::Optional<Containers::Array<char>> tgaData;
if(cache.features() & GlyphCacheFeature::ImageProcessing) { if(cache.features() & GlyphCacheFeature::ImageProcessing) {
const Image3D image3 = cache.processedImage(); const Image3D image3 = cache.processedImage();
CORRADE_IGNORE_DEPRECATED_PUSH
tgaData = Trade::TgaImageConverter().convertToData(ImageView2D{image3.format(), image3.size().xy(), image3.data()}); tgaData = Trade::TgaImageConverter().convertToData(ImageView2D{image3.format(), image3.size().xy(), image3.data()});
CORRADE_IGNORE_DEPRECATED_POP
} else { } else {
const ImageView3D image3 = cache.image(); const ImageView3D image3 = cache.image();
CORRADE_IGNORE_DEPRECATED_PUSH
tgaData = Trade::TgaImageConverter().convertToData(ImageView2D{image3.format(), image3.size().xy(), image3.data()}); tgaData = Trade::TgaImageConverter().convertToData(ImageView2D{image3.format(), image3.size().xy(), image3.data()});
CORRADE_IGNORE_DEPRECATED_POP
} }
if(!tgaData) { if(!tgaData) {
Error{} << "Text::MagnumFontConverter::exportFontToData(): cannot create a TGA image"; Error{} << "Text::MagnumFontConverter::exportFontToData(): cannot create a TGA image";

4
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} {} ObjImporter::ObjImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImporter{manager, plugin} {}

11
src/MagnumPlugins/ObjImporter/ObjImporter.h

@ -132,8 +132,15 @@ to edit the configuration values.
*/ */
class MAGNUM_OBJIMPORTER_EXPORT ObjImporter: public AbstractImporter { class MAGNUM_OBJIMPORTER_EXPORT ObjImporter: public AbstractImporter {
public: public:
/** @brief Default constructor */ #ifdef MAGNUM_BUILD_DEPRECATED
explicit ObjImporter(); /**
* @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 */ /** @brief Plugin manager constructor */
explicit ObjImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin); explicit ObjImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);

6
src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp

@ -44,9 +44,9 @@ namespace Magnum { namespace Trade {
using namespace Containers::Literals; using namespace Containers::Literals;
/** @todo doesn't populate config options correctly, deprecate (used in #ifdef MAGNUM_BUILD_DEPRECATED
MagnumFontConverter currently) */ TgaImageConverter::TgaImageConverter() = default; /* LCOV_EXCL_LINE */
TgaImageConverter::TgaImageConverter() = default; #endif
TgaImageConverter::TgaImageConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImageConverter{manager, plugin} {} TgaImageConverter::TgaImageConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImageConverter{manager, plugin} {}

11
src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h

@ -131,8 +131,15 @@ to edit the configuration values.
*/ */
class MAGNUM_TGAIMAGECONVERTER_EXPORT TgaImageConverter: public AbstractImageConverter { class MAGNUM_TGAIMAGECONVERTER_EXPORT TgaImageConverter: public AbstractImageConverter {
public: public:
/** @brief Default constructor */ #ifdef MAGNUM_BUILD_DEPRECATED
explicit TgaImageConverter(); /**
* @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 */ /** @brief Plugin manager constructor */
explicit TgaImageConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin); explicit TgaImageConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);

4
src/MagnumPlugins/TgaImporter/TgaImporter.cpp

@ -42,7 +42,9 @@ namespace Magnum { namespace Trade {
using namespace Containers::Literals; 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} {} TgaImporter::TgaImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImporter{manager, plugin} {}

11
src/MagnumPlugins/TgaImporter/TgaImporter.h

@ -116,8 +116,15 @@ causes all import warnings to be suppressed.
*/ */
class MAGNUM_TGAIMPORTER_EXPORT TgaImporter: public AbstractImporter { class MAGNUM_TGAIMPORTER_EXPORT TgaImporter: public AbstractImporter {
public: public:
/** @brief Default constructor */ #ifdef MAGNUM_BUILD_DEPRECATED
explicit TgaImporter(); /**
* @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 */ /** @brief Plugin manager constructor */
explicit TgaImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin); explicit TgaImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);

4
src/MagnumPlugins/WavAudioImporter/WavImporter.cpp

@ -40,7 +40,9 @@ using Implementation::WavAudioFormat;
using Implementation::WavFormatChunk; using Implementation::WavFormatChunk;
using Implementation::WavHeaderChunk; 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} {} WavImporter::WavImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImporter{manager, plugin} {}

11
src/MagnumPlugins/WavAudioImporter/WavImporter.h

@ -121,8 +121,15 @@ Multi-channel formats are not supported.
*/ */
class MAGNUM_WAVAUDIOIMPORTER_EXPORT WavImporter: public AbstractImporter { class MAGNUM_WAVAUDIOIMPORTER_EXPORT WavImporter: public AbstractImporter {
public: public:
/** @brief Default constructor */ #ifdef MAGNUM_BUILD_DEPRECATED
explicit WavImporter(); /**
* @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 */ /** @brief Plugin manager constructor */
explicit WavImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin); explicit WavImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);

Loading…
Cancel
Save