summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-07-29 03:45:15 (GMT)
committerBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-07-29 06:43:36 (GMT)
commit8334e6f6590d801971a3ec9fe64ff087c750c26a (patch)
treec52c19a5164139132ac33c6098347ee115ff4ecf /src/gui/graphicsview
parent0eccc0f9ee9579883a829c373cfc1c072704bca0 (diff)
downloadQt-8334e6f6590d801971a3ec9fe64ff087c750c26a.zip
Qt-8334e6f6590d801971a3ec9fe64ff087c750c26a.tar.gz
Qt-8334e6f6590d801971a3ec9fe64ff087c750c26a.tar.bz2
Add support for updating the source when bounding rect changes.
Diffstat (limited to 'src/gui/graphicsview')
-rw-r--r--src/gui/graphicsview/qgraphicseffect.cpp19
-rw-r--r--src/gui/graphicsview/qgraphicseffect.h2
-rw-r--r--src/gui/graphicsview/qgraphicseffect_p.h1
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h3
4 files changed, 22 insertions, 3 deletions
diff --git a/src/gui/graphicsview/qgraphicseffect.cpp b/src/gui/graphicsview/qgraphicseffect.cpp
index 358826b..6bf28ac 100644
--- a/src/gui/graphicsview/qgraphicseffect.cpp
+++ b/src/gui/graphicsview/qgraphicseffect.cpp
@@ -121,16 +121,17 @@ const QStyleOption *QGraphicsEffectSource::styleOption() const
void QGraphicsEffectSource::draw(QPainter *painter)
{ d_func()->draw(painter); }
+void QGraphicsEffectSource::update()
+{ d_func()->update(); }
+
QPixmap QGraphicsEffectSource::pixmap(Qt::CoordinateSystem system, QPoint *offset) const
{ return d_func()->pixmap(system, offset); }
+
QGraphicsEffect::QGraphicsEffect()
: QObject(*new QGraphicsEffectPrivate, 0)
{}
-/*!
- \internal
-*/
QGraphicsEffect::QGraphicsEffect(QGraphicsEffectPrivate &dd)
: QObject(dd, 0)
{}
@@ -186,6 +187,13 @@ bool QGraphicsEffect::isEnabled() const
return d->isEnabled;
}
+void QGraphicsEffect::updateBoundingRect()
+{
+ Q_D(QGraphicsEffect);
+ if (d->source)
+ d->source->update();
+}
+
QGraphicsGrayscaleEffect::QGraphicsGrayscaleEffect()
: QGraphicsEffect(*new QGraphicsGrayscaleEffectPrivate)
{}
@@ -377,6 +385,7 @@ void QGraphicsBlurEffect::setBlurRadius(int radius)
{
Q_D(QGraphicsBlurEffect);
d->filter->setBlurRadius(radius);
+ updateBoundingRect();
}
QRectF QGraphicsBlurEffect::boundingRectFor(const QRectF &rect) const
@@ -420,6 +429,7 @@ void QGraphicsBloomEffect::setBlurRadius(int radius)
{
Q_D(QGraphicsBloomEffect);
d->blurRadius = radius;
+ updateBoundingRect();
}
qreal QGraphicsBloomEffect::opacity() const
@@ -523,6 +533,7 @@ void QGraphicsFrameEffect::setFrameWidth(qreal frameWidth)
{
Q_D(QGraphicsFrameEffect);
d->width = frameWidth;
+ updateBoundingRect();
}
qreal QGraphicsFrameEffect::frameOpacity() const
@@ -575,6 +586,7 @@ void QGraphicsShadowEffect::setShadowOffset(const QPointF &ofs)
{
Q_D(QGraphicsShadowEffect);
d->offset = ofs;
+ updateBoundingRect();
}
int QGraphicsShadowEffect::blurRadius() const
@@ -587,6 +599,7 @@ void QGraphicsShadowEffect::setBlurRadius(int blurRadius)
{
Q_D(QGraphicsShadowEffect);
d->radius = blurRadius;
+ updateBoundingRect();
}
qreal QGraphicsShadowEffect::opacity() const
diff --git a/src/gui/graphicsview/qgraphicseffect.h b/src/gui/graphicsview/qgraphicseffect.h
index e484f1a..9deada1 100644
--- a/src/gui/graphicsview/qgraphicseffect.h
+++ b/src/gui/graphicsview/qgraphicseffect.h
@@ -74,6 +74,7 @@ public:
const QGraphicsItem *graphicsItem() const;
const QStyleOption *styleOption() const;
void draw(QPainter *painter);
+ void update();
QRectF boundingRect(Qt::CoordinateSystem coordinateSystem = Qt::LogicalCoordinates) const;
QPixmap pixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, QPoint *offset = 0) const;
@@ -111,6 +112,7 @@ public Q_SLOTS:
protected:
QGraphicsEffect(QGraphicsEffectPrivate &d);
virtual void draw(QPainter *painter, QGraphicsEffectSource *source) = 0;
+ void updateBoundingRect();
private:
Q_DECLARE_PRIVATE(QGraphicsEffect)
diff --git a/src/gui/graphicsview/qgraphicseffect_p.h b/src/gui/graphicsview/qgraphicseffect_p.h
index f084a84..63da37b 100644
--- a/src/gui/graphicsview/qgraphicseffect_p.h
+++ b/src/gui/graphicsview/qgraphicseffect_p.h
@@ -72,6 +72,7 @@ public:
virtual const QGraphicsItem *graphicsItem() const = 0;
virtual const QStyleOption *styleOption() const = 0;
virtual void draw(QPainter *p) = 0;
+ virtual void update() = 0;
virtual QPixmap pixmap(Qt::CoordinateSystem system, QPoint *offset = 0) const = 0;
friend class QGraphicsScenePrivate;
friend class QGraphicsItem;
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index de8b0a5..8a2dae9 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -543,6 +543,9 @@ public:
inline const QGraphicsItem *graphicsItem() const
{ return item; }
+ inline void update()
+ { item->update(); }
+
inline const QStyleOption *styleOption() const
{ return info ? info->option : 0; }