Go to the documentation of this file.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
00059 virtual ~CL_SoundBuffer_Session();
00060
00064
00065 public:
00067 bool is_null() const { return !impl; }
00068
00070 void throw_if_null() const;
00071
00073 int get_position() const;
00074
00080 float get_position_relative() const;
00081
00086 int get_length() const;
00087
00089 int get_frequency() const;
00090
00095 float get_volume() const;
00096
00101 float get_pan() const;
00102
00106 bool get_looping() const;
00107
00109 bool is_playing();
00110
00114
00115 public:
00120 bool set_position(int new_pos);
00121
00130 bool set_position_relative(float new_pos);
00131
00137 bool set_end_position(int pos);
00138
00142 void set_frequency(int new_freq);
00143
00151 void set_volume(float new_volume);
00152
00161 void set_pan(float new_pan);
00162
00164 void play();
00165
00167 void stop();
00168
00172 void set_looping(bool loop);
00173
00177 void add_filter(CL_SoundFilter &filter);
00178
00180 void remove_filter(CL_SoundFilter &filter);
00181
00185
00186 private:
00187 CL_SoundBuffer_Session(CL_SoundBuffer &soundbuffer, bool looping, CL_SoundOutput &output);
00188 CL_SharedPtr<CL_SoundBuffer_Session_Impl> impl;
00189
00190 friend class CL_SoundBuffer;
00191 friend class CL_SoundOutput_Impl;
00193 };
00194