summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview/qgraphicseffect_p.h
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-07-23 15:11:54 (GMT)
committerBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-07-24 01:03:19 (GMT)
commite646d08593dc18cad4e59176c2fe8c10fa5b9497 (patch)
treef1babc50eaddbe47327bcb7b7adb938c6a5820e0 /src/gui/graphicsview/qgraphicseffect_p.h
parent8e18256d023e6e78081a34b573d548d52137575d (diff)
downloadQt-e646d08593dc18cad4e59176c2fe8c10fa5b9497.zip
Qt-e646d08593dc18cad4e59176c2fe8c10fa5b9497.tar.gz
Qt-e646d08593dc18cad4e59176c2fe8c10fa5b9497.tar.bz2
Make QGraphicsEffect independent of QGraphicsItem.
This makes it possible to basically implement support for graphics effects on pretty much everything, e.g. QWidget. We currently only support effects on QGraphicsItem, but there's more to come :-)
Diffstat (limited to 'src/gui/graphicsview/qgraphicseffect_p.h')
-rw-r--r--src/gui/graphicsview/qgraphicseffect_p.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/gui/graphicsview/qgraphicseffect_p.h b/src/gui/graphicsview/qgraphicseffect_p.h
index 999e013..9204789 100644
--- a/src/gui/graphicsview/qgraphicseffect_p.h
+++ b/src/gui/graphicsview/qgraphicseffect_p.h
@@ -61,12 +61,31 @@
QT_BEGIN_NAMESPACE
+class QGraphicsEffectSource
+{
+public:
+ QGraphicsEffectSource() {}
+ virtual ~QGraphicsEffectSource() {}
+ virtual void detach() = 0;
+ virtual QRectF boundingRect() = 0;
+ virtual void draw(QPainter *p) = 0;
+ virtual bool drawIntoPixmap(QPixmap *, const QTransform & = QTransform()) = 0;
+};
+
class QGraphicsEffectPrivate : public QObjectPrivate
{
Q_DECLARE_PUBLIC(QGraphicsEffect)
public:
- QGraphicsEffectPrivate(): parentItem(0) {}
- QGraphicsItem *parentItem;
+ QGraphicsEffectPrivate() : source(0) {}
+ QGraphicsEffectSource *source;
+ inline void setGraphicsEffectSource(QGraphicsEffectSource *newSource)
+ {
+ if (source) {
+ source->detach();
+ delete source;
+ }
+ source = newSource;
+ }
};
class QGraphicsGrayscaleEffectPrivate : public QGraphicsEffectPrivate
@@ -106,8 +125,10 @@ class QGraphicsBlurEffectPrivate : public QGraphicsEffectPrivate
{
Q_DECLARE_PUBLIC(QGraphicsBlurEffect)
public:
- QGraphicsBlurEffectPrivate() : blurRadius(4) {}
+ QGraphicsBlurEffectPrivate() : filter(new QPixmapBlurFilter), blurRadius(4) {}
+ ~QGraphicsBlurEffectPrivate() { delete filter; }
+ QPixmapBlurFilter *filter;
int blurRadius;
};