Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RenderableSource.h
Go to the documentation of this file.
1 //
2 // C++ Interface: Audio::RenderableSource
3 //
4 #ifndef __AUDIO_RENDERABLESOURCE_H__INCLUDED__
5 #define __AUDIO_RENDERABLESOURCE_H__INCLUDED__
6 
7 #include "Exceptions.h"
8 #include "Types.h"
9 #include "Format.h"
10 
11 namespace Audio {
12 
13  // Forward declarations
14 
15  class Source;
16  class Listener;
17 
18 
34  class RenderableSource : public UserData
35  {
36  private:
37  Source *source;
38 
39  protected:
41  RenderableSource(Source *source) throw();
42 
43  public:
44  virtual ~RenderableSource();
45 
46  enum UpdateFlags {
47  UPDATE_ALL = 0x0F,
51  UPDATE_GAIN = 0x08
52  };
53 
59  void startPlaying(Timestamp start = 0) throw(Exception);
60 
64  void stopPlaying() throw();
65 
67  bool isPlaying() const throw();
68 
72  Timestamp getPlayingTime() const throw(Exception);
73 
75  Source* getSource() const throw() { return source; }
76 
85  void seek(Timestamp time) throw(Exception);
86 
98  void update(int flags, const Listener& sceneListener) throw();
99 
100  // The following section contains all the virtual functions that need be implemented
101  // by a concrete Sound class. All are protected, so the interface is independent
102  // of implementations.
103  protected:
104 
108  virtual void startPlayingImpl(Timestamp start) throw(Exception) = 0;
109 
111  virtual void stopPlayingImpl() throw(Exception) = 0;
112 
114  virtual bool isPlayingImpl() const throw(Exception) = 0;
115 
117  virtual Timestamp getPlayingTimeImpl() const throw(Exception) = 0;
118 
120  virtual void updateImpl(int flags, const Listener& sceneListener) throw(Exception) = 0;
121 
123  virtual void seekImpl(Timestamp time) throw(Exception) = 0;
124  };
125 
126 };
127 
128 #endif//__AUDIO_RENDERABLESOURCE_H__INCLUDED__