dibsect.h
上传用户:lbr_007
上传日期:2019-05-31
资源大小:282k
文件大小:3k
源码类别:

传真(Fax)编程

开发平台:

Visual C++

  1. #ifndef __DIB_SECTION_CLASS_NCLUDE_H__
  2. #define __DIB_SECTION_CLASS_NCLUDE_H__
  3. class GEORef {
  4. void initGeoRef(void)
  5. {
  6. }
  7. public:
  8. enum Projections {
  9. UnknownPrj,
  10. UTM
  11. };
  12. enum Ellipsoids { // some common ellipsoids
  13. UnknownEllipsoid,
  14. Clarke1866,
  15. GRS80,
  16. IAU76,
  17. AIRY,
  18. WGS72,
  19. WGS84,
  20. Sphere
  21. };
  22. double m_tieX;
  23. double m_tieY;
  24. double m_resX;
  25. double m_resY;
  26. UINT32 m_rows;
  27. UINT32 m_cols;
  28. INT32 m_zone;
  29. Projections m_proj;
  30. Ellipsoids m_ellipse;
  31. GEORef(void)
  32. {
  33. m_tieX = m_tieY = m_resX = m_resY = 0.0;
  34. m_zone = 0;
  35. m_proj = UnknownPrj;
  36. m_ellipse = UnknownEllipsoid;
  37. }
  38. GEORef(const GEORef& gr)
  39. {
  40. m_tieX = m_tieY = m_resX = m_resY = 0.0;
  41. m_zone = 0;
  42. m_proj = UnknownPrj;
  43. m_ellipse = UnknownEllipsoid;
  44. Copy(gr);
  45. }
  46. ~GEORef(void){}
  47. void Copy(const GEORef& gr)
  48. {
  49. m_tieX = gr.m_tieX;
  50. m_tieY = gr.m_tieY;
  51. m_resX = gr.m_resX;
  52. m_resY = gr.m_resY;
  53. m_zone = gr.m_zone;
  54. m_proj = gr.m_proj;
  55. m_ellipse = gr.m_ellipse;
  56. m_rows = gr.m_rows;
  57. m_cols = gr.m_cols;
  58. }
  59. GEORef& operator = (const GEORef& gr)
  60. {
  61. Copy(gr);
  62. return *this;
  63. }
  64. };
  65. //
  66. // DIBSection -
  67. //
  68. // Encapsulates a DIB section and a DC.
  69. //
  70. class DIBSection
  71. {
  72. void InitObject(void);
  73. protected:
  74. HBITMAP m_hbmp;
  75. HBITMAP m_hbmOld;
  76. void* m_pBits;
  77. CSize m_size;
  78. CDC* m_pdc;
  79. int m_total_width;
  80. BITMAPINFOHEADER m_bih;
  81. unsigned long m_bitcount;
  82. bool m_geoFlag;
  83. GEORef m_geoRef;
  84. public:
  85. DIBSection();
  86. DIBSection(const DIBSection& dib);
  87. virtual ~DIBSection();
  88. void Copy(const DIBSection& dib);
  89. DIBSection& operator=(const DIBSection& dib);
  90. void Close(void);
  91. int IsCreated(void)const{ return (m_pBits?1:0);}
  92.   // Create a DIBSection
  93. void Create(int cx, int cy, int nbits );
  94.   // Draw method
  95. void Draw(CDC* pdcDest, int x, int y);
  96.   // Resize method
  97. void ResizeImage(DIBSection& dst_dib, int w, int h);
  98.   // patblt method
  99. void PatBlt(DWORD pattern);
  100. CDC* GetDC() {return m_pdc;}
  101. HBITMAP GetHandle() {return m_hbmp;}
  102. unsigned long Width(void)const{ return m_size.cx;}
  103. unsigned long Height(void)const{ return m_size.cy;}
  104. unsigned long GetTotalWidth(void)const{ return m_total_width;}
  105. void * GetBits(void){ return m_pBits;}
  106. void * GetConstBits(void)const{ return m_pBits;}
  107. BITMAPINFOHEADER& GetBIH(void){ return m_bih;}
  108. unsigned long GetBitCount(void)const{ return m_bitcount;}
  109. void SetPixel(UINT32 x, UINT32 y, COLORREF cr);
  110. void GetPixel(UINT32 x, UINT32 y, COLORREF& cr);
  111. void HistogramEqualization(DIBSection& dib);
  112. void Greyscale(DIBSection& dib);
  113. void Lighten(INT32 amt);
  114. bool IsGeoImage(void)const{ return m_geoFlag;}
  115. void SetGeoReference(GEORef& r){ m_geoRef = r; m_geoFlag = true;}
  116. GEORef& GetGeoReference(void){ return m_geoRef;}
  117. GEORef GetConstGeoReference(void)const{ return m_geoRef;}
  118. };
  119. #endif