Compile GL screensaver
[kdeartwork.git] / kscreensaver / kdesavers / Euphoria.h
blob8a1cd7253dbb477293d3a43ceda3149d2727e319
1 #ifndef __EUPHORIASS_H__
2 #define __EUPHORIASS_H__
3 //============================================================================
4 //
5 // Terence Welsh Screensaver - Euphoria
6 // http://www.reallyslick.com/
7 //
8 // KDE port by Karl Robillard
9 //
10 //============================================================================
13 #include <qgl.h>
14 //Added by qt3to4:
15 #include <QKeyEvent>
17 #include <kdialog.h>
19 class wisp;
20 class QTimer;
22 class EuphoriaWidget : public QGLWidget
24 Q_OBJECT
26 public:
28 enum eDefault
30 Regular,
31 Grid,
32 Cubism,
33 BadMath,
34 MTheory,
35 UHFTEM, // ultra high frequency tunneling electron microscope
36 Nowhere,
37 Echo,
38 Kaleidoscope,
39 DefaultModes
42 EuphoriaWidget( QWidget* parent=0, const char* name=0 );
43 ~EuphoriaWidget();
45 void updateParameters();
46 void setDefaults( int which );
48 protected:
50 void paintGL();
51 void resizeGL( int w, int h );
52 void initializeGL();
53 #ifdef UNIT_TEST
54 void keyPressEvent( QKeyEvent* );
55 #endif
57 private slots:
59 void nextFrame();
61 private:
63 GLuint texName;
64 wisp* _wisps;
65 wisp* _backwisps;
66 unsigned char* feedbackmap;
67 float aspectRatio;
68 int viewport[4];
69 double elapsedTime;
71 // feedback texture object
72 unsigned int feedbacktex;
73 int feedbacktexsize;
74 // feedback variables
75 float fr[4];
76 float fv[4];
77 float f[4];
78 // feedback limiters
79 float lr[3];
80 float lv[3];
81 float l[3];
85 int dWisps;
86 int dBackground;
87 int dDensity;
88 int dVisibility;
89 float dSpeed;
90 int dFeedback;
91 int dFeedbackspeed;
92 int dFeedbacksize;
93 int dWireframe;
94 int dTexture;
95 int dPriority;
98 // Using QTimer rather than timerEvent() to avoid getting locked out of
99 // the QEvent loop on lower-end systems. Ian Geiser <geiseri@kde.org>
100 // says this is the way to go.
101 QTimer* _timer;
102 int _frameTime;
104 friend class wisp;
108 #ifndef UNIT_TEST
109 #include <qdialog.h>
110 #include <kscreensaver.h>
113 class KEuphoriaScreenSaver : public KScreenSaver
115 Q_OBJECT
117 public:
119 KEuphoriaScreenSaver( WId id );
120 virtual ~KEuphoriaScreenSaver();
122 int mode() const { return _mode; }
124 public slots:
126 void setMode( int );
128 private:
130 void readSettings();
132 EuphoriaWidget* _effect;
133 int _mode;
137 class QComboBox;
139 class KEuphoriaSetup : public KDialog
141 Q_OBJECT
143 public:
144 KEuphoriaSetup( QWidget* parent = 0, const char* name = 0 );
145 ~KEuphoriaSetup();
147 private slots:
148 void slotHelp();
149 void slotOk();
151 private:
152 QComboBox* modeW;
153 KEuphoriaScreenSaver* _saver;
155 #endif
157 #endif //__EUPHORIASS_H__