// 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: asy@libero.it #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 #include #include #include #include #include #include #include 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 particleList, starList; //stuff for 'exploding' pixmaps (kde, tux, icons..) TQPtrList imageList; //texture stuff unsigned int currentTexture, particleTexture, starTexture, flareTexture, diastarTexture; // (to add) novaTexture cometTexture //sound stuff KArtsDispatcher artsDispatcher; KArtsServer artsServer; TQPtrList 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