From 2944cdf050c47b9a048b7f0d19741fac23aa77c3 Mon Sep 17 00:00:00 2001 From: tpearson Date: Thu, 25 Aug 2011 21:13:21 +0000 Subject: Fix KImageEffect blur convolution Add blur ability to krootpixmap git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1249535 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kdeui/krootpixmap.cpp | 15 +++++++++++++++ kdeui/krootpixmap.h | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) (limited to 'kdeui') diff --git a/kdeui/krootpixmap.cpp b/kdeui/krootpixmap.cpp index d583a243d..8dbdf6149 100644 --- a/kdeui/krootpixmap.cpp +++ b/kdeui/krootpixmap.cpp @@ -59,6 +59,8 @@ void KRootPixmap::init() { d = new KRootPixmapData; m_Fade = 0; + m_BlurRadius = 0; + m_BlurSigma = 0; m_pPixmap = new KSharedPixmap; //ordinary KPixmap on win32 m_pTimer = new TQTimer( this ); m_bInit = false; @@ -137,6 +139,11 @@ void KRootPixmap::setFadeEffect(double fade, const TQColor &color) if ( m_bActive && m_bInit ) tqrepaint(true); } +void KRootPixmap::setBlurEffect(double radius, double sigma) +{ + m_BlurRadius = radius; + m_BlurSigma = sigma; +} bool KRootPixmap::eventFilter(TQObject *, TQEvent *event) { @@ -312,6 +319,14 @@ void KRootPixmap::updateBackground( KSharedPixmap *spm ) pm = io.convertToPixmap(img); } + if ((m_BlurRadius > 1e-6) || (m_BlurSigma > 1e-6)) + { + KPixmapIO io; + TQImage img = io.convertToImage(pm); + img = KImageEffect::blur(img, m_BlurRadius, m_BlurSigma); + pm = io.convertToPixmap(img); + } + if ( !m_bCustomPaint ) m_pWidget->setBackgroundPixmap( pm ); else { diff --git a/kdeui/krootpixmap.h b/kdeui/krootpixmap.h index 60f9ac549..532bc9758 100644 --- a/kdeui/krootpixmap.h +++ b/kdeui/krootpixmap.h @@ -105,6 +105,16 @@ public: */ const TQColor &color() const { return m_FadeColor; } + /** @since 3.5 + * @return the blur radius. + */ + const double &blurRadius() const { return m_BlurRadius; } + + /** @since 3.5 + * @return the blur sigma. + */ + const double &blurSigma() const { return m_BlurSigma; } + /** @since 3.2 * @return the color opacity. */ @@ -133,6 +143,18 @@ public slots: */ void setFadeEffect(double opacity, const TQColor &color); + /** + * Sets the blue effect. + * + * This effect will blur the background with the specified values. + * If both values are set to zero no blur is applied (this is the default). + * @param radius The radius of the gaussian not counting the + * center pixel. Use 0 and a suitable radius will be automatically used. + * @param sigma The standard deviation of the gaussian. Use 1 if you're not + * sure. + */ + void setBlurEffect(double radius, double sigma); + /** * Repaints the widget background. Normally, you shouldn't need this * as it is handled automatically. @@ -201,6 +223,8 @@ private: double m_Fade; TQColor m_FadeColor; + double m_BlurRadius; + double m_BlurSigma; TQRect m_Rect; TQWidget *m_pWidget; -- cgit v1.2.1