From cbfef77bb7bd370f7373edb78c2646328461d259 Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Fri, 6 Nov 2009 16:22:28 +0100 Subject: Fixed bug where JPEG scaling resulted in an uninitialised pixel column. Loading a JPEG image after calling QImageReader::setScaledSize() could cause a 1 pixel wide column of uninitialised pixels at the far right of the image. The bug was caused by rounding in the scaling algorithm. Fixed by copying the last calculated pixel all the way to the end of the row. Task-number: QTBUG-3282 Reviewed-by: Trond --- src/plugins/imageformats/jpeg/qjpeghandler.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/imageformats/jpeg/qjpeghandler.cpp b/src/plugins/imageformats/jpeg/qjpeghandler.cpp index d51668a..e5e5e80 100644 --- a/src/plugins/imageformats/jpeg/qjpeghandler.cpp +++ b/src/plugins/imageformats/jpeg/qjpeghandler.cpp @@ -342,6 +342,7 @@ QImage QImageSmoothScaler::scale() register int needcol; nxP = (QRgb *)dst.scanLine(rowswritten++); + QRgb *nxPEnd = nxP + d->newcols; fraccoltofill = SCALE; a = r = g = b = HALFSCALE; needcol = 0; @@ -425,7 +426,7 @@ QImage QImageSmoothScaler::scale() b += fraccoltofill * qBlue(*xP); } } - if (!needcol) { + if (nxP < nxPEnd) { r /= SCALE; if (r > maxval) r = maxval; @@ -443,6 +444,8 @@ QImage QImageSmoothScaler::scale() } else { *nxP = qRgb((int)r, (int)g, (int)b); } + while (++nxP != nxPEnd) + nxP[0] = nxP[-1]; } } } -- cgit v0.12