Initial
This commit is contained in:
134
avifile/IndexChunk.hpp
Normal file
134
avifile/IndexChunk.hpp
Normal file
@@ -0,0 +1,134 @@
|
||||
#ifndef _AVIFILE_INDEXCHUNK_HPP_
|
||||
#define _AVIFILE_INDEXCHUNK_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
|
||||
typedef WORD QUADWORD[4];
|
||||
|
||||
class Index
|
||||
{
|
||||
public:
|
||||
typedef enum IndexType{Type1=2,Type2=3};
|
||||
typedef enum IndexItem{IndexOffset,IndexSize,IndexOffset2};
|
||||
Index();
|
||||
virtual ~Index();
|
||||
DWORD getItem(IndexItem index)const;
|
||||
void setItem(IndexItem index,DWORD value);
|
||||
IndexType getType(void)const;
|
||||
void setType(IndexType type);
|
||||
private:
|
||||
Array<DWORD> mIndex;
|
||||
};
|
||||
|
||||
Index::Index()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
Index::~Index()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD Index::getItem(IndexItem index)
|
||||
{
|
||||
return mIndex[index];
|
||||
}
|
||||
|
||||
inline
|
||||
void Index::setItem(IndexItem index,DWORD value)
|
||||
{
|
||||
mIndex[index]=value;
|
||||
}
|
||||
|
||||
inline
|
||||
Index::IndexType Index::getType(void)const
|
||||
{
|
||||
return (IndexType)mIndex.size();
|
||||
}
|
||||
|
||||
inline
|
||||
void Index::setType(IndexType type)
|
||||
{
|
||||
mIndex.size((int)type);
|
||||
}
|
||||
|
||||
|
||||
// *********************************************************************************************
|
||||
|
||||
class IndexChunk
|
||||
{
|
||||
public:
|
||||
IndexChunk();
|
||||
virtual ~IndexChunk();
|
||||
DWORD longsPerEntry(void)const;
|
||||
DWORD indexSubType(void)const;
|
||||
DWORD entriesInUse(void)const;
|
||||
DWORD chunkID(void)const;
|
||||
QUADWORD baseOffset(void)const;
|
||||
bool operator<<(PureViewOfFile &pureView);
|
||||
private:
|
||||
WORD mLongsPerEntry;
|
||||
BYTE mIndexSubType;
|
||||
DWORD mEntriesInUse;
|
||||
DWORD mChunkID;
|
||||
QUADWORD mBaseOffset;
|
||||
DWORD mReserved;
|
||||
Array<Index> mIndex;
|
||||
};
|
||||
|
||||
inline
|
||||
IndexChunk<T>::IndexChunk()
|
||||
: mLongsPerEntry(0), mIndexSubType(0), mEntriesInUse(0), mChunkID(0), mBaseOffset(0), mReserved(0)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
IndexChunk<T>::~IndexChunk()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD IndexChunk<T>::longsPerEntry(void)const
|
||||
{
|
||||
return mLongsPerEntry;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD IndexChunk<T>::indexSubType(void)const
|
||||
{
|
||||
return mIndexSubType;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD IndexChunk<T>::entriesInUse(void)const
|
||||
{
|
||||
return mEntriesInUse;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD IndexChunk<T>::chunkID(void)const
|
||||
{
|
||||
return mChunkID;
|
||||
}
|
||||
|
||||
inline
|
||||
QUADWORD IndexChunk<T>::baseOffset(void)const
|
||||
{
|
||||
return mBaseOffset;
|
||||
}
|
||||
|
||||
inline
|
||||
bool IndexChunk<T>::operator<<(PureViewOfFile &pureView)
|
||||
{
|
||||
pureView.read(mLongsPerEntry);
|
||||
pureView.read(mIndexSubType);
|
||||
pureView.read(mEntriesInUse);
|
||||
pureView.read(mChunkID);
|
||||
pureView.read((char*)&mBaseOffset,sizeof(mBaseOffset));
|
||||
pureView.read(mReserved);
|
||||
mIndex.size();
|
||||
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user