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

📄 md_surface.h

📁 我用MDEngine写的游戏
💻 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 + -