Browse Source

TgaImageConverter: don't zero-init all output for no reason.

pull/601/head
Vladimír Vondruš 3 years ago
parent
commit
9903e23af9
  1. 17
      src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp

17
src/MagnumPlugins/TgaImageConverter/TgaImageConverter.cpp

@ -66,25 +66,26 @@ Containers::Optional<Containers::Array<char>> TgaImageConverter::doConvertToData
/* Initialize data buffer */ /* Initialize data buffer */
const auto pixelSize = UnsignedByte(image.pixelSize()); const auto pixelSize = UnsignedByte(image.pixelSize());
Containers::Array<char> data{ValueInit, sizeof(Implementation::TgaHeader) + pixelSize*image.size().product()}; Containers::Array<char> data{NoInit, sizeof(Implementation::TgaHeader) + pixelSize*image.size().product()};
/* Fill header */ /* Clear the header and fill non-zero values */
auto header = reinterpret_cast<Implementation::TgaHeader*>(data.begin()); auto& header = *reinterpret_cast<Implementation::TgaHeader*>(data.begin());
header = {};
switch(image.format()) { switch(image.format()) {
case PixelFormat::RGB8Unorm: case PixelFormat::RGB8Unorm:
case PixelFormat::RGBA8Unorm: case PixelFormat::RGBA8Unorm:
header->imageType = 2; header.imageType = 2;
break; break;
case PixelFormat::R8Unorm: case PixelFormat::R8Unorm:
header->imageType = 3; header.imageType = 3;
break; break;
default: default:
Error() << "Trade::TgaImageConverter::convertToData(): unsupported pixel format" << image.format(); Error() << "Trade::TgaImageConverter::convertToData(): unsupported pixel format" << image.format();
return {}; return {};
} }
header->bpp = pixelSize*8; header.bpp = pixelSize*8;
header->width = UnsignedShort(Utility::Endianness::littleEndian(image.size().x())); header.width = UnsignedShort(Utility::Endianness::littleEndian(image.size().x()));
header->height = UnsignedShort(Utility::Endianness::littleEndian(image.size().y())); header.height = UnsignedShort(Utility::Endianness::littleEndian(image.size().y()));
/* Copy the pixels into output, dropping padding (if any) */ /* Copy the pixels into output, dropping padding (if any) */
const Containers::ArrayView<char> pixels = data.exceptPrefix(sizeof(Implementation::TgaHeader)); const Containers::ArrayView<char> pixels = data.exceptPrefix(sizeof(Implementation::TgaHeader));

Loading…
Cancel
Save