BMPSURF.H
上传用户:abcdshs
上传日期:2007-01-07
资源大小:1858k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

  1. // (C) Copyright 1996 by Anthony J. Carin.  All Rights Reserved.
  2. #ifndef BMPSURF_H
  3. #define BMPSURF_H
  4. #include "windowsx.h"
  5. #include "higharea.h"
  6. typedef unsigned int uint;
  7. typedef unsigned short ushort;
  8. typedef unsigned long ulong;
  9. typedef unsigned char uchar;
  10. // GL_EXT_paletted_texture
  11. class bmplist;
  12. class bmpsurf : public surfs
  13. {
  14. public:
  15. friend class bmplist;
  16.                         bmpsurf(CString& filename);
  17.                        ~bmpsurf();
  18.     void                draw();
  19.     void                ExemptFromIntersect();
  20.     void                OKToIntersect();
  21.     char                intersects(coordinate &a, coordinate &b);
  22.     coordinate&         intersectingpoint() { return m_intersectpoint; }
  23.     char                iswithin(coordinate& c) { if (m_exempt) return FALSE; else return surfs::iswithin(c); }
  24.     void                setto(coordinate& a, coordinate& b, coordinate& c, coordinate& d);
  25. virtual void            operator =(surfs& s);
  26. virtual void operator +=(coordinate& c);
  27. virtual char IsABmp() { return TRUE; }
  28. private:
  29.     LPBITMAPFILEHEADER  m_pBmFileHeader;
  30.     LPBITMAPINFO        m_pBmInfo;
  31.     LPBITMAPINFOHEADER  m_pBmInfoHeader;
  32.     RGBQUAD            *m_pRGBTable;
  33.     char               *m_pDibBits;
  34.     uint                m_numColors;
  35. float              *m_red;
  36. float              *m_blue;
  37. float              *m_green;
  38.     char                m_intersects;
  39.     char                m_exempt;
  40.     coordinate          m_intersectpoint;
  41.     coordinate          m_intersectfrom;
  42.     coordinate          m_intersectto;
  43.     DWORD               dibSize;
  44.     higharea           *m_higharea;
  45.     bmpsurf            *next;
  46.     bmpsurf            *prev;
  47.     void                calcintersect(coordinate &a, coordinate &b);
  48.     char                sameintersectpoints(coordinate &a, coordinate &b);
  49.     DWORD               GetDibSizeImage();
  50.     uint                GetDibWidth();
  51.     uint                GetDibHeight();
  52.     uint                GetDibNumColors();
  53.     LPBITMAPINFOHEADER  GetDibInfoHeaderPtr();
  54.     LPBITMAPINFO        GetDibInfoPtr();
  55.     LPRGBQUAD           GetDibRGBTablePtr();
  56.     char               *GetDibBitsPtr();
  57.     void                LoadBitmapFile(CString& filename);
  58.     void                CreateColorTables();
  59. };
  60. class bmplist
  61. {
  62. public:
  63. friend  class bmpsurf;
  64.                         bmplist() { m_First = m_Curr = 0; }
  65.                        ~bmplist() { Purge(); }
  66. bmpsurf                *First()   { m_Curr = m_First; return m_Curr; }
  67. bmpsurf                *Next()    { if (m_Curr) m_Curr = m_Curr->next; return m_Curr; }
  68. private:
  69. void                    Purge();
  70. bmpsurf                *m_First;
  71. bmpsurf                *m_Curr;
  72. };
  73. inline LPBITMAPINFOHEADER bmpsurf::GetDibInfoHeaderPtr()
  74. {
  75.     return m_pBmInfoHeader;
  76. }
  77. inline LPBITMAPINFO bmpsurf::GetDibInfoPtr()
  78. {
  79.     return m_pBmInfo;
  80. }
  81. inline LPRGBQUAD bmpsurf::GetDibRGBTablePtr()
  82. {
  83.     return m_pRGBTable;
  84. }
  85. inline char* bmpsurf::GetDibBitsPtr()
  86. {
  87.     return m_pDibBits;
  88. }
  89. inline uint bmpsurf::GetDibWidth()
  90. {
  91.     return (uint) m_pBmInfoHeader->biWidth;
  92. }
  93.         
  94. inline uint bmpsurf::GetDibHeight()
  95. {
  96.     return (uint) m_pBmInfoHeader->biHeight;
  97. }
  98.         
  99. inline char bmpsurf::sameintersectpoints(coordinate &a, coordinate &b)
  100. {
  101.     return (char) ((a == m_intersectfrom && b == m_intersectto) ||
  102.                    (a == m_intersectto   && b == m_intersectfrom));
  103. }
  104. #endif