diff options
Diffstat (limited to 'tdescreensaver/kdesavers/firesaver.h')
-rw-r--r-- | tdescreensaver/kdesavers/firesaver.h | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/tdescreensaver/kdesavers/firesaver.h b/tdescreensaver/kdesavers/firesaver.h new file mode 100644 index 00000000..8a34c5e9 --- /dev/null +++ b/tdescreensaver/kdesavers/firesaver.h @@ -0,0 +1,170 @@ +// This file is part of KFireSaver3D. + +// KFireSaver3D is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +// KFireSaver3D is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with KFireSaver3D; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +// Author: Enrico Ros, based on the great work of David Sansome (kfiresaver) +// Email: [email protected] + +#ifndef KFIRESAVER_H +#define KFIRESAVER_H + +#define PERSP_MAG_FACTOR 8.0 +#define NUMBER_OF_FIREPARTICLES 180 + +#define MSECPERIOD 17 // 1000ms / 60fps = 16.6667 ~= 17 [ms/frame] + +#define FIELDWIDTH 30.0 +#define FIELDW_2 (FIELDWIDTH/2.0) +#define FIELDW_4 (FIELDWIDTH/4.0) + +#include <tqgl.h> +#include <tqptrlist.h> +#include <tqimage.h> +#include <tqstring.h> +#include <tqcolor.h> + +#include <arts/kplayobject.h> +#include <arts/kartsserver.h> +#include <arts/kartsdispatcher.h> + +class Particle; +class Writer; + +class KFireSaver : public TQGLWidget +{ + public: + KFireSaver( TQWidget *parent=0, const char *name=0 ); + ~KFireSaver(); + + protected: + void initializeGL(); + void resizeGL( int, int ); + void paintGL(); + void timerEvent( class TQTimerEvent * ); + + private: + enum enumFireworkType + { + Sphere = 0, + NoFW = 1, + Circle = 2, + BiCircle = 3, + AngelHairs = 4, + Splitter = 5, + Spirals = 6, + SuperNova = 7, + NoRender = 8 + }; + + inline enumFireworkType pickType(); + inline int pickColour(); + void explodeFirework(Particle* fireWorkLeaderParticle); + void burnLogo(TQImage * image); + void playSound(TQString file); + bool loadTexture(TQString file, unsigned int & textureID); + void freeTexture(unsigned int & textureID); + void readConfig(); + + //list of particles and stars + TQPtrList<Particle> + particleList, + starList; + + //stuff for 'exploding' pixmaps (kde, tux, icons..) + TQPtrList<TQImage> + imageList; + + //texture stuff + unsigned int + currentTexture, + particleTexture, + starTexture, + flareTexture, + diastarTexture; // (to add) novaTexture cometTexture + + //sound stuff + KArtsDispatcher artsDispatcher; + KArtsServer artsServer; + TQPtrList<KPlayObject> playObjectList; + TQString sound_explosion, + sound_debris; + + //other stuff + class Writer * writer; + float unitX, + unitY; + double timeStampFrame; + bool firstGLFrame; + + struct { + bool enableBottomFire, //show + enableSound, + enableNoOverhead, + enableRealtime, + enableCombos, //fireworks + enableLogos, //specials + enableReduceLogo, + enableStars, + enableStarFlickering, + enableStarGradient, + enableWritings, + enableSphereLight, //effects + enableFlash, + enableFade, + enableMegaFlares, + enableTrails; + int fireworksFrequency, //show + particleSize, + logoFrequency, //specials + starsNumber, + flashOpacity, //effects + fadeAmount, + megaFlares; + TQColor + bottomFireColor; + int colorsCount, + colorsT[8], + typesCount; + enumFireworkType + typesT[9]; + } parameters; + + + enum enumShowType { + Show = 0, + Random = 1, + Monotype = 2, + Monochrome = 3 + }; + + struct { + enum enumShowType ShowType; + int colour, + colourSec; + enumFireworkType + type, + typeSec; + bool forceBicolour, + forceColour, + forcePower, + forceType; + float powerEnvelop; + double timeStamp, + timeGap; + } showp; +}; + +#endif |