cdib.h
上传用户:zhaobiao
上传日期:2013-10-27
资源大小:92k
文件大小:2k
源码类别:

OpenCV

开发平台:

Visual C++

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