groupsource.h

Go to the documentation of this file.
00001 
00024 #ifndef GROUPSOURCE_H_INCLUDED_C427B440
00025 #define GROUPSOURCE_H_INCLUDED_C427B440
00026 
00027 #include "openalpp/source.h"
00028 #include "openalpp/audioconvert.h"
00029 #include <vector>
00030 #include <math.h>
00031 #include <stdlib.h>
00032 #include "openalpp/export.h"
00033 #include "openalpp/ref_ptr.h"
00034 namespace openalpp {
00035 
00042 class OPENALPP_API GroupSource : public SourceBase {
00046   bool mixed_;
00047 
00051   std::vector<openalpp::ref_ptr<Source> > sources_;
00052 
00056   ALuint buffer_;
00057 
00058   typedef enum Speaker {Left,Right};
00059 
00065    ALfloat filterDistance(ALuint source,Speaker speaker);
00066 
00075    ALshort *filterReverb(Source *source,ALshort *buffer,
00076                                      ALsizei &size,unsigned int frequency);
00077 
00086    ALshort *applyFilters(Source *source,ALshort *buffer,ALsizei &size,
00087                         unsigned int frequency);
00088  public:
00096    GroupSource(float x = 0.0, float y = 0.0, float z = 0.0) throw (NameError);
00097 
00102    void play() throw (InitError,FileError);
00103 
00112    void mixSources(unsigned int frequency=22050) 
00113     throw (InitError,FileError,FatalError,MemoryError,ValueError);
00114 
00122    ALuint includeSource(Source *source) throw (ValueError);
00123 
00129    void excludeSource(const Source &source) throw (NameError);
00130 
00136    void excludeSource(ALuint source) throw (NameError);
00137 
00141    GroupSource(const GroupSource &groupsource);
00142 
00143 
00147    GroupSource &operator=(const GroupSource &groupsource);
00148 
00149   protected:
00153    virtual ~GroupSource();
00154 
00155 };
00156 
00157 }
00158 
00159 #endif /* GROUPSOURCE_H_INCLUDED_C427B440 */

Generated on Sat Dec 30 13:31:01 2006 for openalpp by  doxygen 1.5.1