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 #include "soundbuffer_session.h"
00037
00038 class CL_ResourceManager;
00039 class CL_SoundOutput;
00040 class CL_SoundProvider;
00041 class CL_SoundBuffer_Session;
00042 class CL_SoundFilter;
00043 class CL_SoundBuffer_Impl;
00044 class CL_IODevice;
00045 class CL_VirtualDirectory;
00046
00053 class CL_API_SOUND CL_SoundBuffer
00054 {
00057
00058 public:
00060
00073 CL_SoundBuffer();
00074
00075 CL_SoundBuffer(
00076 const CL_String &res_id,
00077 CL_ResourceManager *manager);
00078
00079 CL_SoundBuffer(
00080 CL_SoundProvider *provider);
00081
00082 CL_SoundBuffer(
00083 const CL_String &fullname,
00084 bool streamed = false,
00085 const CL_String &format = cl_text(""));
00086
00087 CL_SoundBuffer(
00088 const CL_String &filename,
00089 bool streamed,
00090 const CL_VirtualDirectory &directory,
00091 const CL_String &type = cl_text(""));
00092
00093 CL_SoundBuffer(
00094 CL_IODevice &file,
00095 bool streamed,
00096 const CL_String &type);
00097
00101 CL_SoundBuffer(const CL_SoundBuffer ©);
00102
00103 virtual ~CL_SoundBuffer();
00104
00108
00109 public:
00111 CL_SoundProvider *get_provider() const;
00112
00114 float get_volume() const;
00115
00117 float get_pan() const;
00118
00122 bool is_null();
00123
00127
00128 public:
00129
00131
00134 void set_volume(float new_volume);
00135
00137
00141 void set_pan(float new_pan);
00142
00146 void add_filter(CL_SoundFilter &filter);
00147
00149 void remove_filter(CL_SoundFilter &filter);
00150
00156 CL_SoundBuffer_Session play(bool looping = false, CL_SoundOutput *output = 0);
00157
00163 CL_SoundBuffer_Session prepare(bool looping = false, CL_SoundOutput *output = 0);
00164
00168
00169 private:
00170 CL_SharedPtr<CL_SoundBuffer_Impl> impl;
00172 };
00173