summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Erik Nilsen <bnilsen@trolltech.com>2009-02-26 10:14:12 (GMT)
committerBjoern Erik Nilsen <bjorn.nilsen@nokia.com>2009-04-07 13:51:07 (GMT)
commitbaf61b32cf4aa554ee3dbb4a22b99e854d5ebd34 (patch)
treeb97e8258487d4e674a24dbb543c3cb3b8fd83c44
parentc451bec89869bb12b2a2937581df331443795dba (diff)
downloadQt-baf61b32cf4aa554ee3dbb4a22b99e854d5ebd34.zip
Qt-baf61b32cf4aa554ee3dbb4a22b99e854d5ebd34.tar.gz
Qt-baf61b32cf4aa554ee3dbb4a22b99e854d5ebd34.tar.bz2
Optimize QGraphicsItem::map(To|From)Parent(const QPainterPath)
Now that we have QPainterPath::translate, we can use that instead of itemTransform()/map(To|From)Scene, which lowers the number of QTransform operations involved. Reviewd-by: Andreas
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 26fc485..c8a4a14 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -4587,7 +4587,9 @@ QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterP
*/
QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const
{
- return d_ptr->parent ? itemTransform(d_ptr->parent).map(path) : mapToScene(path);
+ QPainterPath p(path);
+ p.translate(d_ptr->pos);
+ return d_ptr->hasTransform ? transform().map(p) : p;
}
/*!
@@ -4802,9 +4804,9 @@ QPainterPath QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPainte
*/
QPainterPath QGraphicsItem::mapFromParent(const QPainterPath &path) const
{
- if (d_ptr->parent)
- return d_ptr->parent->itemTransform(this).map(path);
- return mapFromScene(path);
+ QPainterPath p(path);
+ p.translate(-d_ptr->pos);
+ return d_ptr->hasTransform ? transform().inverted().map(p) : p;
}
/*!