kimgio: simplify data copying in ico plugin

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-10-19 23:54:28 +03:00
parent 2ded74ccc3
commit 1b0dcc4f10
2 changed files with 6 additions and 16 deletions

View file

@ -240,17 +240,14 @@ bool ICOHandler::read(QImage *image)
switch (bmpbpp) {
case 32: {
QRgb* bmpimagebits = reinterpret_cast<QRgb*>(bmpimage.bits());
for (uint bi = 0; bi < bmpimagesize && bi < imageboundary; bi += 4) {
*bmpimagebits = qRgba(imagebytes.at(bi + 2), imagebytes.at(bi + 1), imagebytes.at(bi), imagebytes.at(bi + 3));
bmpimagebits++;
}
char* bmpimagebits = reinterpret_cast<char*>(bmpimage.bits());
::memcpy(bmpimagebits, imagebytes.constData(), imageboundary * sizeof(char));
break;
}
case 24: {
QRgb* bmpimagebits = reinterpret_cast<QRgb*>(bmpimage.bits());
for (uint bi = 0; bi < bmpimagesize && bi < imageboundary; bi += 3) {
*bmpimagebits = qRgb(imagebytes.at(bi + 2), imagebytes.at(bi + 1), imagebytes.at(bi));
*bmpimagebits = qRgba(imagebytes.at(bi + 2), imagebytes.at(bi + 1), imagebytes.at(bi), 0xff);
bmpimagebits++;
}
break;
@ -343,15 +340,8 @@ bool ICOHandler::write(const QImage &image)
datastream << bmpncolors;
datastream << bmpnimportantcolors;
const QRgb* bmpimagebits = reinterpret_cast<const QRgb*>(bmpimage.constBits());
for (uint bi = 0; bi < bmpimagesize; bi += 4) {
const uchar bmpb = qBlue(*bmpimagebits);
const uchar bmpg = qGreen(*bmpimagebits);
const uchar bmpr = qRed(*bmpimagebits);
const uchar bmpa = qAlpha(*bmpimagebits);
datastream << bmpb << bmpg << bmpr << bmpa;
bmpimagebits++;
}
const char* bmpimagebits = reinterpret_cast<const char*>(bmpimage.constBits());
datastream.writeRawData(bmpimagebits, bmpimagesize);
return (datastream.status() == QDataStream::Ok);
}

View file

@ -183,7 +183,7 @@ bool JP2Handler::read(QImage *image)
*image = QImage(ojimage->comps->w, ojimage->comps->h, QImage::Format_ARGB32);
if (Q_UNLIKELY(image->isNull())) {
kWarning() << "Could not create image QImage";
kWarning() << "Could not create image";
opj_destroy_codec(ojcodec);
opj_stream_destroy(ojstream);
opj_image_destroy(ojimage);