summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRhys Weatherley <rhys.weatherley@nokia.com>2009-10-22 05:12:40 (GMT)
committerRhys Weatherley <rhys.weatherley@nokia.com>2009-10-22 05:12:40 (GMT)
commit100afe8da00fdb1661b22e049960ed00a1d3c765 (patch)
tree7055b6806c9d1ff5a38edee4e9f7b70babe76a0a
parente7955a49b59a8c2568d1dcabaf6e72aca8a26bb0 (diff)
downloadQt-100afe8da00fdb1661b22e049960ed00a1d3c765.zip
Qt-100afe8da00fdb1661b22e049960ed00a1d3c765.tar.gz
Qt-100afe8da00fdb1661b22e049960ed00a1d3c765.tar.bz2
Fix a bug in QGraphicsRotation related to 2D projections
The projection to 2D needs to be done when the rotation is applied, not after all transformations have been applied. Reviewed-by: trustme
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h2
-rw-r--r--src/gui/graphicsview/qgraphicstransform.cpp4
-rw-r--r--tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp2
3 files changed, 5 insertions, 3 deletions
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index 6550362..8696324 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -539,7 +539,7 @@ struct QGraphicsItemPrivate::TransformData
QMatrix4x4 m;
for (int i = 0; i < graphicsTransforms.size(); ++i)
graphicsTransforms.at(i)->applyTo(&m);
- x *= m.toTransform();
+ x *= m.toTransform(0);
}
x.translate(xOrigin, yOrigin);
x.rotate(rotation);
diff --git a/src/gui/graphicsview/qgraphicstransform.cpp b/src/gui/graphicsview/qgraphicstransform.cpp
index ec1a2f5..49d8999 100644
--- a/src/gui/graphicsview/qgraphicstransform.cpp
+++ b/src/gui/graphicsview/qgraphicstransform.cpp
@@ -547,7 +547,9 @@ void QGraphicsRotation::applyTo(QMatrix4x4 *matrix) const
return;
matrix->translate(d->origin);
- matrix->rotate(d->angle, d->axis.x(), d->axis.y(), d->axis.z());
+ QMatrix4x4 m;
+ m.rotate(d->angle, d->axis.x(), d->axis.y(), d->axis.z());
+ *matrix *= m.toTransform();
matrix->translate(-d->origin);
}
diff --git a/tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp b/tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp
index b407fef..eb5c099 100644
--- a/tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp
+++ b/tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp
@@ -88,7 +88,7 @@ static QTransform transform2D(const QGraphicsTransform& t)
{
QMatrix4x4 m;
t.applyTo(&m);
- return m.toTransform();
+ return m.toTransform(0);
}
void tst_QGraphicsTransform::scale()