00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef SDLFILEMUSIC_H
00023 #define SDLFILEMUSIC_H
00024
00025 #include "SDL/SDL_mixer.h"
00026 #include "sdlaudio.h"
00027
00042 class DECLSPEC SdlMusic : public SdlAudio
00043 {
00044 public:
00050 DECLSPEC SdlMusic( const char *name );
00051 virtual DECLSPEC ~SdlMusic();
00052
00053 virtual DECLSPEC int play( int loops = 0 );
00054 virtual DECLSPEC int fadeIn( int ms, int loops = 0 );
00055 virtual DECLSPEC bool isPlaying();
00056 virtual DECLSPEC void pause();
00057 virtual DECLSPEC bool isPaused();
00058 virtual DECLSPEC void resume();
00059 virtual DECLSPEC void stop();
00060 virtual DECLSPEC int fadeOut( int ms );
00061 virtual DECLSPEC Mix_Fading fadeStatus();
00062
00063 virtual DECLSPEC void setVolume( int v );
00064 virtual DECLSPEC int getVolume() { return nVolume; }
00065
00071 virtual int getChannel() { return isPlaying() ? 0 : -1; }
00072
00073 virtual bool isMusic() { return true; }
00074
00078 static SdlMusic *getPlayingStream() { return musPlaying; }
00085 static DECLSPEC void setGlbVolume( int v );
00086 protected:
00092 DECLSPEC void destroy();
00093
00095 Mix_Music *mixMusic;
00097 int nVolume;
00099 bool bPlaying;
00100
00102 static int g_nVolume;
00104 static SdlMusic *musPlaying;
00109 static void onMusicFinished()
00110 {
00111 if( musPlaying != 0 ) {
00112 musPlaying->bPlaying = false;
00113 if( musPlaying->cb )
00114 (*musPlaying->cb)( (SdlAudio*)musPlaying, musPlaying->cbData );
00115 }
00116 }
00117 };
00118
00119
00130 class DECLSPEC SdlFileMusic : public SdlMusic
00131 {
00132 public:
00141 DECLSPEC SdlFileMusic( const char *fn, const char *name = 0 );
00142 virtual DECLSPEC ~SdlFileMusic();
00143
00150 DECLSPEC bool load( const char *fn );
00151 };
00152
00153 #endif