113 lines
2.3 KiB
C++
113 lines
2.3 KiB
C++
#ifndef _SAMPLE_PURESAMPLE_HPP_
|
|
#define _SAMPLE_PURESAMPLE_HPP_
|
|
#ifndef _COMMON_TYPES_HPP_
|
|
#include <common/types.hpp>
|
|
#endif
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_MEMFILE_HPP_
|
|
#include <common/memfile.hpp>
|
|
#endif
|
|
#ifndef _COMMON_OPENFILE_HPP_
|
|
#include <common/openfile.hpp>
|
|
#endif
|
|
#ifndef _COMMON_ARRAY_HPP_
|
|
#include <common/array.hpp>
|
|
#endif
|
|
|
|
// This object holds the sample data as bytes. It does not know anything about the internal
|
|
// makeup of the sample (ie) does not know how many bits per sample
|
|
|
|
class PureSample
|
|
{
|
|
public:
|
|
PureSample(void);
|
|
PureSample(const PureSample &somePureSample);
|
|
virtual ~PureSample();
|
|
PureSample &operator=(const PureSample &somePureSample);
|
|
PureSample &operator+=(const PureSample &somePureSample);
|
|
DWORD numSamples(void)const;
|
|
void numSamples(DWORD numSamples);
|
|
BYTE *sampleData(void);
|
|
bool isOkay(void)const;
|
|
bool write(MemFile &memFile)const;
|
|
bool read(FileHandle &handle);
|
|
String toString(void)const;
|
|
private:
|
|
void copySampleData(BYTE *lpDstSample,BYTE *lpSrcSample,DWORD numBytes);
|
|
DWORD mNumSamples;
|
|
Array<BYTE> mSampleData;
|
|
};
|
|
|
|
inline
|
|
PureSample::PureSample(void)
|
|
: mNumSamples(0)
|
|
{
|
|
}
|
|
|
|
inline
|
|
PureSample::PureSample(const PureSample &somePureSample)
|
|
{
|
|
*this=somePureSample;
|
|
}
|
|
|
|
inline
|
|
PureSample::~PureSample()
|
|
{
|
|
}
|
|
|
|
inline
|
|
DWORD PureSample::numSamples(void)const
|
|
{
|
|
return mNumSamples;
|
|
}
|
|
|
|
inline
|
|
void PureSample::numSamples(DWORD numSamples)
|
|
{
|
|
mNumSamples=numSamples;
|
|
mSampleData.size(mNumSamples);
|
|
}
|
|
|
|
inline
|
|
BYTE *PureSample::sampleData(void)
|
|
{
|
|
if(!isOkay())return (BYTE*)0;
|
|
return &mSampleData[0];
|
|
}
|
|
|
|
inline
|
|
bool PureSample::write(MemFile &memFile)const
|
|
{
|
|
if(!isOkay())return false;
|
|
if(!memFile.write((char*)&((GlobalData<BYTE>&)mSampleData)[0],mNumSamples))return false;
|
|
return true;
|
|
}
|
|
|
|
inline
|
|
bool PureSample::read(FileHandle &handle)
|
|
{
|
|
if(!isOkay())return false;
|
|
if(!handle.read(&mSampleData[0],mNumSamples))return false;
|
|
return true;
|
|
}
|
|
|
|
inline
|
|
bool PureSample::isOkay(void)const
|
|
{
|
|
return mSampleData.size()?true:false;
|
|
}
|
|
|
|
inline
|
|
String PureSample::toString(void)const
|
|
{
|
|
String strPureSample;
|
|
strPureSample+="<PURESAMPLE>";
|
|
strPureSample+=String(" NumSamples=")+String().fromInt(mNumSamples).quotes();
|
|
strPureSample+=String(" SampleData=")+String().fromInt(mSampleData.size()).quotes();
|
|
strPureSample+=String("<PURESAMPLE/>");
|
|
return strPureSample;
|
|
}
|
|
#endif
|