00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #ifndef SDLAUDIO_H
00023 #define SDLAUDIO_H
00024 
00025 #include "SDL/SDL.h"
00026 #include "SDL/SDL_mixer.h"
00027 #include <list>
00028 
00035 using namespace std;
00036 
00044 class DECLSPEC SdlAudio  
00045 {
00046 public:
00053     typedef void (*CallBack)( SdlAudio *, void * );
00054 
00060     DECLSPEC SdlAudio( const char *name = 0 );
00061     virtual DECLSPEC ~SdlAudio();
00062 
00067     DECLSPEC void rename( const char *newname );
00069     const char *getName() const { return chName; }
00070 
00077     virtual int play( int loops = 0 ) = 0;
00086     virtual int fadeIn( int ms, int loops = 0 ) = 0;
00088     virtual bool isPlaying() = 0;
00092     virtual void pause() = 0;
00094     virtual bool isPaused() = 0;
00098     virtual void resume() = 0;
00102     virtual void stop() = 0;
00108     virtual int fadeOut( int ms ) = 0;
00114     virtual Mix_Fading fadeStatus() = 0;
00115 
00123     virtual void setVolume( int v ) = 0;
00125     virtual int getVolume() = 0;
00126 
00130     virtual int getChannel() = 0;
00131 
00139     DECLSPEC void setCallBack( CallBack c, void *pData );
00144     virtual bool isMusic() = 0;
00145 
00150     bool isFailed() { return bFailed; }
00151 
00152 protected:
00157     DECLSPEC virtual void failed();
00159     CallBack cb;
00161     void *cbData;
00162 
00163 private:
00164     bool bFailed;
00165     char *chName;
00166 };
00167 
00168 #endif