Browse Source

Adapted to Magnum changes.

Shorter lines, yay!
pull/34/head
Vladimír Vondruš 13 years ago
parent
commit
089ec23c77
  1. 19
      src/Plugins/TgaImageConverter/Test/TgaImageConverterTest.cpp
  2. 13
      src/Plugins/TgaImageConverter/TgaImageConverter.cpp
  3. 6
      src/Plugins/TgaImageConverter/TgaImageConverter.h
  4. 23
      src/Plugins/TgaImporter/Test/TgaImporterTest.cpp
  5. 15
      src/Plugins/TgaImporter/TgaImporter.cpp

19
src/Plugins/TgaImageConverter/Test/TgaImageConverterTest.cpp

@ -27,6 +27,7 @@
#include <TestSuite/Tester.h> #include <TestSuite/Tester.h>
#include <Utility/Directory.h> #include <Utility/Directory.h>
#include <Image.h> #include <Image.h>
#include <ImageFormat.h>
#include <Trade/ImageData.h> #include <Trade/ImageData.h>
#include <TgaImageConverter/TgaImageConverter.h> #include <TgaImageConverter/TgaImageConverter.h>
#include <TgaImporter/TgaImporter.h> #include <TgaImporter/TgaImporter.h>
@ -49,7 +50,7 @@ class TgaImageConverterTest: public Corrade::TestSuite::Tester {
}; };
namespace { namespace {
const Image2D original({2, 3}, Image2D::Format::BGR, Image2D::Type::UnsignedByte, new char[18] { const Image2D original({2, 3}, ImageFormat::BGR, ImageType::UnsignedByte, new char[18] {
1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4,
3, 4, 5, 4, 5, 6, 3, 4, 5, 4, 5, 6,
5, 6, 7, 6, 7, 8 5, 6, 7, 6, 7, 8
@ -65,7 +66,7 @@ TgaImageConverterTest::TgaImageConverterTest() {
} }
void TgaImageConverterTest::wrongFormat() { void TgaImageConverterTest::wrongFormat() {
Image2D image({}, Image2D::Format::RG, Image2D::Type::UnsignedByte, nullptr); Image2D image({}, ImageFormat::RG, ImageType::UnsignedByte, nullptr);
std::ostringstream out; std::ostringstream out;
Error::setOutput(&out); Error::setOutput(&out);
@ -73,11 +74,11 @@ void TgaImageConverterTest::wrongFormat() {
const unsigned char* data; const unsigned char* data;
std::tie(data, std::ignore) = TgaImageConverter().convertToData(&image); std::tie(data, std::ignore) = TgaImageConverter().convertToData(&image);
CORRADE_VERIFY(!data); CORRADE_VERIFY(!data);
CORRADE_COMPARE(out.str(), "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image format AbstractImage::Format::RG\n"); CORRADE_COMPARE(out.str(), "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image format ImageFormat::RG\n");
} }
void TgaImageConverterTest::wrongType() { void TgaImageConverterTest::wrongType() {
Image2D image({}, Image2D::Format::Red, Image2D::Type::Float, nullptr); Image2D image({}, ImageFormat::Red, ImageType::Float, nullptr);
std::ostringstream out; std::ostringstream out;
Error::setOutput(&out); Error::setOutput(&out);
@ -85,7 +86,7 @@ void TgaImageConverterTest::wrongType() {
const unsigned char* data; const unsigned char* data;
std::tie(data, std::ignore) = TgaImageConverter().convertToData(&image); std::tie(data, std::ignore) = TgaImageConverter().convertToData(&image);
CORRADE_VERIFY(!data); CORRADE_VERIFY(!data);
CORRADE_COMPARE(out.str(), "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image type AbstractImage::Type::Float\n"); CORRADE_COMPARE(out.str(), "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image type ImageType::Float\n");
} }
void TgaImageConverterTest::data() { void TgaImageConverterTest::data() {
@ -99,8 +100,8 @@ void TgaImageConverterTest::data() {
CORRADE_VERIFY(converted); CORRADE_VERIFY(converted);
CORRADE_COMPARE(converted->size(), Vector2i(2, 3)); CORRADE_COMPARE(converted->size(), Vector2i(2, 3));
CORRADE_COMPARE(converted->format(), Trade::ImageData2D::Format::BGR); CORRADE_COMPARE(converted->format(), ImageFormat::BGR);
CORRADE_COMPARE(converted->type(), Trade::ImageData2D::Type::UnsignedByte); CORRADE_COMPARE(converted->type(), ImageType::UnsignedByte);
CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(converted->data()), 2*3*3), CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(converted->data()), 2*3*3),
std::string(reinterpret_cast<const char*>(original.data()), 2*3*3)); std::string(reinterpret_cast<const char*>(original.data()), 2*3*3));
} }
@ -116,8 +117,8 @@ void TgaImageConverterTest::file() {
CORRADE_VERIFY(converted); CORRADE_VERIFY(converted);
CORRADE_COMPARE(converted->size(), Vector2i(2, 3)); CORRADE_COMPARE(converted->size(), Vector2i(2, 3));
CORRADE_COMPARE(converted->format(), Trade::ImageData2D::Format::BGR); CORRADE_COMPARE(converted->format(), ImageFormat::BGR);
CORRADE_COMPARE(converted->type(), Trade::ImageData2D::Type::UnsignedByte); CORRADE_COMPARE(converted->type(), ImageType::UnsignedByte);
CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(converted->data()), 2*3*3), CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(converted->data()), 2*3*3),
std::string(reinterpret_cast<const char*>(original.data()), 2*3*3)); std::string(reinterpret_cast<const char*>(original.data()), 2*3*3));

13
src/Plugins/TgaImageConverter/TgaImageConverter.cpp

@ -27,6 +27,7 @@
#include <fstream> #include <fstream>
#include <tuple> #include <tuple>
#include <Image.h> #include <Image.h>
#include <ImageFormat.h>
#include "TgaImporter/TgaHeader.h" #include "TgaImporter/TgaHeader.h"
@ -41,26 +42,26 @@ TgaImageConverter::Features TgaImageConverter::features() const {
} }
std::pair<const unsigned char*, std::size_t> TgaImageConverter::convertToData(const Image2D* const image) const { std::pair<const unsigned char*, std::size_t> TgaImageConverter::convertToData(const Image2D* const image) const {
if(image->format() != AbstractImage::Format::BGR && if(image->format() != ImageFormat::BGR &&
image->format() != AbstractImage::Format::BGRA && image->format() != ImageFormat::BGRA &&
image->format() != AbstractImage::Format::Red) { image->format() != ImageFormat::Red) {
Error() << "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image format" << image->format(); Error() << "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image format" << image->format();
return {nullptr, 0}; return {nullptr, 0};
} }
if(image->type() != AbstractImage::Type::UnsignedByte) { if(image->type() != ImageType::UnsignedByte) {
Error() << "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image type" << image->type(); Error() << "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image type" << image->type();
return {nullptr, 0}; return {nullptr, 0};
} }
/* Initialize data buffer */ /* Initialize data buffer */
const UnsignedByte pixelSize = Image2D::pixelSize(image->format(), image->type()); const UnsignedByte pixelSize = image->pixelSize();
const std::size_t size = sizeof(TgaImporter::TgaHeader) + pixelSize*image->size().product(); const std::size_t size = sizeof(TgaImporter::TgaHeader) + pixelSize*image->size().product();
unsigned char* data = new unsigned char[size](); unsigned char* data = new unsigned char[size]();
/* Fill header */ /* Fill header */
auto header = reinterpret_cast<TgaImporter::TgaHeader*>(data); auto header = reinterpret_cast<TgaImporter::TgaHeader*>(data);
header->imageType = image->format() == AbstractImage::Format::Red ? 3 : 2; header->imageType = image->format() == ImageFormat::Red ? 3 : 2;
header->bpp = pixelSize*8; header->bpp = pixelSize*8;
header->width = image->size().x(); header->width = image->size().x();
header->height = image->size().y(); header->height = image->size().y();

6
src/Plugins/TgaImageConverter/TgaImageConverter.h

@ -35,9 +35,9 @@ namespace Magnum { namespace Trade { namespace TgaImageConverter {
/** /**
@brief TGA image converter @brief TGA image converter
Supports images with format @ref AbstractImage::Format "AbstractImage::Format::BGR", Supports images with format @ref ImageFormat "ImageFormat::BGR",
@ref AbstractImage::Format "AbstractImage::Format::BGRA" or @ref AbstractImage::Format "AbstractImage::Format::Red" @ref ImageFormat "ImageFormat::BGRA" or @ref ImageFormat "ImageFormat::Red" and
and type @ref AbstractImage::Type "AbstractImage::Type::UnsignedByte". type @ref ImageType "ImageType::UnsignedByte".
*/ */
class TgaImageConverter: public AbstractImageConverter { class TgaImageConverter: public AbstractImageConverter {
public: public:

23
src/Plugins/TgaImporter/Test/TgaImporterTest.cpp

@ -25,6 +25,7 @@
#include <sstream> #include <sstream>
#include <TestSuite/Tester.h> #include <TestSuite/Tester.h>
#include <Utility/Directory.h> #include <Utility/Directory.h>
#include <ImageFormat.h>
#include <Trade/ImageData.h> #include <Trade/ImageData.h>
#include "TgaImporter/TgaImporter.h" #include "TgaImporter/TgaImporter.h"
@ -145,12 +146,12 @@ void TgaImporterTest::colorBits24() {
Trade::ImageData2D* image = importer.image2D(0); Trade::ImageData2D* image = importer.image2D(0);
CORRADE_VERIFY(image); CORRADE_VERIFY(image);
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CORRADE_COMPARE(image->format(), Trade::ImageData2D::Format::BGR); CORRADE_COMPARE(image->format(), ImageFormat::BGR);
#else #else
CORRADE_COMPARE(image->format(), Trade::ImageData2D::Format::RGB); CORRADE_COMPARE(image->format(), ImageFormat::RGB);
#endif #endif
CORRADE_COMPARE(image->size(), Vector2i(2, 3)); CORRADE_COMPARE(image->size(), Vector2i(2, 3));
CORRADE_COMPARE(image->type(), Trade::ImageData2D::Type::UnsignedByte); CORRADE_COMPARE(image->type(), ImageType::UnsignedByte);
CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(image->data()), 2*3*3), std::string(pixels, 2*3*3)); CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(image->data()), 2*3*3), std::string(pixels, 2*3*3));
delete image; delete image;
@ -178,12 +179,12 @@ void TgaImporterTest::colorBits32() {
Trade::ImageData2D* image = importer.image2D(0); Trade::ImageData2D* image = importer.image2D(0);
CORRADE_VERIFY(image); CORRADE_VERIFY(image);
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CORRADE_COMPARE(image->format(), Trade::ImageData2D::Format::BGRA); CORRADE_COMPARE(image->format(), ImageFormat::BGRA);
#else #else
CORRADE_COMPARE(image->format(), Trade::ImageData2D::Format::RGBA); CORRADE_COMPARE(image->format(), ImageFormat::RGBA);
#endif #endif
CORRADE_COMPARE(image->size(), Math::Vector2<GLsizei>(2, 3)); CORRADE_COMPARE(image->size(), Vector2i(2, 3));
CORRADE_COMPARE(image->type(), Trade::ImageData2D::Type::UnsignedByte); CORRADE_COMPARE(image->type(), ImageType::UnsignedByte);
CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(image->data()), 2*3*3), std::string(pixels, 2*3*3)); CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(image->data()), 2*3*3), std::string(pixels, 2*3*3));
delete image; delete image;
@ -201,9 +202,9 @@ void TgaImporterTest::grayscaleBits8() {
Trade::ImageData2D* image = importer.image2D(0); Trade::ImageData2D* image = importer.image2D(0);
CORRADE_VERIFY(image); CORRADE_VERIFY(image);
CORRADE_COMPARE(image->format(), Trade::ImageData2D::Format::Red); CORRADE_COMPARE(image->format(), ImageFormat::Red);
CORRADE_COMPARE(image->size(), Vector2i(2, 3)); CORRADE_COMPARE(image->size(), Vector2i(2, 3));
CORRADE_COMPARE(image->type(), Trade::ImageData2D::Type::UnsignedByte); CORRADE_COMPARE(image->type(), ImageType::UnsignedByte);
CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(image->data()), 2*3), std::string(data + 18, 2*3)); CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(image->data()), 2*3), std::string(data + 18, 2*3));
} }
@ -230,9 +231,9 @@ void TgaImporterTest::file() {
Trade::ImageData2D* image = importer.image2D(0); Trade::ImageData2D* image = importer.image2D(0);
CORRADE_VERIFY(image); CORRADE_VERIFY(image);
CORRADE_COMPARE(image->format(), Trade::ImageData2D::Format::Red); CORRADE_COMPARE(image->format(), ImageFormat::Red);
CORRADE_COMPARE(image->size(), Vector2i(2, 3)); CORRADE_COMPARE(image->size(), Vector2i(2, 3));
CORRADE_COMPARE(image->type(), Trade::ImageData2D::Type::UnsignedByte); CORRADE_COMPARE(image->type(), ImageType::UnsignedByte);
CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(image->data()), 2*3), std::string(data + 18, 2*3)); CORRADE_COMPARE(std::string(reinterpret_cast<const char*>(image->data()), 2*3), std::string(data + 18, 2*3));
} }

15
src/Plugins/TgaImporter/TgaImporter.cpp

@ -29,6 +29,7 @@
#include <algorithm> #include <algorithm>
#include <Utility/Endianness.h> #include <Utility/Endianness.h>
#include <Math/Vector2.h> #include <Math/Vector2.h>
#include <ImageFormat.h>
#include <Swizzle.h> #include <Swizzle.h>
#include <Trade/ImageData.h> #include <Trade/ImageData.h>
@ -96,7 +97,7 @@ ImageData2D* TgaImporter::image2D(UnsignedInt id) {
header.height = Endianness::littleEndian(header.height); header.height = Endianness::littleEndian(header.height);
/* Image format */ /* Image format */
ImageData2D::Format format; ImageFormat format;
if(header.colorMapType != 0) { if(header.colorMapType != 0) {
Error() << "Trade::TgaImporter::TgaImporter::image2D(): paletted files are not supported"; Error() << "Trade::TgaImporter::TgaImporter::image2D(): paletted files are not supported";
return nullptr; return nullptr;
@ -107,16 +108,16 @@ ImageData2D* TgaImporter::image2D(UnsignedInt id) {
switch(header.bpp) { switch(header.bpp) {
case 24: case 24:
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
format = ImageData2D::Format::BGR; format = ImageFormat::BGR;
#else #else
format = ImageData2D::Format::RGB; format = ImageFormat::RGB;
#endif #endif
break; break;
case 32: case 32:
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
format = ImageData2D::Format::BGRA; format = ImageFormat::BGRA;
#else #else
format = ImageData2D::Format::RGBA; format = ImageFormat::RGBA;
#endif #endif
break; break;
default: default:
@ -126,7 +127,7 @@ ImageData2D* TgaImporter::image2D(UnsignedInt id) {
/* Grayscale */ /* Grayscale */
} else if(header.imageType == 3) { } else if(header.imageType == 3) {
format = ImageData2D::Format::Red; format = ImageFormat::Red;
if(header.bpp != 8) { if(header.bpp != 8) {
Error() << "Trade::TgaImporter::TgaImporter::image2D(): unsupported grayscale bits-per-pixel:" << header.bpp; Error() << "Trade::TgaImporter::TgaImporter::image2D(): unsupported grayscale bits-per-pixel:" << header.bpp;
return nullptr; return nullptr;
@ -156,7 +157,7 @@ ImageData2D* TgaImporter::image2D(UnsignedInt id) {
} }
#endif #endif
return new ImageData2D(dimensions, format, ImageData2D::Type::UnsignedByte, buffer); return new ImageData2D(dimensions, format, ImageType::UnsignedByte, buffer);
} }
}}} }}}

Loading…
Cancel
Save