diff --git a/src/MagnumPlugins/TgaImageConverter/Test/TgaImageConverterTest.cpp b/src/MagnumPlugins/TgaImageConverter/Test/TgaImageConverterTest.cpp index 327f887b1..8e2f50abc 100644 --- a/src/MagnumPlugins/TgaImageConverter/Test/TgaImageConverterTest.cpp +++ b/src/MagnumPlugins/TgaImageConverter/Test/TgaImageConverterTest.cpp @@ -142,6 +142,9 @@ void TgaImageConverterTest::rgb() { setTestCaseDescription(data.name); Containers::Pointer converter = _converterManager.instantiate("TgaImageConverter"); + CORRADE_COMPARE(converter->extension(), "tga"); + CORRADE_COMPARE(converter->mimeType(), "image/x-tga"); + converter->setFlags(data.flags); std::ostringstream out; diff --git a/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp b/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp index e487fc91c..821a26e3f 100644 --- a/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp +++ b/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -40,12 +41,23 @@ namespace Magnum { namespace Trade { +using namespace Containers::Literals; + TgaImageConverter::TgaImageConverter() = default; TgaImageConverter::TgaImageConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImageConverter{manager, plugin} {} ImageConverterFeatures TgaImageConverter::doFeatures() const { return ImageConverterFeature::Convert2DToData; } +Containers::String TgaImageConverter::doExtension() const { return "tga"_s; } + +Containers::String TgaImageConverter::doMimeType() const { + /* https://en.wikipedia.org/wiki/Truevision_TGA says there's no registered + MIME type. It probably never will be. Using `file --mime-type` on a TGA + file returns image/x-tga, so using that here as well. */ + return "image/x-tga"_s; +} + Containers::Optional> TgaImageConverter::doConvertToData(const ImageView2D& image) { /* Warn about lost metadata */ if(image.flags() & ImageFlag2D::Array) { @@ -98,4 +110,4 @@ Containers::Optional> TgaImageConverter::doConvertToData }} CORRADE_PLUGIN_REGISTER(TgaImageConverter, Magnum::Trade::TgaImageConverter, - "cz.mosra.magnum.Trade.AbstractImageConverter/0.3.2") + "cz.mosra.magnum.Trade.AbstractImageConverter/0.3.3") diff --git a/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h b/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h index 2be10c928..1eccd9b35 100644 --- a/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h +++ b/src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h @@ -97,6 +97,10 @@ and have the files smaller, use the @ref StbImageConverter plugin instead. The TGA file format doesn't have a way to distinguish between 2D and 1D array images. If an image has @ref ImageFlag2D::Array set, a warning is printed and the file is saved as a regular 2D image. + +While TGA files can have several extensions, @ref extension() always returns +@cpp "tga" @ce as that's the most common one. As TGA doesn't have a registered +MIME type, @ref mimeType() returns @cpp "image/x-tga" @ce. */ class MAGNUM_TGAIMAGECONVERTER_EXPORT TgaImageConverter: public AbstractImageConverter { public: @@ -108,6 +112,8 @@ class MAGNUM_TGAIMAGECONVERTER_EXPORT TgaImageConverter: public AbstractImageCon private: MAGNUM_TGAIMAGECONVERTER_LOCAL ImageConverterFeatures doFeatures() const override; + MAGNUM_TGAIMAGECONVERTER_LOCAL Containers::String doExtension() const override; + MAGNUM_TGAIMAGECONVERTER_LOCAL Containers::String doMimeType() const override; MAGNUM_TGAIMAGECONVERTER_LOCAL Containers::Optional> doConvertToData(const ImageView2D& image) override; };