summaryrefslogtreecommitdiffstats
path: root/src/gui/effects
diff options
context:
space:
mode:
authorSamuel Rødal <sroedal@trolltech.com>2009-09-23 10:43:50 (GMT)
committerSamuel Rødal <sroedal@trolltech.com>2009-09-24 13:32:20 (GMT)
commit1a431e850893b6b162c833f4f148f090e2427dda (patch)
tree0d3872576a7209d62a1aa0230097ecdb85d5b92e /src/gui/effects
parent27accea024b8e5929c696ce30b0d45157e1f706f (diff)
downloadQt-1a431e850893b6b162c833f4f148f090e2427dda.zip
Qt-1a431e850893b6b162c833f4f148f090e2427dda.tar.gz
Qt-1a431e850893b6b162c833f4f148f090e2427dda.tar.bz2
Added BlurType to blur graphics effect API.
This lets the user control whether to use a fast dynamic blur when animating the radius of the blur for example, or to use a static high quality blur for one-time or constant radius blurring. Reviewed-by: Gunnar Sletta
Diffstat (limited to 'src/gui/effects')
-rw-r--r--src/gui/effects/qgraphicseffect.cpp52
-rw-r--r--src/gui/effects/qgraphicseffect.h9
2 files changed, 59 insertions, 2 deletions
diff --git a/src/gui/effects/qgraphicseffect.cpp b/src/gui/effects/qgraphicseffect.cpp
index ee87323..eee9bbf 100644
--- a/src/gui/effects/qgraphicseffect.cpp
+++ b/src/gui/effects/qgraphicseffect.cpp
@@ -777,7 +777,7 @@ void QGraphicsPixelizeEffect::draw(QPainter *painter, QGraphicsEffectSource *sou
A blur effect blurs the source. This effect is useful for reducing details,
such as when the source loses focus and you want to draw attention to other
elements. The level of detail can be modified using the setBlurRadius()
- function.
+ function. Use setBlurHint() to choose the quality or performance blur hints.
By default, the blur radius is 5 pixels.
@@ -795,7 +795,7 @@ QGraphicsBlurEffect::QGraphicsBlurEffect(QObject *parent)
: QGraphicsEffect(*new QGraphicsBlurEffectPrivate, parent)
{
Q_D(QGraphicsBlurEffect);
- d->filter->setQuality(Qt::SmoothTransformation);
+ d->filter->setBlurHint(QPixmapBlurFilter::PerformanceHint);
}
/*!
@@ -839,6 +839,54 @@ void QGraphicsBlurEffect::setBlurRadius(int radius)
*/
/*!
+ \enum QGraphicsBlurEffect::BlurHint
+
+ \since 4.6
+
+ This enum describes the hint of a blur graphics effect.
+
+ \value PerformanceHint Using this value hints that performance is the
+ most important factor, at the potential cost of lower quality.
+
+ \value QualityHint Using this value hints that a higher quality blur is
+ preferred over a fast blur.
+*/
+
+/*!
+ \property QGraphicsBlurEffect::blurHint
+ \brief the blur hint of the effect.
+
+ Use the PerformanceHint blur hint to say that you want a faster blur,
+ and the QualityHint blur hint to say that you prefer a higher quality blur.
+
+ When animating the blur radius it's recommended to use the PerformanceHint.
+
+ By default, the blur hint is PerformanceHint.
+*/
+QGraphicsBlurEffect::BlurHint QGraphicsBlurEffect::blurHint() const
+{
+ Q_D(const QGraphicsBlurEffect);
+ return BlurHint(d->filter->blurHint());
+}
+
+void QGraphicsBlurEffect::setBlurHint(QGraphicsBlurEffect::BlurHint hint)
+{
+ Q_D(QGraphicsBlurEffect);
+ if (BlurHint(d->filter->blurHint()) == hint)
+ return;
+
+ d->filter->setBlurHint(QPixmapBlurFilter::BlurHint(hint));
+ emit blurHintChanged(hint);
+}
+
+/*!
+ \fn void QGraphicsBlurEffect::blurHintChanged(QGraphicsBlurEffect::BlurHint hint)
+
+ This signal is emitted whenever the effect's blur hint changes.
+ The \a hint parameter holds the effect's new blur hint.
+*/
+
+/*!
\reimp
*/
QRectF QGraphicsBlurEffect::boundingRectFor(const QRectF &rect) const
diff --git a/src/gui/effects/qgraphicseffect.h b/src/gui/effects/qgraphicseffect.h
index 5062826..c256381 100644
--- a/src/gui/effects/qgraphicseffect.h
+++ b/src/gui/effects/qgraphicseffect.h
@@ -224,18 +224,27 @@ class Q_GUI_EXPORT QGraphicsBlurEffect: public QGraphicsEffect
{
Q_OBJECT
Q_PROPERTY(int blurRadius READ blurRadius WRITE setBlurRadius NOTIFY blurRadiusChanged)
+ Q_PROPERTY(BlurHint blurHint READ blurHint WRITE setBlurHint NOTIFY blurHintChanged)
public:
+ enum BlurHint {
+ PerformanceHint,
+ QualityHint
+ };
+
QGraphicsBlurEffect(QObject *parent = 0);
~QGraphicsBlurEffect();
QRectF boundingRectFor(const QRectF &rect) const;
int blurRadius() const;
+ BlurHint blurHint() const;
public Q_SLOTS:
void setBlurRadius(int blurRadius);
+ void setBlurHint(BlurHint blurHint);
Q_SIGNALS:
void blurRadiusChanged(int blurRadius);
+ void blurHintChanged(BlurHint blurHint);
protected:
void draw(QPainter *painter, QGraphicsEffectSource *source);