📄 md_surface.h
字号:
//********************************************************************
// MD 引擎 图面 部件的定义
// Powered by @J--S Studio Johnhans 2002.9.8
//********************************************************************
#ifndef MD_SURFACE_H
#define MD_SURFACE_H
#ifdef MDENGINE_EXPORTS
#define MDENGINE_API __declspec(dllexport)
#else
#define MDENGINE_API __declspec(dllimport)
#endif
#include "MD_Engine.h"
class MDENGINE_API CMD_Surface
{
public:
CMD_Surface(void);
virtual ~CMD_Surface(void);
public:
static void SetActiveEngine(CMD_Engine *engine) { m_lpEngine=engine; }
void Free();
bool Create(int width, int height, DWORD dwtrans=COLORKEY_NO, DWORD dwCaps=DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY);
bool Create(TCHAR *filename, DWORD dwtrans=COLORKEY_NO, DWORD dwCaps=DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY);
bool Create(const BITMAPINFOHEADER &bmpinfohdr,RGBQUAD* BGRTable,const void *bitbuffer, DWORD dwtrans=COLORKEY_NO, DWORD dwCaps=DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY);
bool Create(const LPBYTE buffer,DWORD dwtrans=COLORKEY_NO,DWORD dwCaps=DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY);
SurfaceInfo* GetSurfaceInfo(void){ return &m_SurfaceInfo; }
LPRECT GetBltRect(void){ return &m_rcBlt; }
DWORD GetTransparentColor(void){ return m_dwTransparentColor; }
DWORD GetTransparentColorK(void){ return m_dwTransparentColor; }
LPDIRECTDRAWSURFACE7* GetDDSurface(void) { return &m_lpDDS; }
bool ScanSurfaceInfo(void);
void SetTransparentColor(DWORD color);
void SetBltRect(int left, int top, int right, int bottom);
void SetBltRect(LPRECT rc);
void FillColor(LPRECT rect, DWORD Color);
void FillColor(LPRECT rect, WORD R=0, WORD G=0, WORD B=0);
void DrawFast(CMD_Surface *pDest, BYTE dest, int x, int y, bool Trans=true);
void DrawScaling(CMD_Surface *pDest, BYTE dest, RECT dRect, bool Trans=true);
void DrawScaling(CMD_Surface *pDest, BYTE dest, int x, int y, int cx, int cy, bool Trans=true);
void DrawGray(CMD_Surface *pDest, BYTE dest, int x, int y, bool Trans=true);
void DrawAdditive(CMD_Surface *pDest, BYTE dest, int x, int y, bool Trans=true);
void DrawAlpha(CMD_Surface *pDest, BYTE dest, int iDestX, int iDestY, int iAlpha, bool trans=true);
void DrawAlphaMMX(CMD_Surface *pDest, BYTE dest, int iDestX, int iDestY, int iAlpha, bool trans=true);
void DrawAlphaFast(CMD_Surface *pDest, BYTE dest, int iDestX, int iDestY, bool trans=true);
void DrawAlphaFastMMX(CMD_Surface *pDest, BYTE dest, int iDestX, int iDestY, bool trans=true);
private:
LPDIRECTDRAWSURFACE7 m_lpDDS; // DIRECTDRAWSURFACE7对象
static CMD_Engine* m_lpEngine; // CMD_Engine实例指针
DWORD m_dwTransparentColor; // 本图面透明色
DWORD m_dwTransparentColorK; // 本图面透明色(内部像素格式)
RECT m_rcBlt; // 位操作区域
SurfaceInfo m_SurfaceInfo; // 图面信息
private:
DWORD DDColorMatch(COLORREF rgb); //颜色匹配
bool ClipRect(int &x, int &y, RECT &rc);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -