SoundBuffer.cpp

00001 
00002 //
00003 // SFML - Simple and Fast Multimedia Library
00004 // Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
00005 //
00006 // This software is provided 'as-is', without any express or implied warranty.
00007 // In no event will the authors be held liable for any damages arising from the use of this software.
00008 //
00009 // Permission is granted to anyone to use this software for any purpose,
00010 // including commercial applications, and to alter it and redistribute it freely,
00011 // subject to the following restrictions:
00012 //
00013 // 1. The origin of this software must not be misrepresented;
00014 //    you must not claim that you wrote the original software.
00015 //    If you use this software in a product, an acknowledgment
00016 //    in the product documentation would be appreciated but is not required.
00017 //
00018 // 2. Altered source versions must be plainly marked as such,
00019 //    and must not be misrepresented as being the original software.
00020 //
00021 // 3. This notice may not be removed or altered from any source distribution.
00022 //
00024 
00026 // Headers
00028 #include <SFML/Audio/SoundBuffer.h>
00029 #include <SFML/Audio/SoundBuffer.hpp>
00030 #include <SFML/Internal.h>
00031 
00032 
00033 struct sfSoundBuffer
00034 {
00035     sf::SoundBuffer This;
00036 };
00037 
00038 
00042 sfSoundBuffer* sfSoundBuffer_CreateFromFile(const char* Filename)
00043 {
00044     sfSoundBuffer* Buffer = new sfSoundBuffer;
00045 
00046     if (!Buffer->This.LoadFromFile(Filename))
00047     {
00048         delete Buffer;
00049         Buffer = NULL;
00050     }
00051 
00052     return Buffer;
00053 }
00054 
00055 
00059 sfSoundBuffer* sfSoundBuffer_CreateFromMemory(const char* Data, size_t SizeInBytes)
00060 {
00061     sfSoundBuffer* Buffer = new sfSoundBuffer;
00062 
00063     if (!Buffer->This.LoadFromMemory(Data, SizeInBytes))
00064     {
00065         delete Buffer;
00066         Buffer = NULL;
00067     }
00068 
00069     return Buffer;
00070 }
00071 
00072 
00078 sfSoundBuffer* sfSoundBuffer_CreateFromSamples(const sfInt16* Samples, size_t SamplesCount, unsigned int ChannelsCount, unsigned int SampleRate)
00079 {
00080     sfSoundBuffer* Buffer = new sfSoundBuffer;
00081 
00082     if (!Buffer->This.LoadFromSamples(Samples, SamplesCount, ChannelsCount, SampleRate))
00083     {
00084         delete Buffer;
00085         Buffer = NULL;
00086     }
00087 
00088     return Buffer;
00089 }
00090 
00091 
00095 void sfSoundBuffer_Destroy(sfSoundBuffer* SoundBuffer)
00096 {
00097     delete SoundBuffer;
00098 }
00099 
00100 
00104 sfBool sfSoundBuffer_SaveToFile(sfSoundBuffer* SoundBuffer, const char* Filename)
00105 {
00106     CSFML_CALL_RETURN(SoundBuffer, SaveToFile(Filename), sfFalse)
00107 }
00108 
00109 
00113 const sfInt16* sfSoundBuffer_GetSamples(sfSoundBuffer* SoundBuffer)
00114 {
00115     CSFML_CALL_RETURN(SoundBuffer, GetSamples(), NULL)
00116 }
00117 
00118 
00122 size_t sfSoundBuffer_GetSamplesCount(sfSoundBuffer* SoundBuffer)
00123 {
00124     CSFML_CALL_RETURN(SoundBuffer, GetSamplesCount(), 0)
00125 }
00126 
00127 
00131 unsigned int sfSoundBuffer_GetSampleRate(sfSoundBuffer* SoundBuffer)
00132 {
00133     CSFML_CALL_RETURN(SoundBuffer, GetSampleRate(), 0)
00134 }
00135 
00136 
00140 unsigned int sfSoundBuffer_GetChannelsCount(sfSoundBuffer* SoundBuffer)
00141 {
00142     CSFML_CALL_RETURN(SoundBuffer, GetChannelsCount(), 0)
00143 }
00144 
00145 
00149 float sfSoundBuffer_GetDuration(sfSoundBuffer* SoundBuffer)
00150 {
00151     CSFML_CALL_RETURN(SoundBuffer, GetDuration(), 0.f)
00152 }