// member functions void CSplashContainer::ConstructL(const TRect &aRect) { iBitmap = new(ELeave)CFbsBitmap(); CreateWindowL(); SetRect(aRect); SetExtentToWholeScreen(); TFileName bitmapFile(KDrawBitmapPath); User::LeaveIfError(CompleteWithAppPath(bitmapFile)); iLogoBitmap = new(ELeave)CFbsBitmap(); User::LeaveIfError(iLogoBitmap->Load(bitmapFile, EMbmMauruSplash)); ActivateL(); }
bool CDXGraph::SnapshotBitmap(const char * outFile) { if (mBasicVideo) { long bitmapSize = 0; if (SUCCEEDED(mBasicVideo->GetCurrentImage(&bitmapSize, 0))) { bool pass = false; unsigned char * buffer = new unsigned char[bitmapSize]; if (SUCCEEDED(mBasicVideo->GetCurrentImage(&bitmapSize, (long *)buffer))) { BITMAPFILEHEADER hdr; LPBITMAPINFOHEADER lpbi; lpbi = (LPBITMAPINFOHEADER)buffer; int nColors = 1 << lpbi->biBitCount; if (nColors > 256) nColors = 0; hdr.bfType = ((WORD) ('M' << 8) | 'B'); //always is "BM" hdr.bfSize = bitmapSize + sizeof( hdr ); hdr.bfReserved1 = 0; hdr.bfReserved2 = 0; hdr.bfOffBits = (DWORD) (sizeof(BITMAPFILEHEADER) + lpbi->biSize + nColors * sizeof(RGBQUAD)); CFile bitmapFile(outFile, CFile::modeReadWrite | CFile::modeCreate | CFile::typeBinary); bitmapFile.Write(&hdr, sizeof(BITMAPFILEHEADER)); bitmapFile.Write(buffer, bitmapSize); bitmapFile.Close(); pass = true; } delete [] buffer; return pass; } } return false; }