Files
Work/avifile/AVIBMP.CPP
2024-08-07 09:12:07 -04:00

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;
}