1 #include "mof/sound/WaveFile.hpp"
2 #include "mof/ConsoleIO.hpp"
4 mof::WaveFile::WaveFile(void)
6 m_impl = new mof::CWaveFile();
9 mof::WaveFile::~WaveFile(void)
16 bool mof::WaveFile::open(const mof::tstring& filename){
18 if(FAILED(m_impl->open((LPTSTR)filename.c_str() , &format , WAVEFILE_READ)))return false;
24 bool mof::WaveFile::close(){
26 if(FAILED(m_impl->close()))return false;
33 long mof::WaveFile::read( BYTE* pBuffer1, long bufferSize1 , BYTE* pBuffer2 , long bufferSize2 ){
36 DWORD actualReadSize1 = 0;
38 for(offset = 0 ; offset < bufferSize1 ; offset += actualReadSize1){
39 if(FAILED(m_impl->read(pBuffer1 + offset , bufferSize1 - offset , &actualReadSize1)))return -1;
40 else if(actualReadSize1 == 0)break;
41 else if(bufferSize1 - offset != actualReadSize1)resetFile();
45 if(bufferSize2 < 0)return actualReadSize1;
47 DWORD actualReadSize2 = 0;
48 for(offset = 0 ; offset < bufferSize2 ; offset += actualReadSize2){
49 if(FAILED(m_impl->read(pBuffer2 + offset , bufferSize2 - offset, &actualReadSize2)))return -1;
50 else if(actualReadSize2 == 0)break;
51 else if(bufferSize2 - offset != actualReadSize2)resetFile();
54 return actualReadSize1 + actualReadSize2;
59 long mof::WaveFile::getSize(){
60 return m_impl->getSize();
65 bool mof::WaveFile::resetFile(){
66 if(FAILED(m_impl->resetFile()))return false;
71 WAVEFORMATEX* mof::WaveFile::getFormat(){
72 return m_impl->getFormat();