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

📄 membitmap.h

📁 主要是应用VC进行傅立叶变换和反变换的程序
💻 H
字号:
#ifndef WMEMBITMAP
#define WMEMBITMAP

#include "math.h"
#define PIE 3.1415925
//支持按位取数据的操作,返回字节
class BitData
{
public:
	BYTE *Data;
	long int BytePtr;
	long int BufLen;
	int BitPtr;
	BOOL flag;
	BYTE CurByte;
	BYTE step;
//	BYTE CNT;
public:
	BitData();
	BitData(BYTE *buf,long int lenth);
	BOOL GetBit(int bits,BYTE &Value);
	BOOL GetBit(BYTE& Value);
//	BYTE GetBit(long int byteptr,int bitptr,int bits);
	~BitData();
};


typedef class memBitmap
{
private:
	LPBITMAPFILEHEADER bFileHeader;
	LPBITMAPINFOHEADER bInfoHeader;
	LPBITMAPINFO bBMI;
	int flag;
	float Scale;
	unsigned char *bitData;
private:
	BOOL TagFlag;//标志是否为文件交换格式
	int ImageWidth,ImageHeight; //图象宽和高
	BYTE CnNum;			//成分个数
	BYTE CnTable[10];	//成分编号
	BYTE CnHSample[10];	//成分水平采样比例
	BYTE CnVSample[10];  //成分垂直采样比例
	BYTE QuanNum[10];  //成分量化表编号
	BYTE CnDCHuffNum[10];//成分DC分量霍夫曼表的编号
	BYTE CnACHuffNum[10];//成分AC分量霍夫曼表的编号
	BYTE QuanTable[4][64]; //量化表
	int ReEnterInterval;	//重入间隔

	int HuffDCTable[2][256];//霍夫曼表
	BYTE HuffDCBits[2][16];		//n位霍夫曼码的个数
	BYTE HuffDCVar[2][256];		//霍夫曼值
	BYTE HuffDCPtr[2][16];		//霍夫曼指针,表长度为n的霍夫曼码在表中启始位置
	int HuffDCMinCode[2][16];	//长度为n的霍夫曼码的最小值
	int HuffDCMaxCode[2][16];	//长度为n的霍夫曼码的最大值
	//以上为直流系数的数据,以下为交流系数的数据
	int HuffACTable[2][256];//霍夫曼表
	BYTE HuffACBits[2][16];		//n位霍夫曼码的个数
	BYTE HuffACVar[2][256];		//霍夫曼值
	BYTE HuffACPtr[2][16];		//霍夫曼指针,表长度为n的霍夫曼码在表中启始位置
	int HuffACMinCode[2][16];	//长度为n的霍夫曼码的最小值
	int HuffACMaxCode[2][16];	//长度为n的霍夫曼码的最大值
	long int JpegLenth;
private:
	int MCUnumber;
	int xRes;
	int yRes;
	int MCUcount;
	long int Pred[3];	//存放前一个直流分量的Pred
	double DctVar1[8][8];
	double DctVar2[8][8];
	double IDct[3][10][8][8];

private:
	BOOL EnCode(BitData &Jpeg);
	BOOL EnCodeMCU(BitData &Jpeg,BYTE CnNum,BYTE MCUnum);

public:
	int BytesPerLine;
	unsigned long int lenth;
	unsigned char *bData;
public:
	memBitmap();
	memBitmap(int cx,int cy,class memBitmap &bm);
	BOOL CreateDirect(int cx,int cy);
	BOOL Load(LPCTSTR filename);
	BOOL Save(LPCTSTR filename);
	void Display(int x,int y,CDC *dc);
	void Display(int x,int y,int cx,int cy,CDC *dc);
	int GetWidth();
	int GetHeight();
	void SetWidth(int w);
	void SetHeight(int h);
	int GetDispWidth();
	int GetDispHeight();
	void SetScale(int bl);
	void SetScale(float bl);
	BOOL ChangeSize(int cx,int cy);
	float GetScale();
	COLORREF GetPixel(int x,int y);
	void SetPixel(int x,int y,COLORREF color);
	void operator=(class memBitmap &bm);
	void DataToView(class memBitmap &bm);//生成显示用的其他比例文件
	void Release();
	BOOL JpegToBmp(BYTE *buf,long int lenth);
	~memBitmap();
}memBITMAP;

#endif

⌨️ 快捷键说明

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