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

📄 mimage.h

📁 这是一个用BREW和VC++开发的暴力摩托游戏,与大家一同分享.
💻 H
字号:
#ifndef _MIMAGE_HEADER
#define _MIMAGE_HEADER

#include "MGlobalConstant.h"
#include "MGlobalMacro.h"

#include "MBinary.h"
#include "MTool.h"

#include "AEE.h"
#include "AEEModGen.h"
#include "AEEAppGen.h"
#include "AEEShell.h"
#include "AEEStdLib.h"
#include "AEEHeap.h"

#define BMP_HEADER_SIZE 54
#define PALLETTE_START_OFFSET 54
typedef AEERect TRANSFORM_AREA;

typedef enum eANGLE_TYPE {
	ANGLE_90_DEGREE_CW = 0,
	ANGLE_270_DEGREE_CCW = 0,

	ANGLE_180_DEGREE_CW = 1,
	ANGLE_180_DEGREE_CCW = 1,

	ANGLE_270_DEGREE_CW = 2,
	ANGLE_90_DEGREE_CCW = 3
} ANGLE_TYPE;

typedef struct stRGB_QUAD {
	uint8 blue;
	uint8 green;
	uint8 red;
	uint8 reserved;

	uint32 getIntValue() {
		return (reserved&0xff) + ( (red&0xff)<<8 )+ ( (green&0xff)<<16 ) + ( (blue&0xff)<<24);
	}
} RGB_QUAD;



class CMImage {
public:
	__MACRO_NEW_DELETE_SOURCE

	CMImage(CMBinary *pBinary, boolean isFullBmp) {
/*
//	pBinary : 捞固瘤 单捞磐啊 甸绢 乐绰 官捞呈府 按眉
//	isFullBmp : 单捞磐 救俊 Bmp Header啊 器窃登绢 乐绰瘤狼 咯何 ( 器窃登绢 乐栏搁 true )
//
//	林狼 : 官捞呈府 按眉绰 捞固瘤肺 函券等 捞饶(convert 沏记捞 沥惑 荐青茄 捞饶)俊 磊悼 秦力等促.
*/

		cache_ = NULL;

		pBinary_ = pBinary;
		if ( isBmpPalletteIn_ = isFullBmp) {
			// 单捞磐 救俊 bmp Pallette档 器窃登绢 乐绰 肯傈茄 bmp 老 版快绰, binary 按眉 单捞磐 加俊 庆歹客 官叼啊 窃膊 粮犁茄促.
			processHeader();
			
		} else {
			body_ = pBinary->getData();
		}

		isConverted_ = false;
		isReallocated_ = false;
	}

	~CMImage() {
		freeData();
	}

	void			freeData();

	CMImage			*createFrom();							// this甫 汗荤茄 货肺款 按眉甫 积己
	static CMImage	*createFrom(CMImage *pImage);			// pImage甫 汗荤茄 货肺款 按眉甫 积己

	boolean			setBmpPallette(CMBinary *pPallette, boolean palFree = false);


	void			setPalletteColor(int index, RGBVAL color);
	void			setPalletteColor(int index, uint8 r, uint8 g, uint8 b);
	RGBVAL			getPalletteColor(int index);
	RGB_QUAD		*getPalletteRef(int index);

	void			setPixel(int x, int y, int data);
	int				getPixel(int x, int y);
	void			swapPixel(int x1, int y1, int x2, int y2);

	void			toGray();
	void			toTransparent(int rate, RGBVAL color);
	void			toTransparent(int rate, int r, int g, int b);

	void			zoomIn(int level); //	ta_.x 客 ta_.y 困摹啊 淋窍妨绰 盔夯狼 哭率 困 谅钎啊 登绊 傈眉 农扁客 涝仿等 硅啦俊 蝶扼 盔夯狼 承捞啊 搬沥等促.
	
	void			zoomOut(int level);
	void			toMosaic(int level);
	void			toMask();

	void			flip(boolean bVertical =  false);

#ifdef FREE_ROTATE
	void			rotate(int angle);
#else
	void			rotate(ANGLE_TYPE at);
#endif

	void			setTranformArea(int x,int y, int w, int h);

	void			convert();

	void			*getBmp();
	uint16			getWidth();
	uint16			getHeight();
	boolean			isConverted();

private:
	void			freeCache();

	byte			*createBmpHeader(CMBinary *body, CMBinary *header);				// bmp header甫 父电促.

	void			processHeader();	// 庆歹甫 颇教茄促.

	int				getPixelIndex(int x, int y);	//x,y 谅钎狼 侨伎捞 linear memory俊 困摹秦 乐绰 offset捞 倔付牢瘤 备茄促.
	uint8			getPixelPerByte(uint8 nBit);	// bmp pixel access甫 困茄 惑荐 沥狼
	uint8			getShiftNo(uint8 nBit );		// bmp pixel access甫 困茄 惑荐 沥狼
	uint8			getMask(uint8 nBit);			// bmp pixel access甫 困茄 惑荐 沥狼



	CMBinary		*pBinary_;
	void			*bmp_;
	byte			*body_;

	boolean			isBmpPalletteIn_;
	boolean			isConverted_;
	boolean			isReallocated_;
	uint8			colorDepth_;		// bit 
	uint16			colorCount_;
	uint16			width_;
	uint16			height_;


	int8			pixelPerByte_;
	uint8			shiftNo_;
	byte			mask_;

	TRANSFORM_AREA	ta_;



#ifdef USE_MODULE_DYNAMIC_CACHE
	uint8 *cache_;

	#define CACHE_pixelPerByte_ cache_[0]
	#define CACHE_shiftNo_ cache_[1]
	#define CACHE_mask_ cache_[2]
	#define CACHE_pixelALine_ cache_[3]
	#define CACHE_pixelALineLeft_ cache_[4]
	#define CACHE_maskStatic_ cache_[5]

#else

	uint8			CACHE_pixelPerByte_;
	uint8			CACHE_shiftNo_;
	uint8			CACHE_mask_;
	uint8			CACHE_pixelALine_;
	uint8			CACHE_pixelALineLeft_;
	uint8			CACHE_maskStatic_; // used as static variables.


#endif // USE_MODULE_DYNAMIC_CACHE

};


#endif // _MIMAGE_HEADER

⌨️ 快捷键说明

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