⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmpsurf.h

📁 一个三维打斗游戏
💻 H
字号:
// (C) Copyright 1996 by Anthony J. Carin.  All Rights Reserved.
#ifndef BMPSURF_H
#define BMPSURF_H

#include "windowsx.h"
#include "higharea.h"

typedef unsigned int uint;
typedef unsigned short ushort;
typedef unsigned long ulong;
typedef unsigned char uchar;

// GL_EXT_paletted_texture

class bmplist;
class bmpsurf : public surfs
{
public:
friend class bmplist;
                        bmpsurf(CString& filename);
                       ~bmpsurf();

    void                draw();
    void                ExemptFromIntersect();
    void                OKToIntersect();
    char                intersects(coordinate &a, coordinate &b);
    coordinate&         intersectingpoint() { return m_intersectpoint; }
    char                iswithin(coordinate& c) { if (m_exempt) return FALSE; else return surfs::iswithin(c); }
    void                setto(coordinate& a, coordinate& b, coordinate& c, coordinate& d);
virtual void            operator =(surfs& s);
virtual void operator +=(coordinate& c);
virtual char IsABmp() { return TRUE; }

private:

    LPBITMAPFILEHEADER  m_pBmFileHeader;
    LPBITMAPINFO        m_pBmInfo;
    LPBITMAPINFOHEADER  m_pBmInfoHeader;
    RGBQUAD            *m_pRGBTable;
    char               *m_pDibBits;
    uint                m_numColors;
	float              *m_red;
	float              *m_blue;
	float              *m_green;
    char                m_intersects;
    char                m_exempt;
    coordinate          m_intersectpoint;
    coordinate          m_intersectfrom;
    coordinate          m_intersectto;
    DWORD               dibSize;
    higharea           *m_higharea;
    bmpsurf            *next;
    bmpsurf            *prev;
    void                calcintersect(coordinate &a, coordinate &b);
    char                sameintersectpoints(coordinate &a, coordinate &b);
    DWORD               GetDibSizeImage();
    uint                GetDibWidth();
    uint                GetDibHeight();
    uint                GetDibNumColors();
    LPBITMAPINFOHEADER  GetDibInfoHeaderPtr();
    LPBITMAPINFO        GetDibInfoPtr();
    LPRGBQUAD           GetDibRGBTablePtr();
    char               *GetDibBitsPtr();
    void                LoadBitmapFile(CString& filename);
    void                CreateColorTables();
};

class bmplist
{
public:
friend  class bmpsurf;
                        bmplist() { m_First = m_Curr = 0; }
                       ~bmplist() { Purge(); }
bmpsurf                *First()   { m_Curr = m_First; return m_Curr; }
bmpsurf                *Next()    { if (m_Curr) m_Curr = m_Curr->next; return m_Curr; }

private:

void                    Purge();
bmpsurf                *m_First;
bmpsurf                *m_Curr;
};

inline LPBITMAPINFOHEADER bmpsurf::GetDibInfoHeaderPtr()
{
    return m_pBmInfoHeader;
}

inline LPBITMAPINFO bmpsurf::GetDibInfoPtr()
{
    return m_pBmInfo;
}

inline LPRGBQUAD bmpsurf::GetDibRGBTablePtr()
{
    return m_pRGBTable;
}

inline char* bmpsurf::GetDibBitsPtr()
{
    return m_pDibBits;
}

inline uint bmpsurf::GetDibWidth()
{
    return (uint) m_pBmInfoHeader->biWidth;
}
        
inline uint bmpsurf::GetDibHeight()
{
    return (uint) m_pBmInfoHeader->biHeight;
}
        
inline char bmpsurf::sameintersectpoints(coordinate &a, coordinate &b)
{
    return (char) ((a == m_intersectfrom && b == m_intersectto) ||
                   (a == m_intersectto   && b == m_intersectfrom));
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -