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_AUDIO_CHANNEL_H_
00028 #define OSDL_AUDIO_CHANNEL_H_
00029 
00030 
00031 #include "OSDLAudioCommon.h" 
00032 
00033 #include "Ceylan.h"          
00034 
00035 #include <string>
00036 
00037 
00038 
00039 
00040 namespace OSDL
00041 {
00042 
00043     
00044     
00045     namespace Audio 
00046     {
00047             
00048 
00049             
00051         class OSDL_DLL AudioChannelException: public AudioException 
00052         { 
00053             public: 
00054             
00055                 AudioChannelException( const std::string & reason ) ; 
00056                 virtual ~AudioChannelException() throw() ; 
00057         } ;
00058             
00059             
00060                             
00061                                                 
00073         class OSDL_DLL AudioChannel : public Ceylan::TextDisplayable
00074         {
00075         
00076         
00077             public:
00078                 
00079 
00080 
00095                 explicit AudioChannel( ChannelNumber channelNumber ) ;
00096                 
00097                 
00098                 
00100                 virtual ~AudioChannel() throw() ;
00101         
00102         
00103         
00108                 virtual ChannelNumber getNumber() const ;
00109         
00110         
00111         
00118                 virtual Volume getVolume() const ;
00119 
00120 
00121         
00131                 virtual void setVolume( Volume newVolume ) ;
00132         
00133         
00134         
00150                 virtual void setPanning( 
00151                     Ceylan::Maths::Percentage leftPercentage ) ;
00152                     
00153                     
00154                     
00162                 virtual void unsetPanning() ;
00163         
00164         
00165 
00181                 virtual void setReverseStereo( bool reverse = true ) ;
00182         
00183         
00184         
00201                 virtual void setDistanceAttenuation( 
00202                     ListenerDistance distance ) ;
00203                     
00204                     
00205                     
00214                 virtual void unsetDistanceAttenuation() ;
00215         
00216 
00217 
00237                 virtual void setPositionAttenuation( ListenerDistance distance,
00238                     ListenerAngle angle )  ;
00239                     
00240                     
00241                     
00250                 virtual void unsetPositionAttenuation() ;
00251 
00252 
00253         
00259                 virtual bool isPlaying() const ;
00260                 
00261                 
00262                 
00268                 virtual bool isPaused() const ;
00269                 
00270                 
00271                 
00279                 virtual FadingStatus getFadingStatus() const ;
00280                 
00281                 
00282                 
00292                 virtual void pause() ;
00293         
00294         
00295         
00303                 virtual void resume() ;
00304         
00305         
00306         
00317                 virtual void waitEndOfPlayback() const ;
00318                     
00319 
00320                 
00330                 virtual void halt() ;
00331         
00332         
00333         
00345                 virtual void expireIn( 
00346                     Ceylan::System::Millisecond expireDuration ) ;
00347         
00348         
00349         
00361                 virtual void fadeOutDuring( 
00362                     Ceylan::System::Millisecond fadeOutDuration ) ;
00363         
00364                     
00365         
00378                 virtual const std::string toString( 
00379                     Ceylan::VerbosityLevels level = Ceylan::high ) const ;
00380             
00381             
00382             
00383             
00384             protected:
00385             
00386                 
00387                 
00403                 virtual void onPlaybackFinished() ;
00404 
00405             
00406             
00408                 ChannelNumber _channelNumber ;
00409                 
00410                 
00411                 
00412                 
00413             private:
00414 
00415 
00416 
00423                 static void HandleFinishedPlaybackCallback( 
00424                     int channelNumber ) ;
00425                 
00426 
00427     
00436                 explicit AudioChannel( const AudioChannel & source ) ;
00437             
00438             
00439             
00448                 AudioChannel & operator = ( const AudioChannel & source ) ;
00449                 
00450             
00451         } ;
00452         
00453         
00454     }   
00455     
00456 }   
00457 
00458 
00459 
00460 #endif // OSDL_AUDIO_CHANNEL_H_
00461