add more spacing
[personal-kdebase.git] / workspace / kwin / effects / blur.h
blobe18c8b62c536971cace832013ae6e85cc5e309ee
1 /********************************************************************
2 KWin - the KDE window manager
3 This file is part of the KDE project.
5 Copyright (C) 2007 Rivo Laks <rivolaks@hot.ee>
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *********************************************************************/
21 #ifndef KWIN_BLUR_H
22 #define KWIN_BLUR_H
24 // Include with base class for effects.
25 #include <kwineffects.h>
27 #include <QRegion>
29 template< class T > class QVector;
32 namespace KWin
35 class GLRenderTarget;
36 class GLTexture;
37 class GLShader;
39 /**
40 * Blurs the background of translucent windows
41 **/
42 class BlurEffect : public Effect
44 public:
45 BlurEffect();
46 ~BlurEffect();
48 virtual void prePaintScreen( ScreenPrePaintData& data, int time );
49 virtual void paintScreen( int mask, QRegion region, ScreenPaintData& data );
51 virtual void prePaintWindow( EffectWindow* w, WindowPrePaintData& data, int time );
52 virtual void drawWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data );
54 static bool supported();
56 protected:
57 bool loadData();
58 GLShader* loadShader(const QString& name);
59 void updateBlurTexture(const QVector<QRect>& rects, double blurAmount );
60 void updateBlurTexture(const QRegion& region , double blurAmount );
62 QRegion expandedRegion( const QRegion& r ) const;
64 private:
65 GLTexture* mSceneTexture;
66 GLTexture* mTmpTexture;
67 GLTexture* mBlurTexture;
68 GLRenderTarget* mSceneTarget;
69 GLRenderTarget* mTmpTarget;
70 GLRenderTarget* mBlurTarget;
71 GLShader* mBlurShader;
72 GLShader* mWindowShader;
73 bool mValid;
74 int mBlurRadius;
76 int mTransparentWindows;
78 QRegion mBlurDirty;
79 QRegion mScreenDirty;
81 QRegion mBlurMask;
84 } // namespace
86 #endif