DIB.H
上传用户:alisonmail
上传日期:2013-02-28
资源大小:500k
文件大小:2k
源码类别:

图片显示

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Copyright (C) 1998 by Jorge Lodos
  3. // All rights reserved
  4. //
  5. // Distribute and use freely, except:
  6. // 1. Don't alter or remove this notice.
  7. // 2. Mark the changes you made
  8. //
  9. // Send bug reports, bug fixes, enhancements, requests, etc. to:
  10. //    lodos@cigb.edu.cu
  11. /////////////////////////////////////////////////////////////////////////////
  12. // dib.h
  13. #ifndef _INC_DIB
  14. #define _INC_DIB
  15. /* DIB constants */
  16. #define PALVERSION   0x300
  17. /* Dib Header Marker - used in writing DIBs to files */
  18. #define DIB_HEADER_MARKER   ((WORD) ('M' << 8) | 'B')
  19. /* DIB Macros*/
  20. #define RECTWIDTH(lpRect)     ((lpRect)->right - (lpRect)->left)
  21. #define RECTHEIGHT(lpRect)    ((lpRect)->bottom - (lpRect)->top)
  22. // WIDTHBYTES performs DWORD-aligning of DIB scanlines.  The "bits"
  23. // parameter is the bit count for the scanline (biWidth * biBitCount),
  24. // and this macro returns the number of DWORD-aligned bytes needed
  25. // to hold those bits.
  26. #define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4)
  27. class CDib : public CObject
  28. {
  29. DECLARE_DYNAMIC(CDib)
  30. // Constructors
  31. public:
  32. CDib();
  33. // Attributes
  34. protected:
  35. LPBYTE m_pBits;
  36. LPBITMAPINFO m_pBMI;
  37. public:
  38. CPalette* m_pPalette;
  39. public:
  40. DWORD Width()     const;
  41. DWORD Height()    const;
  42. WORD  NumColors() const;
  43. BOOL  IsValid()   const { return (m_pBMI != NULL); }
  44. // Operations
  45. public:
  46. BOOL  Paint(HDC, LPRECT, LPRECT) const;
  47. HGLOBAL CopyToHandle()           const;
  48. DWORD Save(CFile& file)          const;
  49. DWORD Read(CFile& file);
  50. DWORD ReadFromHandle(HGLOBAL hGlobal);
  51. void Invalidate() { Free(); }
  52. virtual void Serialize(CArchive& ar);
  53. // Implementation
  54. public:
  55. virtual ~CDib();
  56. protected:
  57. BOOL  CreatePalette();
  58. WORD  PaletteSize() const;
  59. void Free();
  60. public:
  61. #ifdef _DEBUG
  62. virtual void Dump(CDumpContext& dc) const;
  63. #endif
  64. protected:
  65. CDib& operator = (CDib& dib);
  66. };
  67. #endif //!_INC_DIB