Browse Source

Adapted to Magnum changes.

pull/34/head
Vladimír Vondruš 13 years ago
parent
commit
6807cd2b39
  1. 2
      src/Plugins/MagnumFontConverter/MagnumFontConverter.cpp
  2. 10
      src/Plugins/TgaImageConverter/Test/TgaImageConverterTest.cpp
  3. 38
      src/Plugins/TgaImageConverter/TgaImageConverter.cpp
  4. 2
      src/Plugins/TgaImageConverter/TgaImageConverter.h
  5. 2
      src/Plugins/TgaImageConverter/pluginRegistrationTgaImageConverter.cpp

2
src/Plugins/MagnumFontConverter/MagnumFontConverter.cpp

@ -98,7 +98,7 @@ std::vector<std::pair<std::string, Containers::Array<unsigned char>>> MagnumFont
/* Save cache image */
Image2D image(ImageFormat::Red, ImageType::UnsignedByte);
cache->texture()->image(0, image);
auto tgaData = Trade::TgaImageConverter().exportToData(&image);
auto tgaData = Trade::TgaImageConverter().exportToData(image);
std::vector<std::pair<std::string, Containers::Array<unsigned char>>> out;
out.emplace_back(filename + ".conf", std::move(confData));

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

@ -68,29 +68,29 @@ TgaImageConverterTest::TgaImageConverterTest() {
}
void TgaImageConverterTest::wrongFormat() {
Image2D image(ImageFormat::RG, ImageType::UnsignedByte, {}, nullptr);
ImageReference2D image(ImageFormat::RG, ImageType::UnsignedByte, {}, nullptr);
std::ostringstream out;
Error::setOutput(&out);
const auto data = TgaImageConverter().exportToData(&image);
const auto data = TgaImageConverter().exportToData(image);
CORRADE_VERIFY(!data);
CORRADE_COMPARE(out.str(), "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image format ImageFormat::RG\n");
}
void TgaImageConverterTest::wrongType() {
Image2D image(ImageFormat::Red, ImageType::Float, {}, nullptr);
ImageReference2D image(ImageFormat::Red, ImageType::Float, {}, nullptr);
std::ostringstream out;
Error::setOutput(&out);
const auto data = TgaImageConverter().exportToData(&image);
const auto data = TgaImageConverter().exportToData(image);
CORRADE_VERIFY(!data);
CORRADE_COMPARE(out.str(), "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image type ImageType::Float\n");
}
void TgaImageConverterTest::data() {
const auto data = TgaImageConverter().exportToData(&original);
const auto data = TgaImageConverter().exportToData(original);
TgaImporter importer;
CORRADE_VERIFY(importer.openData(data));

38
src/Plugins/TgaImageConverter/TgaImageConverter.cpp

@ -46,48 +46,48 @@ TgaImageConverter::TgaImageConverter(PluginManager::AbstractManager* manager, st
auto TgaImageConverter::doFeatures() const -> Features { return Feature::ConvertData; }
Containers::Array<unsigned char> TgaImageConverter::doExportToData(const Image2D* const image) const {
Containers::Array<unsigned char> TgaImageConverter::doExportToData(const ImageReference2D& image) const {
#ifndef MAGNUM_TARGET_GLES
if(image->format() != ImageFormat::BGR &&
image->format() != ImageFormat::BGRA &&
image->format() != ImageFormat::Red)
if(image.format() != ImageFormat::BGR &&
image.format() != ImageFormat::BGRA &&
image.format() != ImageFormat::Red)
#else
if(image->format() != ImageFormat::RGB &&
image->format() != ImageFormat::RGBA &&
image->format() != ImageFormat::Red)
if(image.format() != ImageFormat::RGB &&
image.format() != ImageFormat::RGBA &&
image.format() != ImageFormat::Red)
#endif
{
Error() << "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image format" << image->format();
Error() << "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image format" << image.format();
return nullptr;
}
if(image->type() != ImageType::UnsignedByte) {
Error() << "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image type" << image->type();
if(image.type() != ImageType::UnsignedByte) {
Error() << "Trade::TgaImageConverter::TgaImageConverter::convertToData(): unsupported image type" << image.type();
return nullptr;
}
/* Initialize data buffer */
const UnsignedByte pixelSize = image->pixelSize();
auto data = Containers::Array<unsigned char>::zeroInitialized(sizeof(TgaHeader) + pixelSize*image->size().product());
const UnsignedByte pixelSize = image.pixelSize();
auto data = Containers::Array<unsigned char>::zeroInitialized(sizeof(TgaHeader) + pixelSize*image.size().product());
/* Fill header */
auto header = reinterpret_cast<TgaHeader*>(data.begin());
header->imageType = image->format() == ImageFormat::Red ? 3 : 2;
header->imageType = image.format() == ImageFormat::Red ? 3 : 2;
header->bpp = pixelSize*8;
header->width = Utility::Endianness::littleEndian(image->size().x());
header->height = Utility::Endianness::littleEndian(image->size().y());
header->width = Utility::Endianness::littleEndian(image.size().x());
header->height = Utility::Endianness::littleEndian(image.size().y());
/* Fill data */
std::copy(image->data(), image->data()+pixelSize*image->size().product(), data.begin()+sizeof(TgaHeader));
std::copy(image.data(), image.data()+pixelSize*image.size().product(), data.begin()+sizeof(TgaHeader));
#ifdef MAGNUM_TARGET_GLES
if(image->format() == ImageFormat::RGB) {
auto pixels = reinterpret_cast<Math::Vector3<UnsignedByte>*>(data.begin()+sizeof(TgaHeader));
std::transform(pixels, pixels + image->size().product(), pixels,
std::transform(pixels, pixels + image.size().product(), pixels,
[](Math::Vector3<UnsignedByte> pixel) { return swizzle<'b', 'g', 'r'>(pixel); });
} else if(image->format() == ImageFormat::RGBA) {
} else if(image.format() == ImageFormat::RGBA) {
auto pixels = reinterpret_cast<Math::Vector4<UnsignedByte>*>(data.begin()+sizeof(TgaHeader));
std::transform(pixels, pixels + image->size().product(), pixels,
std::transform(pixels, pixels + image.size().product(), pixels,
[](Math::Vector4<UnsignedByte> pixel) { return swizzle<'b', 'g', 'r', 'a'>(pixel); });
}
#endif

2
src/Plugins/TgaImageConverter/TgaImageConverter.h

@ -58,7 +58,7 @@ class MAGNUM_TRADE_TGAIMAGECONVERTER_EXPORT TgaImageConverter: public AbstractIm
private:
Features MAGNUM_TRADE_TGAIMAGECONVERTER_LOCAL doFeatures() const override;
Containers::Array<unsigned char> MAGNUM_TRADE_TGAIMAGECONVERTER_LOCAL doExportToData(const Image2D* const image) const override;
Containers::Array<unsigned char> MAGNUM_TRADE_TGAIMAGECONVERTER_LOCAL doExportToData(const ImageReference2D& image) const override;
};
}}

2
src/Plugins/TgaImageConverter/pluginRegistrationTgaImageConverter.cpp

@ -25,4 +25,4 @@
#include "TgaImageConverter/TgaImageConverter.h"
CORRADE_PLUGIN_REGISTER(TgaImageConverter, Magnum::Trade::TgaImageConverter,
"cz.mosra.magnum.Trade.AbstractImageConverter/0.2")
"cz.mosra.magnum.Trade.AbstractImageConverter/0.2.1")

Loading…
Cancel
Save