diff options
author | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2009-07-29 03:15:02 (GMT) |
---|---|---|
committer | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2009-07-29 06:43:35 (GMT) |
commit | 0eccc0f9ee9579883a829c373cfc1c072704bca0 (patch) | |
tree | db7ebfc5b35077d4f1d5851ed116e33795f7933b | |
parent | 1cff081464744774d9d3e76704c03209fca280c2 (diff) | |
download | Qt-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.cpp | 12 | ||||
-rw-r--r-- | src/gui/graphicsview/qgraphicseffect.h | 9 | ||||
-rw-r--r-- | src/gui/graphicsview/qgraphicseffect_p.h | 5 | ||||
-rw-r--r-- | src/gui/graphicsview/qgraphicsitem.cpp | 2 | ||||
-rw-r--r-- | src/gui/graphicsview/qgraphicsscene.cpp | 4 |
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; } |