dib.h
上传用户:biuytresa
上传日期:2007-12-07
资源大小:721k
文件大小:2k
源码类别:

DNA

开发平台:

Visual C++

  1. // dib.h declaration for CDib class
  2. #ifndef _CDIB_H_
  3. #define _CDIB_H_
  4. //   - This helper class was borrowed and modifed from
  5. //     David Kruglinski's book Inside Visual C++.
  6. class CDib : public CObject
  7. {
  8. enum Alloc {noAlloc, crtAlloc, heapAlloc};
  9. DECLARE_SERIAL(CDib)
  10. public:
  11. LPVOID m_lpvColorTable;
  12. HBITMAP m_hBitmap;
  13. LPBYTE m_lpImage;  // starting address of DIB bits
  14. LPBITMAPINFOHEADER m_lpBMIH; //  buffer containing the BITMAPINFOHEADER
  15. private:
  16. HGLOBAL m_hGlobal; // For external windows we need to free;
  17.                    //  could be allocated by this class or allocated externally
  18. Alloc m_nBmihAlloc;
  19. Alloc m_nImageAlloc;
  20. DWORD m_dwSizeImage; // of bits -- not BITMAPINFOHEADER or BITMAPFILEHEADER
  21. int m_nColorTableEntries;
  22. HANDLE m_hFile;
  23. HANDLE m_hMap;
  24. LPVOID m_lpvFile;
  25. HPALETTE m_hPalette;
  26. public:
  27. CDib();
  28. CDib(CSize size, int nBitCount); // builds BITMAPINFOHEADER
  29. ~CDib();
  30. int GetSizeImage() {return m_dwSizeImage;}
  31. int GetSizeHeader()
  32. {return sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries;}
  33. CSize GetDimensions();
  34. BOOL AttachMapFile(const char* strPathname, BOOL bShare = FALSE);
  35. BOOL CopyToMapFile(const char* strPathname);
  36. BOOL AttachMemory(LPVOID lpvMem, BOOL bMustDelete = FALSE, HGLOBAL hGlobal = NULL);
  37. BOOL Draw(CDC* pDC, CPoint origin, CSize size);  // until we implemnt CreateDibSection
  38. HBITMAP CreateSection(CDC* pDC = NULL);
  39. UINT UsePalette(CDC* pDC, BOOL bBackground = FALSE);
  40. BOOL MakePalette();
  41. BOOL SetSystemPalette(CDC* pDC);
  42. BOOL Compress(CDC* pDC, BOOL bCompress = TRUE); // FALSE means decompress
  43. HBITMAP CreateBitmap(CDC* pDC);
  44. BOOL Read(CFile* pFile);
  45. BOOL ReadSection(CFile* pFile, CDC* pDC = NULL);
  46. BOOL Write(CFile* pFile);
  47. void Serialize(CArchive& ar);
  48. void Empty();
  49. private:
  50. void DetachMapFile();
  51. void ComputePaletteSize(int nBitCount);
  52. void ComputeMetrics();
  53. };
  54. #endif // _CDIB_H_