/***********************************************************************
*Copyright (c)2012 , 天际边工作室
*All rights reserved.
**
文件名称：	PicConverter.cpp
*摘要：		游戏引擎类头文件
**
*修改历史：
*	版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*	1.0    2012-10-5  wstjb     基本的功能完成
***********************************************************************/

#pragma once

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "PublicFun.h"
//#include "libOperator.h"

class PicConverter
{
public:

	void Init();
	
	void KeyDown(WPARAM KeyCode);
	byte BytesToImage();
	HBITMAP BytesToHBitmap(int type,int restype,int index,int no = 0);
	HBITMAP BytesToHBitmapTrans(int type,int restype,int index,int no = 0);
	HBITMAP BytesToHBitmapMask(int type,int restype,int index,int no = 0);
	//void BufferTobiImageBuf(int type,int restype,int index);
	int GetResNumFromType(int type,int restype,int index);
	HBITMAP BytesToHBitmapCG(int picnum,int resnum,int frameCount);
	void GetCGByte(int picnum,int resnum,int frameCount,int transtype);
	HBITMAP BytesToHBitmapCGMask(int picnum,int resnum,int frameCount,int &transflag);
	HBITMAP BytesToHBitmapCGTrans(int picnum,int resnum,int frameCount);
	int GetPicNumInPic(int type,int restype,int index);//获取PIC中存储的图片数量
	int GetDefaultWidth(int type,int restype,int index,int no);
	int GetDefaultHeight(int type,int restype,int index,int no);

//private:
	//BMP文件头14
	byte bfType[2];
	byte bfSize[4];
	byte bfReserved1[2];
	byte bfReserved2[2];
	byte bfOffBits[4];
	
	//信息头40
	byte biSize[4]; // 本结构所占用字节数
	byte biWidth[4]; // 位图的宽度，以像素为单位
	byte biHeight[4]; // 位图的高度，以像素为单位
	byte biPlanes[2]; // 目标设备的级别，必须为1
	byte biBitCount[2];// 每个像素所需的位数，必须是1(双色),4(16色)，8(256色)或24(真彩色)之一
	byte biCompression[4]; // 位图压缩类型，必须是 0(不压缩)
	byte biSizeImage[4]; // 位图的大小，以字节为单位.必须为4倍数
	byte biXPelsPerMeter[4]; // 位图水平分辨率，每米像素数
	byte biYPelsPerMeter[4]; // 位图垂直分辨率，每米像素数
	byte biClrUsed[4];// 位图实际使用的颜色表中的颜色数
	byte biClrImportant[4];// 位图显示过程中重要的颜色数
	
	//调色板8
	byte bmiColors[2];
	
	//位图数据 0-黑 1-白 Height(图像高度)*(Width+8-Width%8)/8
	byte biImage[16384];

	//LibOperator *libOperator;
	
	struct BitMAPINFO
    { 
        BITMAPINFOHEADER bmiHeader; 
        RGBQUAD          bmiColors[2]; 
    } bi;

	int cgByteLen;
	byte cgByte[16384];

};