summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-07-29 03:15:02 (GMT)
committerBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-07-29 06:43:35 (GMT)
commit0eccc0f9ee9579883a829c373cfc1c072704bca0 (patch)
treedb7ebfc5b35077d4f1d5851ed116e33795f7933b
parent1cff081464744774d9d3e76704c03209fca280c2 (diff)
downloadQt-0eccc0f9ee9579883a829c373cfc1c072704bca0.zip
Qt-0eccc0f9ee9579883a829c373cfc1c072704bca0.tar.gz
Qt-0eccc0f9ee9579883a829c373cfc1c072704bca0.tar.bz2
Make it possible to disable graphics effects.
Adds QGraphicsEffect::setEnabled/isEnabled
-rw-r--r--src/gui/graphicsview/qgraphicseffect.cpp12
-rw-r--r--src/gui/graphicsview/qgraphicseffect.h9
-rw-r--r--src/gui/graphicsview/qgraphicseffect_p.h5
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp4
5 files changed, 25 insertions, 7 deletions
diff --git a/src/gui/graphicsview/qgraphicseffect.cpp b/src/gui/graphicsview/qgraphicseffect.cpp
index 63cf975..358826b 100644
--- a/src/gui/graphicsview/qgraphicseffect.cpp
+++ b/src/gui/graphicsview/qgraphicseffect.cpp
@@ -174,6 +174,18 @@ QRectF QGraphicsEffect::boundingRectFor(const QRectF &rect) const
return rect;
}
+void QGraphicsEffect::setEnabled(bool enable)
+{
+ Q_D(QGraphicsEffect);
+ d->isEnabled = enable;
+}
+
+bool QGraphicsEffect::isEnabled() const
+{
+ Q_D(const QGraphicsEffect);
+ return d->isEnabled;
+}
+
QGraphicsGrayscaleEffect::QGraphicsGrayscaleEffect()
: QGraphicsEffect(*new QGraphicsGrayscaleEffectPrivate)
{}
diff --git a/src/gui/graphicsview/qgraphicseffect.h b/src/gui/graphicsview/qgraphicseffect.h
index 397651f..e484f1a 100644
--- a/src/gui/graphicsview/qgraphicseffect.h
+++ b/src/gui/graphicsview/qgraphicseffect.h
@@ -71,11 +71,11 @@ class Q_GUI_EXPORT QGraphicsEffectSource : public QObject
Q_OBJECT
public:
~QGraphicsEffectSource();
- QRectF boundingRect(Qt::CoordinateSystem s = Qt::LogicalCoordinates) const;
const QGraphicsItem *graphicsItem() const;
const QStyleOption *styleOption() const;
void draw(QPainter *painter);
- QPixmap pixmap(Qt::CoordinateSystem coordinateSystem, QPoint *offset = 0) const;
+ QRectF boundingRect(Qt::CoordinateSystem coordinateSystem = Qt::LogicalCoordinates) const;
+ QPixmap pixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, QPoint *offset = 0) const;
protected:
QGraphicsEffectSource(QGraphicsEffectSourcePrivate &dd, QObject *parent = 0);
@@ -93,6 +93,7 @@ class QGraphicsEffectPrivate;
class Q_GUI_EXPORT QGraphicsEffect : public QObject
{
Q_OBJECT
+ Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
public:
QGraphicsEffect();
virtual ~QGraphicsEffect();
@@ -102,6 +103,10 @@ public:
QPixmap sourcePixmap() const;
bool hasSourcePixmap() const;
virtual QRectF boundingRectFor(const QRectF &rect) const;
+ bool isEnabled() const;
+
+public Q_SLOTS:
+ void setEnabled(bool enable);
protected:
QGraphicsEffect(QGraphicsEffectPrivate &d);
diff --git a/src/gui/graphicsview/qgraphicseffect_p.h b/src/gui/graphicsview/qgraphicseffect_p.h
index b106e8e..f084a84 100644
--- a/src/gui/graphicsview/qgraphicseffect_p.h
+++ b/src/gui/graphicsview/qgraphicseffect_p.h
@@ -82,7 +82,7 @@ class QGraphicsEffectPrivate : public QObjectPrivate
{
Q_DECLARE_PUBLIC(QGraphicsEffect)
public:
- QGraphicsEffectPrivate() : source(0), hasSourcePixmap(0) {}
+ QGraphicsEffectPrivate() : source(0), hasSourcePixmap(0), isEnabled(1) {}
QGraphicsEffectSource *source;
inline void setGraphicsEffectSource(QGraphicsEffectSource *newSource)
{
@@ -95,7 +95,8 @@ public:
QRectF boundingRect;
QPixmap sourcePixmap;
quint32 hasSourcePixmap : 1;
- quint32 padding : 31; // feel free to use
+ quint32 isEnabled : 1;
+ quint32 padding : 30; // feel free to use
};
class QGraphicsGrayscaleEffectPrivate : public QGraphicsEffectPrivate
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index bb3258d..8c604e1 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -2252,7 +2252,7 @@ void QGraphicsItem::setGraphicsEffect(QGraphicsEffect *effect)
*/
QRectF QGraphicsItem::effectiveBoundingRect() const
{
- if (d_ptr->graphicsEffect)
+ if (d_ptr->graphicsEffect && d_ptr->graphicsEffect->isEnabled())
return d_ptr->graphicsEffect->boundingRect();
return boundingRect();
}
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 99aa347..9ce02a2 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -4303,7 +4303,7 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter *
if (itemHasChildren && itemClipsChildrenToShape)
ENSURE_TRANSFORM_PTR;
- if (item->d_ptr->graphicsEffect) {
+ if (item->d_ptr->graphicsEffect && item->d_ptr->graphicsEffect->isEnabled()) {
if (item->type() == 7) {
item->d_ptr->graphicsEffect->setSourcePixmap(static_cast<QGraphicsPixmapItem*>(item)
->pixmap());
@@ -4484,7 +4484,7 @@ void QGraphicsScenePrivate::markDirty(QGraphicsItem *item, const QRectF &rect, b
QGraphicsItem *p = item->d_ptr->parent;
while (p) {
p->d_ptr->dirtyChildren = 1;
- if (p->d_ptr->graphicsEffect) {
+ if (p->d_ptr->graphicsEffect && p->d_ptr->graphicsEffect->isEnabled()) {
p->d_ptr->dirty = 1;
p->d_ptr->fullUpdatePending = 1;
}