summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qpaintengine_raster.cpp
diff options
context:
space:
mode:
authoraxis <qt-info@nokia.com>2009-05-11 06:30:34 (GMT)
committeraxis <qt-info@nokia.com>2009-05-11 06:30:34 (GMT)
commit804a0ff4ad8c27ece2d403b8d9a4f6f65cdcf867 (patch)
tree0258fb5f685ccaa710f8ea8ec9da9b6aa9f91d35 /src/gui/painting/qpaintengine_raster.cpp
parentefb3e7288eec748db11c35de87239a1eff4d457c (diff)
parent842ba1b3878c2973b24936b18a7ee55bdd980be6 (diff)
downloadQt-804a0ff4ad8c27ece2d403b8d9a4f6f65cdcf867.zip
Qt-804a0ff4ad8c27ece2d403b8d9a4f6f65cdcf867.tar.gz
Qt-804a0ff4ad8c27ece2d403b8d9a4f6f65cdcf867.tar.bz2
Merge branch '4.5' of git@scm.dev.nokia.troll.no:qt/qt
Conflicts: tests/auto/qtemporaryfile/qtemporaryfile.pro
Diffstat (limited to 'src/gui/painting/qpaintengine_raster.cpp')
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index ba8f2a3..1192a58 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -2575,7 +2575,12 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
QRasterPaintEngineState *s = state();
const bool aa = s->flags.antialiased || s->flags.bilinear;
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
+ 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;
}
@@ -2609,6 +2614,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) {