39 lines
949 B
C++
39 lines
949 B
C++
#include <avifile/avibmp.hpp>
|
|
|
|
bool AVIBitmap::read(File &inFile)
|
|
{
|
|
DWORD sizeHeader;
|
|
|
|
inFile.read(sizeHeader);
|
|
// inFile+=4;
|
|
|
|
inFile.read((char*)((BITMAPINFO*)*this),sizeof(BITMAPINFO)-sizeof(RGBQUAD));
|
|
if(BitmapInfo::TrueColor==bitCount())return false;
|
|
if(colorUsed())
|
|
{
|
|
rgbColors(colorUsed());
|
|
inFile.read((char*)((RGBQUAD*)*this),sizeof(RGBQUAD));
|
|
inFile.read((char*)(((RGBQUAD*)*this)+1),(colorUsed()-1)*sizeof(RGBQUAD));
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool AVIBitmap::write(File &outFile)
|
|
{
|
|
DWORD sizeHeader;
|
|
|
|
sizeHeader=sizeof(BITMAPINFOHEADER);
|
|
outFile.write(sizeHeader);
|
|
// outFile+=4;
|
|
|
|
outFile.write((char*)((BITMAPINFO*)*this),sizeof(BITMAPINFO)-sizeof(RGBQUAD));
|
|
if(BitmapInfo::TrueColor==bitCount())return false;
|
|
if(colorUsed())
|
|
{
|
|
rgbColors(colorUsed());
|
|
outFile.write((char*)((RGBQUAD*)*this),sizeof(RGBQUAD));
|
|
outFile.write((char*)(((RGBQUAD*)*this)+1),(colorUsed()-1)*sizeof(RGBQUAD));
|
|
}
|
|
return true;
|
|
}
|