Initial
This commit is contained in:
121
sample/FmtChnkADPCM.hpp
Normal file
121
sample/FmtChnkADPCM.hpp
Normal file
@@ -0,0 +1,121 @@
|
||||
#ifndef _SAMPLE_FMTCHNKADPCM_HPP_
|
||||
#define _SAMPLE_FMTCHNKADPCM_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_MMREG_HPP_
|
||||
#include <common/mmreg.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_ARRAY_HPP_
|
||||
#include <common/array.hpp>
|
||||
#endif
|
||||
|
||||
class FormatChunkADPCM : public Array<ADPCMCOEFSET>
|
||||
{
|
||||
public:
|
||||
FormatChunkADPCM();
|
||||
virtual ~FormatChunkADPCM();
|
||||
bool write(MemFile &memFile)const;
|
||||
bool read(FileHandle &handle);
|
||||
WORD extraSize(void)const;
|
||||
void extraSize(WORD extraSize);
|
||||
WORD samplesPerBlock(void)const;
|
||||
void samplesPerBlock(WORD samplesPerBlock);
|
||||
WORD numCoef(void)const;
|
||||
void numCoef(WORD numCoef);
|
||||
String toString(void)const;
|
||||
private:
|
||||
WORD mExtraSize;
|
||||
WORD mSamplesPerBlock;
|
||||
};
|
||||
|
||||
inline
|
||||
FormatChunkADPCM::FormatChunkADPCM()
|
||||
: mExtraSize(0), mSamplesPerBlock(0)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
FormatChunkADPCM::~FormatChunkADPCM()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
bool FormatChunkADPCM::write(MemFile &memFile)const
|
||||
{
|
||||
WORD numCoefs;
|
||||
if(!memFile.write((char*)&mExtraSize,sizeof(WORD)))return false;
|
||||
if(!memFile.write((char*)&mSamplesPerBlock,sizeof(WORD)))return false;
|
||||
numCoefs=size();
|
||||
if(!memFile.write((char*)&numCoefs,sizeof(WORD)))return false;
|
||||
if(!memFile.write((char*)&(((Array<ADPCMCOEFSET>&)*this).operator[](0)),sizeBytes()))return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
inline
|
||||
bool FormatChunkADPCM::read(FileHandle &handle)
|
||||
{
|
||||
WORD numCoef;
|
||||
|
||||
if(!handle.read((BYTE*)&mExtraSize,sizeof(WORD)))return false;
|
||||
if(!handle.read((BYTE*)&mSamplesPerBlock,sizeof(WORD)))return false;
|
||||
if(!handle.read((BYTE*)&numCoef,sizeof(WORD)))return false;
|
||||
size(numCoef);
|
||||
if(!handle.read((BYTE*)&(((Array<ADPCMCOEFSET>&)*this).operator[](0)),sizeBytes()))return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD FormatChunkADPCM::extraSize(void)const
|
||||
{
|
||||
return mExtraSize;
|
||||
}
|
||||
|
||||
inline
|
||||
void FormatChunkADPCM::extraSize(WORD extraSize)
|
||||
{
|
||||
mExtraSize=extraSize;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD FormatChunkADPCM::samplesPerBlock(void)const
|
||||
{
|
||||
return mSamplesPerBlock;
|
||||
}
|
||||
|
||||
inline
|
||||
void FormatChunkADPCM::samplesPerBlock(WORD samplesPerBlock)
|
||||
{
|
||||
mSamplesPerBlock=samplesPerBlock;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD FormatChunkADPCM::numCoef(void)const
|
||||
{
|
||||
return size();
|
||||
}
|
||||
|
||||
inline
|
||||
void FormatChunkADPCM::numCoef(WORD numCoef)
|
||||
{
|
||||
size(numCoef);
|
||||
}
|
||||
|
||||
inline
|
||||
String FormatChunkADPCM::toString(void)const
|
||||
{
|
||||
String strChunk="<FORMATCHUNKADPCM>";
|
||||
strChunk+=String(" ExtraSize=")+String().fromInt(mExtraSize).quotes();
|
||||
strChunk+=String(" SamplesPerBlock=")+String().fromInt(mSamplesPerBlock).quotes();
|
||||
strChunk+=String(" NumCoefs=")+String().fromInt(size()).quotes();
|
||||
for(int index=0;index<size();index++)
|
||||
{
|
||||
strChunk+="<COEF>";
|
||||
strChunk+=String(" Coef1=")+String().fromInt(((Array<ADPCMCOEFSET>&)*this).operator[](index).iCoef1).quotes();
|
||||
strChunk+=String(" Coef2=")+String().fromInt(((Array<ADPCMCOEFSET>&)*this).operator[](index).iCoef2).quotes();
|
||||
strChunk+="</COEF>";
|
||||
}
|
||||
strChunk+="</FORMATCHUNKADPCM>";
|
||||
return strChunk;
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user