Browse Source

TgaImageConverter: expose file extension and MIME type interfaces.

pull/565/merge
Vladimír Vondruš 4 years ago
parent
commit
f5f96513b5
  1. 3
      src/MagnumPlugins/TgaImageConverter/Test/TgaImageConverterTest.cpp
  2. 14
      src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp
  3. 6
      src/MagnumPlugins/TgaImageConverter/TgaImageConverter.h

3
src/MagnumPlugins/TgaImageConverter/Test/TgaImageConverterTest.cpp

@ -142,6 +142,9 @@ void TgaImageConverterTest::rgb() {
setTestCaseDescription(data.name);
Containers::Pointer<AbstractImageConverter> converter = _converterManager.instantiate("TgaImageConverter");
CORRADE_COMPARE(converter->extension(), "tga");
CORRADE_COMPARE(converter->mimeType(), "image/x-tga");
converter->setFlags(data.flags);
std::ostringstream out;

14
src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp

@ -29,6 +29,7 @@
#include <tuple>
#include <Corrade/Containers/Array.h>
#include <Corrade/Containers/Optional.h>
#include <Corrade/Containers/String.h>
#include <Corrade/Utility/Algorithms.h>
#include <Corrade/Utility/Endianness.h>
@ -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<Containers::Array<char>> TgaImageConverter::doConvertToData(const ImageView2D& image) {
/* Warn about lost metadata */
if(image.flags() & ImageFlag2D::Array) {
@ -98,4 +110,4 @@ Containers::Optional<Containers::Array<char>> 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")

6
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<Containers::Array<char>> doConvertToData(const ImageView2D& image) override;
};

Loading…
Cancel
Save