summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qpaintengine_raster.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@nokia.com>2009-05-07 16:43:12 (GMT)
committerThiago Macieira <thiago.macieira@nokia.com>2009-05-07 16:43:12 (GMT)
commit6c067866db65f113237a4c28374317c948da8ba9 (patch)
treec8920e1ecbd4c6875691f52d5579e7264fb4af0d /src/gui/painting/qpaintengine_raster.cpp
parent61bec93c12bdc2912b38264386af07f80c3c0272 (diff)
parent90a65aa6611eb33229cdc00ffe6c22012944ba1a (diff)
downloadQt-6c067866db65f113237a4c28374317c948da8ba9.zip
Qt-6c067866db65f113237a4c28374317c948da8ba9.tar.gz
Qt-6c067866db65f113237a4c28374317c948da8ba9.tar.bz2
Merge branch '4.5'
Conflicts: src/gui/painting/qbackingstore.cpp src/gui/painting/qwindowsurface_raster.cpp
Diffstat (limited to 'src/gui/painting/qpaintengine_raster.cpp')
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 3428faf..c986e99 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -2579,9 +2579,10 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
if (!aa && sr.size() == QSize(1, 1)) {
// as fillRect will apply the aliased coordinate delta we need to
// subtract it here as we don't use it for image drawing
- const QRectF targetRect = r.translated(-aliasedCoordinateDelta,
- -aliasedCoordinateDelta);
- fillRect(targetRect, QColor::fromRgba(img.pixel(sr.x(), sr.y())));
+ QTransform old = s->matrix;
+ s->matrix = s->matrix * QTransform::fromTranslate(-aliasedCoordinateDelta, -aliasedCoordinateDelta);
+ fillRect(r, QColor::fromRgba(img.pixel(sr.x(), sr.y())));
+ s->matrix = old;
return;
}
@@ -2615,6 +2616,18 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
return;
d->image_filler_xform.setupMatrix(copy, s->flags.bilinear);
+ if (!aa && s->matrix.type() == QTransform::TxScale) {
+ QRectF rr = s->matrix.mapRect(r);
+
+ const int x1 = qRound(rr.x());
+ const int y1 = qRound(rr.y());
+ const int x2 = qRound(rr.right());
+ const int y2 = qRound(rr.bottom());
+
+ fillRect_normalized(QRect(x1, y1, x2-x1, y2-y1), &d->image_filler_xform, d);
+ return;
+ }
+
#ifdef QT_FAST_SPANS
ensureState();
if (s->flags.tx_noshear || s->matrix.type() == QTransform::TxScale) {