add more spacing
[personal-kdebase.git] / workspace / kwin / effects / snow.h
blobe8a96cedfb282ca17dc6c1e1cbbee2a8fbeaa070
1 /********************************************************************
2 KWin - the KDE window manager
3 This file is part of the KDE project.
5 Copyright (C) 2007 Martin Gräßlin <ubuntu@martin-graesslin.com>
6 Copyright (C) 2008 Torgny Johansson <torgny.johansson@gmail.com>
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 *********************************************************************/
23 #ifndef KWIN_SNOW_H
24 #define KWIN_SNOW_H
26 #include <kwineffects.h>
27 #include <kwinglutils.h>
28 #include <qobject.h>
30 #include <QList>
32 namespace KWin
35 class SnowFlake
37 public:
38 SnowFlake(int x, int y, int width, int height, int maxVSpeed, int maxHSpeed);
39 virtual ~SnowFlake();
40 int getHSpeed();
41 int getVSpeed();
42 float getRotationAngle();
43 float getRotationSpeed();
44 void updateSpeedAndRotation();
45 int addFrame();
46 int getHeight();
47 int getWidth();
48 int getX();
49 int getY();
50 int getFrames();
51 QRect getRect();
52 void setHeight(int height);
53 void setWidth(int width);
54 void setX(int x);
55 void setY(int y);
57 private:
58 QRect rect;
59 int vSpeed;
60 int hSpeed;
61 int frameCounter;
62 int maxFrames;
63 float rotationAngle;
64 float rotationSpeed;
67 class SnowEffect
68 : public QObject, public Effect
70 Q_OBJECT
71 public:
72 SnowEffect();
73 virtual ~SnowEffect();
74 virtual void reconfigure( ReconfigureFlags );
75 virtual void prePaintScreen( ScreenPrePaintData& data, int time );
76 virtual void paintScreen( int mask, QRegion region, ScreenPaintData& data );
77 virtual void postPaintScreen();
78 virtual void paintWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data );
80 static bool supported();
81 private slots:
82 void toggle();
83 private:
84 void loadTexture();
85 void snowing( QRegion& region );
86 bool loadShader();
87 GLTexture* texture;
88 QList<SnowFlake> flakes;
89 long nextFlakeMillis;
90 int mNumberFlakes;
91 int mMinFlakeSize;
92 int mMaxFlakeSize;
93 int mMaxVSpeed;
94 int mMaxHSpeed;
95 bool active;
96 GLuint list;
97 bool snowBehindWindows;
98 GLShader* mShader;
99 bool mInited;
100 bool mUseShader;
101 QRegion repaintRegion;
102 bool hasSnown;
105 } // namespace
107 #endif