00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_SOUNDBUFFER_HPP
00026 #define SFML_SOUNDBUFFER_HPP
00027
00029
00031 #include <SFML/Config.hpp>
00032 #include <SFML/Audio/AudioResource.hpp>
00033 #include <string>
00034 #include <vector>
00035
00036
00037 namespace sf
00038 {
00043 class SFML_API SoundBuffer : public AudioResource
00044 {
00045 public :
00046
00051 SoundBuffer();
00052
00059 SoundBuffer(const SoundBuffer& Copy);
00060
00065 ~SoundBuffer();
00066
00075 bool LoadFromFile(const std::string& Filename);
00076
00086 bool LoadFromMemory(const char* Data, std::size_t SizeInBytes);
00087
00100 bool LoadFromSamples(const Int16* Samples, std::size_t SamplesCount, unsigned int ChannelsCount, unsigned int SampleRate);
00101
00110 bool SaveToFile(const std::string& Filename) const;
00111
00118 const Int16* GetSamples() const;
00119
00126 std::size_t GetSamplesCount() const;
00127
00134 unsigned int GetSampleRate() const;
00135
00142 unsigned int GetChannelsCount() const;
00143
00150 float GetDuration() const;
00151
00160 SoundBuffer& operator =(const SoundBuffer& Other);
00161
00162 private :
00163
00164 friend class Sound;
00165
00175 bool Update(unsigned int ChannelsCount, unsigned int SampleRate);
00176
00178
00180 unsigned int myBuffer;
00181 std::vector<Int16> mySamples;
00182 float myDuration;
00183 };
00184
00185 }
00186
00187
00188 #endif // SFML_SOUNDBUFFER_HPP