diff options
author | Samuel Rødal <sroedal@trolltech.com> | 2009-12-11 11:24:23 (GMT) |
---|---|---|
committer | Samuel Rødal <sroedal@trolltech.com> | 2009-12-14 14:18:36 (GMT) |
commit | 21c31b4a3ae972a4c2f03adebd43a2d6a27f8c93 (patch) | |
tree | 87a9f72381a6119f00fc7e6bbaf291195326c6ab /src/gui/effects/qgraphicseffect_p.h | |
parent | 8bbb0e70d189d7027494004a8dece8aeb4e37366 (diff) | |
download | Qt-21c31b4a3ae972a4c2f03adebd43a2d6a27f8c93.zip Qt-21c31b4a3ae972a4c2f03adebd43a2d6a27f8c93.tar.gz Qt-21c31b4a3ae972a4c2f03adebd43a2d6a27f8c93.tar.bz2 |
Added InvalidateReason to invalidateCache to optimize effects
This lets us ignore the invalidateCache call when the transform of a
graphics item with an effect changes, and the cached system is
LogicalCoordinates and cached mode is not PadToEffectiveBoundingRect.
Reviewed-by: Bjørn Erik Nilsen
Diffstat (limited to 'src/gui/effects/qgraphicseffect_p.h')
-rw-r--r-- | src/gui/effects/qgraphicseffect_p.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/gui/effects/qgraphicseffect_p.h b/src/gui/effects/qgraphicseffect_p.h index 0011eef..cab7a48 100644 --- a/src/gui/effects/qgraphicseffect_p.h +++ b/src/gui/effects/qgraphicseffect_p.h @@ -108,6 +108,13 @@ public: , m_cachedMode(QGraphicsEffect::PadToTransparentBorder) {} + enum InvalidateReason + { + TransformChanged, + EffectRectChanged, + SourceChanged + }; + virtual ~QGraphicsEffectSourcePrivate(); virtual void detach() = 0; virtual QRectF boundingRect(Qt::CoordinateSystem system) const = 0; @@ -121,7 +128,9 @@ public: virtual QPixmap pixmap(Qt::CoordinateSystem system, QPoint *offset = 0, QGraphicsEffect::PixmapPadMode mode = QGraphicsEffect::PadToTransparentBorder) const = 0; virtual void effectBoundingRectChanged() = 0; - void invalidateCache(bool effectRectChanged = false) const; + + void invalidateCache(InvalidateReason reason = SourceChanged) const; + Qt::CoordinateSystem currentCachedSystem() const { return m_cachedSystem; } friend class QGraphicsScenePrivate; friend class QGraphicsItem; |