00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef OSDL_MUSIC_MANAGER_H_
00028 #define OSDL_MUSIC_MANAGER_H_
00029
00030
00031 #include "OSDLAudioCommon.h"
00032 #include "OSDLAudible.h"
00033
00034
00035 #include <string>
00036
00037
00038
00039
00040
00041 namespace OSDL
00042 {
00043
00044
00045
00046 namespace Audio
00047 {
00048
00049
00050
00051
00052 class Music ;
00053
00054
00055
00056
00058 class OSDL_DLL MusicManagerException: public AudioException
00059 {
00060 public:
00061
00062 MusicManagerException( const std::string & reason ) ;
00063 virtual ~MusicManagerException() throw() ;
00064 } ;
00065
00066
00067
00068
00075 class OSDL_DLL MusicPlaybackSetting : public Ceylan::TextDisplayable
00076 {
00077
00078 public:
00079
00080
00094 explicit MusicPlaybackSetting( Music & music,
00095 PlaybackCount count = 1 ) ;
00096
00097
00099 virtual ~MusicPlaybackSetting() throw() ;
00100
00101
00102
00107 virtual void setFadeInStatus( bool on ) ;
00108
00109
00110
00115 virtual void setFadeOutStatus( bool on ) ;
00116
00117
00118
00129 virtual void startPlayback() ;
00130
00131
00132
00140 virtual bool onPlaybackEnded() ;
00141
00142
00143
00156 virtual const std::string toString(
00157 Ceylan::VerbosityLevels level = Ceylan::high ) const ;
00158
00159
00160
00161
00162 protected:
00163
00164
00166 Music * _music ;
00167
00168
00170 PlaybackCount _count ;
00171
00172
00174 bool _fadeIn ;
00175
00176
00178 bool _fadeOut ;
00179
00180
00181
00182 private:
00183
00184
00193 explicit MusicPlaybackSetting(
00194 const MusicPlaybackSetting & source ) ;
00195
00196
00197
00206 MusicPlaybackSetting & operator = (
00207 const MusicPlaybackSetting & source ) ;
00208
00209 } ;
00210
00211
00212
00213
00214
00225 class OSDL_DLL MusicManager: public Ceylan::Object
00226 {
00227
00228
00229
00230 friend class AudioModule ;
00231
00232
00233 OSDL_DLL friend MusicManager &
00234 OSDL::Audio::getExistingMusicManager() ;
00235
00236
00237 public:
00238
00239
00240
00248 MusicManager() ;
00249
00250
00251
00253 virtual ~MusicManager() throw() ;
00254
00255
00256
00266 virtual void enqueue( Music & music, PlaybackCount count = 1,
00267 bool fadeIn = false, bool fadeOut = false ) ;
00268
00269
00270
00275 virtual bool isPlaying() const ;
00276
00277
00278
00291 virtual const std::string toString(
00292 Ceylan::VerbosityLevels level = Ceylan::high ) const ;
00293
00294
00295
00296
00297
00298 protected:
00299
00300
00301
00309 virtual void startNextMusicPlayback() ;
00310
00311
00312
00317 virtual void stopCurrentMusicPlayback() ;
00318
00319
00320
00331 virtual void onMusicPlaybackFinished() ;
00332
00333
00334
00336 std::list<MusicPlaybackSetting *> _playList ;
00337
00338
00340 MusicPlaybackSetting * _currentMusicPlayback ;
00341
00342
00343
00345 static MusicManager * _CurrentMusicManager ;
00346
00347
00348
00349
00350
00351 private:
00352
00353
00362 static void HandleMusicPlaybackFinishedCallback() ;
00363
00364
00373 explicit MusicManager( const MusicManager & source ) ;
00374
00375
00376
00385 MusicManager & operator = ( const MusicManager & source ) ;
00386
00387
00388
00389 } ;
00390
00391
00392
00405 OSDL_DLL MusicManager & getExistingMusicManager() ;
00406
00407
00408 }
00409
00410 }
00411
00412
00413
00414 #endif // OSDL_MUSIC_MANAGER_H_
00415