blob: 2cd7080fbe5e93b04bd110504e7d63662ed51398 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
///-----------------------------------------------------------------------------
//
// kgravity - Partical gravity Screen Saver for KDE 2
//
// Copyright (c) Ian Reinhart Geiser 2001
//
/////
//NOTE:
// The base particle engine did not come from me, it was designed by Jeff Molofee <nehe@connect.ab.ca>
// I did some extensive modifications to make it work with QT's OpenGL but the base principal is about
// the same.
////
#ifndef __GRAVITY_H__
#define __GRAVITY_H__
#include <qdialog.h>
#include <qgl.h>
#ifdef Q_WS_MACX
#include <OpenGL/glu.h>
#include <OpenGL/gl.h>
#else
#include <GL/glu.h>
#include <GL/gl.h>
#endif
#include <kscreensaver.h>
#include <qtimer.h>
#include <qimage.h>
#include "gravitycfg.h"
#include <kinstance.h>
#include <qfile.h>
#include <qtextstream.h>
#define MAX_PARTICLES 100
class Gravity : public QGLWidget
{
Q_OBJECT
class particles // Create A Structure For Particle
{
public:
bool active; // Active (Yes/No)
float life; // Particle Life
float fade; // Fade Speed
float r; // Red Value
float g; // Green Value
float b; // Blue Value
float x; // X Position
float y; // Y Position
float z; // Z Position
float xo; // X Position
float yo; // Y Position
float zo; // Z Position
float index; // Index
float indexo;
float size; // Particle Size
};
public:
Gravity( QWidget * parent=0, const char * name=0 );
~Gravity();
void setSize( float newSize );
void setStars( bool doStars );
protected:
/** paint the GL view */
void paintGL ();
/** resize the gl view */
void resizeGL ( int w, int h );
/** setup the GL enviroment */
void initializeGL ();
void buildParticle(int loop);
private:
/** load the partical file */
bool loadParticle();
particles particle[MAX_PARTICLES];
bool rainbow; // Rainbow Mode?
bool sp; // Spacebar Pressed?
bool rp; // Enter Key Pressed?
float slowdown; // Slow Down Particles
float xspeed; // Base X Speed (To Allow Keyboard Direction Of Tail)
float yspeed; // Base Y Speed (To Allow Keyboard Direction Of Tail)
float zoom; // Used To Zoom Out
float size;
float stars;
GLuint loop; // Misc Loop Variable
GLuint col; // Current Color Selection
GLuint delay; // Rainbow Effect Delay
GLuint texture[1];
QImage tex;
float index;
float transIndex;
GLfloat scale;
GLUquadricObj *obj;
};
class KGravitySaver : public KScreenSaver
{
Q_OBJECT
public:
KGravitySaver( WId drawable );
virtual ~KGravitySaver();
void readSettings();
public slots:
void blank();
void updateSize(int newSize);
void doStars(bool starState);
// void loadTextures(bool textures);
private:
Gravity *gravity;
QTimer *timer;
};
class KGravitySetup : public SetupUi
{
Q_OBJECT
public:
KGravitySetup( QWidget *parent = NULL, const char *name = NULL );
~KGravitySetup();
protected:
void readSettings();
private slots:
void slotOkPressed();
void aboutPressed();
private:
KGravitySaver *saver;
float size;
float stars;
float zoom;
float speed;
};
#endif
|