Browse Source

Adapted to Magnum changes.

pull/34/head
Vladimír Vondruš 13 years ago
parent
commit
0927138ff1
  1. 20
      src/Plugins/TgaImporter/Test/TgaImporterTest.cpp
  2. 25
      src/Plugins/TgaImporter/TgaImporter.cpp
  3. 7
      src/Plugins/TgaImporter/TgaImporter.h
  4. 2
      src/Plugins/TgaImporter/pluginRegistrationTgaImporter.cpp

20
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);

25
src/Plugins/TgaImporter/TgaImporter.cpp

@ -25,6 +25,7 @@
#include "TgaImporter.h"
#include <fstream>
#include <sstream>
#include <algorithm>
#include <Utility/Endianness.h>
#include <Math/Vector2.h>
@ -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<const char*>(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);

7
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;
};

2
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")

Loading…
Cancel
Save