59 return qRgba(uchar(r), uchar(g), uchar(b), uchar(a));
180 if (cmapDepth != 16 && cmapDepth != 24 && cmapDepth != 32) {
181 mErrorMessage = tr(
"Invalid color map depth (%1)").arg(cmapDepth);
184 offset += littleEndianInt(&mHeader[CMapLength]) * cmapDepth / 8;
195 unsigned char yCorner = desc & 0x20;
197 const qint64 pixelDataSize = qint64(imageWidth) * imageHeight * (bitsPerPixel / 8);
198 if (mDevice->size() > 0 && mDevice->size() - mDevice->pos() < pixelDataSize) {
199 mErrorMessage = tr(
"Insufficient image data for declared image size");
204 if (!QImageIOHandler::allocateImage(QSize(imageWidth, imageHeight), QImage::Format_ARGB32, &im))
206 TgaReader *reader = 0;
207 if (bitsPerPixel == 16)
208 reader =
new Tga16Reader();
209 else if (bitsPerPixel == 24)
210 reader =
new Tga24Reader();
211 else if (bitsPerPixel == 32)
212 reader =
new Tga32Reader();
215 TgaReader &read = *reader;
221 for (
int y = 0; y < imageHeight; ++y)
222 for (
int x = 0; x < imageWidth; ++x)
223 im.setPixel(x, y, read(mDevice));
227 for (
int y = imageHeight - 1; y >= 0; --y)
228 for (
int x = 0; x < imageWidth; ++x)
229 im.setPixel(x, y, read(mDevice));