From 0927138ff153c75f274bf3ae9489bfc3cb959d26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 29 Mar 2013 14:25:25 +0100 Subject: [PATCH] Adapted to Magnum changes. --- .../TgaImporter/Test/TgaImporterTest.cpp | 20 ++++++--------- src/Plugins/TgaImporter/TgaImporter.cpp | 25 +++++++++---------- src/Plugins/TgaImporter/TgaImporter.h | 7 ++++-- .../pluginRegistrationTgaImporter.cpp | 2 +- 4 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/Plugins/TgaImporter/Test/TgaImporterTest.cpp b/src/Plugins/TgaImporter/Test/TgaImporterTest.cpp index c2289b3ab..d11bccebd 100644 --- a/src/Plugins/TgaImporter/Test/TgaImporterTest.cpp +++ b/src/Plugins/TgaImporter/Test/TgaImporterTest.cpp @@ -59,55 +59,51 @@ void TgaImporterTest::openInexistent() { Error::setOutput(&debug); TgaImporter importer; - CORRADE_VERIFY(!importer.open("inexistent.file")); + CORRADE_VERIFY(!importer.openFile("inexistent.file")); CORRADE_COMPARE(debug.str(), "TgaImporter: cannot open file inexistent.file\n"); } void TgaImporterTest::openShort() { const char data[] = { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - std::istringstream in(std::string(data, sizeof(data))); std::ostringstream debug; Error::setOutput(&debug); TgaImporter importer; - CORRADE_VERIFY(!importer.open(in)); + CORRADE_VERIFY(!importer.openData(data)); CORRADE_COMPARE(debug.str(), "TgaImporter: the file is too short: 17 bytes\n"); } void TgaImporterTest::paletted() { const char data[] = { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - std::istringstream in(std::string(data, sizeof(data))); std::ostringstream debug; Error::setOutput(&debug); TgaImporter importer; - CORRADE_VERIFY(!importer.open(in)); + CORRADE_VERIFY(!importer.openData(data)); CORRADE_COMPARE(debug.str(), "TgaImporter: paletted files are not supported\n"); } void TgaImporterTest::nonRgb() { const char data[] = { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - std::istringstream in(std::string(data, sizeof(data))); std::ostringstream debug; Error::setOutput(&debug); TgaImporter importer; - CORRADE_VERIFY(!importer.open(in)); + CORRADE_VERIFY(!importer.openData(data)); CORRADE_COMPARE(debug.str(), "TgaImporter: non-RGB files are not supported\n"); } void TgaImporterTest::bits16() { const char data[] = { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0 }; - std::istringstream in(std::string(data, sizeof(data))); std::ostringstream debug; Error::setOutput(&debug); TgaImporter importer; - CORRADE_VERIFY(!importer.open(in)); + CORRADE_VERIFY(!importer.openData(data)); CORRADE_COMPARE(debug.str(), "TgaImporter: unsupported bits-per-pixel: 16\n"); } @@ -123,10 +119,9 @@ void TgaImporterTest::bits24() { 3, 2, 1, 4, 3, 2, 5, 4, 3, 6, 5, 4, 7, 6, 5, 8, 7, 6 }; #endif - std::istringstream in(std::string(data, sizeof(data))); TgaImporter importer; - CORRADE_VERIFY(importer.open(in)); + CORRADE_VERIFY(importer.openData(data)); auto image = importer.image2D(0); #ifndef MAGNUM_TARGET_GLES CORRADE_COMPARE(image->format(), Trade::ImageData2D::Format::BGR); @@ -150,10 +145,9 @@ void TgaImporterTest::bits32() { 3, 2, 1, 1, 4, 3, 2, 1, 5, 4, 3, 1, 6, 5, 4, 1, 7, 6, 5, 1, 8, 7, 6, 1 }; #endif - std::istringstream in(std::string(data, sizeof(data))); TgaImporter importer; - CORRADE_VERIFY(importer.open(in)); + CORRADE_VERIFY(importer.openData(data)); auto image = importer.image2D(0); #ifndef MAGNUM_TARGET_GLES CORRADE_COMPARE(image->format(), Trade::ImageData2D::Format::BGRA); diff --git a/src/Plugins/TgaImporter/TgaImporter.cpp b/src/Plugins/TgaImporter/TgaImporter.cpp index 37f456847..c9697e51a 100644 --- a/src/Plugins/TgaImporter/TgaImporter.cpp +++ b/src/Plugins/TgaImporter/TgaImporter.cpp @@ -25,6 +25,7 @@ #include "TgaImporter.h" #include +#include #include #include #include @@ -46,26 +47,24 @@ TgaImporter::TgaImporter(Corrade::PluginManager::AbstractPluginManager* manager, TgaImporter::~TgaImporter() { close(); } TgaImporter::Features TgaImporter::features() const { - return Feature::OpenFile|Feature::OpenStream; + return Feature::OpenData|Feature::OpenFile; } -bool TgaImporter::TgaImporter::open(const std::string& filename) { +bool TgaImporter::TgaImporter::openData(const void* const data, const std::size_t size) { + std::istringstream in(std::string(reinterpret_cast(data), size)); + return open(in); +} + +bool TgaImporter::TgaImporter::openFile(const std::string& filename) { std::ifstream in(filename.c_str()); - if(!in.good()) { - Error() << "TgaImporter: cannot open file" << filename; - return false; - } - bool status = open(in); - in.close(); - return status; + if(in.good()) return open(in); + + Error() << "TgaImporter: cannot open file" << filename; + return false; } bool TgaImporter::open(std::istream& in) { if(_image) close(); - if(!in.good()) { - Error() << "TgaImporter: cannot read input stream"; - return false; - } /* Check if the file is long enough */ in.seekg(0, std::istream::end); diff --git a/src/Plugins/TgaImporter/TgaImporter.h b/src/Plugins/TgaImporter/TgaImporter.h index d66cc35bf..3a4a4fc45 100644 --- a/src/Plugins/TgaImporter/TgaImporter.h +++ b/src/Plugins/TgaImporter/TgaImporter.h @@ -58,8 +58,9 @@ class MAGNUM_TGAIMPORTER_EXPORT TgaImporter: public AbstractImporter { virtual ~TgaImporter(); Features features() const override; - bool open(std::istream& in) override; - bool open(const std::string& filename) override; + bool openData(const void* const data, const std::size_t size) override; + using AbstractImporter::openData; + bool openFile(const std::string& filename) override; void close() override; UnsignedInt image2DCount() const override; ImageData2D* image2D(UnsignedInt id) override; @@ -84,6 +85,8 @@ class MAGNUM_TGAIMPORTER_EXPORT TgaImporter: public AbstractImporter { #pragma pack(8) private: + bool MAGNUM_TGAIMPORTER_LOCAL open(std::istream& in); + ImageData2D* _image; }; diff --git a/src/Plugins/TgaImporter/pluginRegistrationTgaImporter.cpp b/src/Plugins/TgaImporter/pluginRegistrationTgaImporter.cpp index 8627be4e4..f09436993 100644 --- a/src/Plugins/TgaImporter/pluginRegistrationTgaImporter.cpp +++ b/src/Plugins/TgaImporter/pluginRegistrationTgaImporter.cpp @@ -25,4 +25,4 @@ #include "TgaImporter.h" PLUGIN_REGISTER(TgaImporter, Magnum::Trade::TgaImporter::TgaImporter, - "cz.mosra.magnum.Trade.AbstractImporter/0.2") + "cz.mosra.magnum.Trade.AbstractImporter/0.2.1")