Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

CSMusic.h

Go to the documentation of this file.
00001 #ifndef CSMusic_h
00002 #define CSMusic_h
00003 
00004 #include <string>
00005 #include <vector>
00006 #include "SDLMain.h"
00007 #include "CSLoadable.h"
00008 #include "CSLog.h"
00009 
00010 #ifdef WIN32
00011 #pragma warning(disable : 4786 )
00012 #endif
00013 
00014 class CSMusic;
00015 class CSMusicLoader;
00016 
00017 typedef std::vector<CSMusic *> CSMusics;
00018 
00019 class CSMusicData
00020 {
00021     public:
00022         char *id;
00023         char *filename;     // of bitmap file
00024 
00025         CSMusicData()
00026         {
00027             id = 0;
00028             filename = 0;
00029         }
00030 
00031         ~CSMusicData()
00032         {
00033             if (id != 0) 
00034             {
00035                 free(id);
00036                 id = 0;
00037             }
00038             if (filename != 0) 
00039             {
00040                 free(filename);
00041                 filename = 0;
00042             }
00043         }
00044 };
00045 
00046 class CSMusic
00047 {
00048     friend CSMusicLoader;
00049     private:
00050         Mix_Music *mMusic;
00051         SMPEG *mMPEG;
00052         // constructor using name
00053         CSMusic(const std::string &filename);
00054         void initialize(const CSMusicData &data);
00055         static void loadMusicData(const std::string &filename, CSMusicData &data);
00056         static isMP3(const char *name);
00057 
00058     public:
00059         // copy constructor
00060         CSMusic(const CSMusic &Music);
00061 
00062         // destructor
00063         virtual ~CSMusic(); 
00064         static const char *CLASS;
00065         virtual std::string getType() {return (std::string) CLASS;}
00066 
00067         void play();    
00068         void pause();
00069         void resume();
00070         void stop();
00071 };
00072 
00073 // factory - class
00074 // that is used to create CSMusic
00075 class CSMusicLoader : public Loadable<CSMusic>
00076 {
00077     protected:
00078         virtual CSMusic *create(const std::string &filename)
00079         {
00080             return new CSMusic(filename);
00081         }
00082 
00083     public:
00084         static CSMusicLoader INSTANCE;
00085 };
00086 
00087 
00088 #endif // CSMusic_h

Generated on Wed Jul 14 00:43:31 2004 for CSLib by doxygen 1.3.6