#ifndef _AVIFILE_INDEXCHUNK_HPP_ #define _AVIFILE_INDEXCHUNK_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #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 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 mIndex; }; inline IndexChunk::IndexChunk() : mLongsPerEntry(0), mIndexSubType(0), mEntriesInUse(0), mChunkID(0), mBaseOffset(0), mReserved(0) { } inline IndexChunk::~IndexChunk() { } inline DWORD IndexChunk::longsPerEntry(void)const { return mLongsPerEntry; } inline DWORD IndexChunk::indexSubType(void)const { return mIndexSubType; } inline DWORD IndexChunk::entriesInUse(void)const { return mEntriesInUse; } inline DWORD IndexChunk::chunkID(void)const { return mChunkID; } inline QUADWORD IndexChunk::baseOffset(void)const { return mBaseOffset; } inline bool IndexChunk::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