optimize QPixmapData::toImage()

Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
This commit is contained in:
Ivailo Monev 2019-06-15 00:35:16 +00:00
parent 29c8c34392
commit dfb87495bf
2 changed files with 6 additions and 12 deletions

View file

@ -282,14 +282,7 @@ QImage QRasterPixmapData::toImage(const QRect &rect) const
if (rect.isNull())
return image;
QRect clipped = rect.intersected(QRect(0, 0, w, h));
const uint du = uint(d);
if ((du % 8 == 0) && (((uint(clipped.x()) * du)) % 32 == 0))
return QImage(image.scanLine(clipped.y()) + clipped.x() * (du / 8),
clipped.width(), clipped.height(),
image.bytesPerLine(), image.format());
else
return image.copy(clipped);
return image.copy(rect);
}
void QRasterPixmapData::setAlphaChannel(const QPixmap &alphaChannel)

View file

@ -247,10 +247,11 @@ void QPixmapData::setSerialNumber(int serNo)
QImage QPixmapData::toImage(const QRect &rect) const
{
if (rect.contains(QRect(0, 0, w, h)))
return toImage();
else
return toImage().copy(rect);
QImage image = toImage();
if (rect.isNull())
return image;
return image.copy(rect);
}
QImage* QPixmapData::buffer()