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
00028
00031
00032 #pragma once
00033
00034 #include "api_sound.h"
00035 #include "../Core/System/sharedptr.h"
00036
00037 class CL_SoundCard;
00038 class CL_SoundFilter;
00039 class CL_SoundBuffer;
00040 class CL_SoundBuffer_Session_Impl;
00041 class CL_SoundOutput;
00042
00050 class CL_API_SOUND CL_SoundBuffer_Session
00051 {
00054
00055 public:
00057 CL_SoundBuffer_Session();
00058
00062 CL_SoundBuffer_Session(const CL_SoundBuffer_Session ©);
00063
00064 virtual ~CL_SoundBuffer_Session();
00065
00069
00070 public:
00072 int get_position() const;
00073
00075
00078 float get_position_relative() const;
00079
00081
00083 int get_length() const;
00084
00086 int get_frequency() const;
00087
00089
00091 float get_volume() const;
00092
00094
00096 float get_pan() const;
00097
00101 bool get_looping() const;
00102
00104 bool is_playing();
00105
00109
00110 public:
00112
00114 bool set_position(int new_pos);
00115
00117
00122 bool set_position_relative(float new_pos);
00123
00127 void set_frequency(int new_freq);
00128
00130
00134 void set_volume(float new_volume);
00135
00137
00142 void set_pan(float new_pan);
00143
00145 void play();
00146
00148 void stop();
00149
00153 void set_looping(bool loop);
00154
00158 void add_filter(CL_SoundFilter &filter);
00159
00161 void remove_filter(CL_SoundFilter &filter);
00162
00166
00167 private:
00168 CL_SoundBuffer_Session(CL_SoundBuffer &soundbuffer, bool looping, CL_SoundOutput &output);
00169 CL_SharedPtr<CL_SoundBuffer_Session_Impl> impl;
00170
00171 friend class CL_SoundBuffer;
00172 friend class CL_SoundOutput_Impl;
00174 };
00175