mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-23 18:32:49 +00:00
kimgio: webp optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
d94f5f5d8a
commit
f07799521f
1 changed files with 5 additions and 4 deletions
|
@ -83,14 +83,15 @@ bool WebPHandler::read(QImage *image)
|
||||||
m_loopcount = webpaniminfo.loop_count;
|
m_loopcount = webpaniminfo.loop_count;
|
||||||
m_imagecount = webpaniminfo.frame_count;
|
m_imagecount = webpaniminfo.frame_count;
|
||||||
|
|
||||||
QRectF previousrect;
|
|
||||||
QImage buffer(webpaniminfo.canvas_width, webpaniminfo.canvas_height, QImage::Format_ARGB32);
|
QImage buffer(webpaniminfo.canvas_width, webpaniminfo.canvas_height, QImage::Format_ARGB32);
|
||||||
if (Q_UNLIKELY(buffer.isNull())) {
|
if (Q_UNLIKELY(buffer.isNull())) {
|
||||||
kWarning() << "Could not create buffer image";
|
kWarning() << "Could not create buffer image";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const QColor background = QColor(QRgb(webpaniminfo.bgcolor));
|
|
||||||
|
|
||||||
|
QRectF previousrect;
|
||||||
|
QPainter painter(&buffer);
|
||||||
|
const QColor background = QColor(QRgb(webpaniminfo.bgcolor));
|
||||||
int framecounter = 0;
|
int framecounter = 0;
|
||||||
WebPIterator webpiter;
|
WebPIterator webpiter;
|
||||||
const WebPDemuxer* webpdemuxer = WebPAnimDecoderGetDemuxer(webpanimdec);
|
const WebPDemuxer* webpdemuxer = WebPAnimDecoderGetDemuxer(webpanimdec);
|
||||||
|
@ -131,7 +132,6 @@ bool WebPHandler::read(QImage *image)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPainter painter(&buffer);
|
|
||||||
switch (webpiter.dispose_method) {
|
switch (webpiter.dispose_method) {
|
||||||
case WEBP_MUX_DISPOSE_BACKGROUND: {
|
case WEBP_MUX_DISPOSE_BACKGROUND: {
|
||||||
// yep, there are images attempting to dispose the background without previous frame
|
// yep, there are images attempting to dispose the background without previous frame
|
||||||
|
@ -167,7 +167,7 @@ bool WebPHandler::read(QImage *image)
|
||||||
}
|
}
|
||||||
previousrect = QRectF(webpiter.x_offset, webpiter.y_offset, webpiter.width, webpiter.height);
|
previousrect = QRectF(webpiter.x_offset, webpiter.y_offset, webpiter.width, webpiter.height);
|
||||||
painter.drawImage(previousrect, frame);
|
painter.drawImage(previousrect, frame);
|
||||||
painter.end();
|
|
||||||
|
|
||||||
if (framecounter == m_currentimage) {
|
if (framecounter == m_currentimage) {
|
||||||
// bound to reasonable limits
|
// bound to reasonable limits
|
||||||
|
@ -176,6 +176,7 @@ bool WebPHandler::read(QImage *image)
|
||||||
}
|
}
|
||||||
framecounter++;
|
framecounter++;
|
||||||
}
|
}
|
||||||
|
painter.end();
|
||||||
*image = buffer;
|
*image = buffer;
|
||||||
|
|
||||||
m_currentimage++;
|
m_currentimage++;
|
||||||
|
|
Loading…
Add table
Reference in a new issue