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

📄 pgestd.h

📁 使ppc屏幕变成黑白的程序
💻 H
字号:
#pragma once

#include <windows.h>


#include "gx.h"


#include <mmsystem.h>

extern "C"
{
#include "LuaInc/lauxlib.h"
#include "LuaInc/lua.h"
#include "LuaInc/lualib.h"
}

#include "lzo/lzo.h"

#define PGE_RESULT int									// PGE返回类型
#define PGEDisplayProperties GXDisplayProperties		// PGE屏幕信息

#define SRESULT \
	int iRet = PGE_FAIL; \

#define OKRESULT \
	iRet = PGE_OK; \

#define RET \
	return iRet; \

#define PGEFAILED(RESULT) \
		(RESULT == PGE_FAIL ? TRUE : FALSE) \

//#define fopen PGEFileOpen

// PGE翻译GX返回信息宏
#define GXRETURN(n) \
	if (n > 0) \
	{ \
		return PGE_OK; \
	} \
	else \
	{ \
		return PGE_FAIL; \
	} \

#define SAFE_DELETE(p) \
	if (p) \
	{ \
		delete (p); \
		(p) = NULL; \
	} \

#define SAFE_DELETE_ARY(p) \
	if (p) \
	{ \
	delete[] (p); \
	(p) = NULL; \
	} \

#define SAFE_RELEASE(p) \
	if (NULL != p) \
	{ \
		p->Release(); \
		p = NULL; \
	} \

#define COMP2VAL(v1, v2, sgn) \
	v1 sgn v2 ? v1 : v2; \

#define USE_LUA extern lua_State* L_stat;

#define OPEN_LUA \
	L_stat = lua_open(); \
	luaopen_base(L_stat); \
	luaopen_table(L_stat); \
	luaopen_io(L_stat); \
	luaopen_string(L_stat); \
	luaopen_math(L_stat); \

#define CLOSE_LUA lua_close(L_stat);

// 定义输出到lua的类的创建函数
#define DECLEAR_CREATE_CLASS(tClass)\
	static int new##tClass(lua_State *L) \


#define CREATE_CLASS(tClass)\
	static int new##tClass(lua_State *L) \
{ \
	tClass* pT = new tClass; \
	lua_pushnumber(L, (DWORD)pT); \
	return 1; \
} \

#define REGIST_CREATE(tName, tClass) \
	lua_register(L_stat, tName, new##tClass); \

// 定义输出到lua的类的删除函数
#define DECLEAR_DELETE_CLASS(tClass) \
	static int del##tClass(lua_State* L) \


#define DELETE_CLASS(tClass) \
	static int del##tClass(lua_State* L) \
{ \
	DWORD dwCl = (DWORD)lua_tonumber(L, 1); \
	if (dwCl) \
	delete ((tClass*)dwCl); \
	return 0; \
} \

#define REGIST_DELETE(tName, tClass) \
	lua_register(L_stat, tName, del##tClass); \

// 定义输出到lua的类的成员函数
#define DECLEAR_DEFINE_CLASS_FUNC(tClass, tFunc) \
	static int tClass##tFunc(lua_State* L) \


#define BEGIN_DEFINE_CLASS_FUNC(tClass, tFunc) \
	static int tClass##tFunc(lua_State* L) \
{ \

#define END_DEFINE_CLASS_FUNC \
}\


#define DECLEAR_REGIST_FUNC(tClass) \
	void regist##tClass() \


#define BEGIN_REGIST_FUNC(tClass) \
	void regist##tClass() \
	{ \

#define REGIST_FUNC(tName, tClass, tFunc) \
	lua_register(L_stat, (tName), tClass##tFunc); \

#define END_REGIST_FUNC \
	} \

#define DO_REGISTER_LUA_CLASS(tClass) \
	regist##tClass(); \



// 任意类型基数排序法函数宏
// pSrc 待排序序列
// SrcType 序列类型
// SortVal 按类型中的此成员值进行排序,可为空则用序列的值进行排序
// iCount 序列长度
// pBuf 排序用的缓存,需要与序列大小类型相同
// Sombl 类型分隔符号:"." 和 "->" 可为空
#define RadixSort(pSrc, SrcType, SortVal, iCount, pBuf, Sombl) \
{ \
	SrcType OffsetTemp; \
	DWORD dwOffset = ((DWORD)&(OffsetTemp##Sombl##SortVal) - (DWORD)&OffsetTemp); \
	DWORD dwBox[256]; \
	DWORD j = 0; \
	DWORD pos = 0 ; \
	DWORD temp = 0; \
	for(DWORD i=0; i<4; i++) \
	{ \
		memset(dwBox, 0, 256 * sizeof(DWORD)); \
		memcpy(pBuf, pSrc, iCount * sizeof(SrcType)); \
		for(j=0; j<iCount; j++) \
		{ \
			++dwBox[((*((DWORD*)((DWORD)(&pBuf[j])+dwOffset))) >> (8 * i)) & 0xFF]; \
		} \
		pos = 0; \
		for(j=0; j<256; j++) \
		{ \
			temp = dwBox[j]; \
			dwBox[j] = pos; \
			pos += temp; \
		} \
		for(j=0; j<iCount; j++) \
		{ \
			pSrc[dwBox[((*((DWORD*)((DWORD)(&pBuf[j])+dwOffset))) >> (8 * i)) & 0xFF]++] = pBuf[j]; \
		} \
	} \
} \

// PGE标准错误 
enum PGE_ERROR_MSG
{
	PGE_OK = 0x0777,
		PGE_FAIL
};

enum PGE_SCREEN_DIRECTION
{
	PGE_SCREEN_H = 0,	// 横屏
		PGE_SCREEN_V	// 竖屏
};
enum PGE_CLASS_ID
{
	PGE_UNDEFINE = -1,
		PGE_DEVICE,
		PGE_SURFACE,
		PGE_MAP,
		PGE_FONT,
		PGE_INPUT,
		PGE_SOUND,
		PGE_MUSIC,
		PGE_NET,
		PGE_APP,
		PGE_VKBD,
		PGE_IME,
		PGE_LOG	
};

struct PGE_PAK_IMAGE_HEAD	// 图像文件包头
{
	DWORD	dwFlag;
	DWORD	dwImageCount;
	BYTE	btWidth;
	BYTE	btHeight;
};

struct FILE_OF_SIZE		// 图像文件包头后面的文件位置表
{
	DWORD dwStart;
	DWORD dwSize;
};

// PGE图像文件头
struct PGEPicBaseHead
{
	DWORD	dwHeadFlag;			// 标志 PGEP
	BYTE	btVersion;			// 版本号	
	BYTE	bBitCount;			// 图像位数
	BYTE	bCompess;			// 是否压缩
	DWORD	dwDataOffset;		// 图像数据偏移
	DWORD	dwDataSize;			// 图像数据大小
	DWORD	dwDeComSize;		// 解压后的大小
	WORD	wWidth;				// 图像宽
	WORD	wHeight;			// 图像高
	WORD	dwPalOffset;		// 调色板
	WORD	dwPalSize;			// 调色板大小
	WORD	wPalPiexlCount;		// 调色板颜色数
	DWORD	dwAlphaOffset;		// alpha通道
	DWORD	dwAlphaSize;		// alpha大小
	DWORD	dwAlphaDeComSize;	// alpha解压后的大小
	DWORD	dwResave;			// 保留
};

struct PGEPixe16
{
	WORD wPixeColor;
	BYTE btPixeCInfo;
};

class CPGEBase
{
public:
	CPGEBase();
	~CPGEBase();

	DWORD m_dwClassID;
	
};

int itoa(WORD* caOut, DWORD dwNum);
char* TCharToChar(TCHAR* tcData, int iSize);
TCHAR* ChartoTChar(char* caData);
// RECT操作函数
RECT FiRect(int iLeft, int iTop, int iRight, int iBottom);
RECT AdRect(RECT r1, RECT r2);
RECT SubRect(RECT r1, RECT r2);
RECT MuRect(RECT r1, RECT r2);
RECT MuRect(RECT r1, float fValue);	
BOOL PointInRect(POINT pt, RECT r);	
BOOL PointInRect(int x, int y, RECT r);	
BOOL RectEqZero(RECT r);

#define RectEqRect(r1, r2) (r1.left == r2.left && r1.top == r2.top && r1.right == r2.right && r1.bottom == r2.bottom) 

RECT RectAndRect(RECT r1, RECT r2);
RECT FiRectWithStr(char* caStr);	
RECT TrunRect(RECT& r, const int iValue);
char* GetResFile(char* caFileName);
FILE* PGEFileOpen(char* fileName, char* tp);

#define FILLRECT(tRect, lLeft, lTop, lRight, lBottom) \
	tRect.left = lLeft; \
	tRect.top = lTop; \
	tRect.right = lRight; \
	tRect.bottom = lBottom; \

⌨️ 快捷键说明

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