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