📄 decompressdoc.h
字号:
// DecompressDoc.h : interface of the CDecompressDoc class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_DECOMPRESSDOC_H__7EC3AE93_9B07_4C9A_8826_A06F61703B40__INCLUDED_)
#define AFX_DECOMPRESSDOC_H__7EC3AE93_9B07_4C9A_8826_A06F61703B40__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <afxtempl.h>
#include "Fractal.h"
#include "AC_Code.h"
#include "fstream.h"
class CDecompressDoc : public CDocument
{
protected: // create from serialization only
CDecompressDoc();
DECLARE_DYNCREATE(CDecompressDoc)
// Attributes
public:
BITMAPINFOHEADER bi; //图像信息头
RGBQUAD* quad; //调色板
BYTE* lpBuf; //图像数据缓存
BITMAPINFO* pbi; //图像信息
int flag; //是否打开了BMP文件
int numQuad; //调色板数目
BYTE* lpshowbuf; //图像显示缓存
BITMAPFILEHEADER bf; //图象文件头
int scale; //变换层数
int** Coefficient; //小波变换后的系数
CArray <BYTE,BYTE> code; //EZW编码所得编码结果
int codeId;
int JiFlag; //所用的小波基是Haar还是D97,0代表Haar,1代表D97
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDecompressDoc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
//}}AFX_VIRTUAL
// Implementation
public:
void FBAC_Code_En(CArray <BYTE,BYTE> &biao);
void ZhBAC_Code_En(CArray <BYTE,BYTE> &biao);
void FractalEncode(int height,int width,int flag,int orientation,int CodeLength);
void OnPsnr(int length);
void DeD97Four();
void DeHaarFour();
void Four_ToLpshowbuf(int **OneImage, int **SecondImage, int **ThreeImage, int** FourImage, int *max, int *min);
void ChangeImage(int** image);
void SetLineCoefficient(int **date, int **s, int **d, int height, int width);
void D97Forecast(int** s, int** d, int height, int width);
void RowSplit(int** data, int** s, int** d, int height, int width);
void HaarForecast(int** s, int** d, int height, int width); //Haar变换中的行预测
void LineSplit(int** data, int** s, int** d, int height, int width);
void DeD97Three();
void DeD97Two();
void DeD97One();
void DeD97Trans(int height, int width, int** date); //D97逆变换
void DeHaarThree(); //Haar一次逆变换
void DeHaarTwo(); //Haar二次逆变换
void DeHaarTrans(int height, int width, int** date);//Haar三次逆变换
void DeHaarOne();//Haar逆变换
void SetRowCoefficient(int **date, int **s, int **d, int height, int width); //把经过EZW解码的系数赋给要做小波逆变换的矩阵
void DeSetZeroTree(CNode **AllNode, int x, int y); //解码中的设置零树上节点的标志位
void EZWDecode(int T, CNode** AllNode, CArray <BYTE,BYTE> &zhubiao, CArray <BYTE,BYTE> &fubiao, int t); //EZW解码逆量化
void RunLength_En(CArray <BYTE,BYTE> &biao); //行程长度编码
void EZWEncode(int T, CArray <BYTE,BYTE> &zhubiao, CArray <BYTE,BYTE> &fubiao); //对经EZW扫描后的码继续进行无损编码
int SecondScan(CNode **AllNode, int T, CArray<BYTE,BYTE> &zhubiao, CArray<BYTE,BYTE> &fubiao, CArray<int,int> &zhycoeff,int ScanFlag,int length); //EZW扫描
void Order(CArray<int,int> &zhycoeff, int length,int min, int max); //重排函数
bool LiangHuaQi(int coeff, int min, int max); //量化器
void ChangeMatrix();
void SetZeroTree(CNode** AllNode, int x, int y); //设置零树上的节点的标志位
int CheckZeroTree(CNode **AllNode, int x, int y, int T); //检测该节点的子孙节点,即检测是否是零树
void GetCoefficient(int** date, int height, int width); //把经过小波变换的系数赋给要做EZW编码的矩阵
void D97Trans(int height, int width, int **data, int *max, int *min);
void Three_ToLpshowbuf(int **OneImage, int **SecondImage, int **ThreeImage, int *max, int *min);
void Two_ToLpshowbuf(int **OneImage, int **SecondImage, int *max, int *min);
void One_ToLpshowbuf(int **OneImage, int *max, int *min);
void HaarTrans(int height, int width, int **data, int *max, int *min);
BOOL PrepareShowdata();
virtual ~CDecompressDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CDecompressDoc)
afx_msg void OnFileOpen();
afx_msg void OnFileClose();
afx_msg void OnHaarOne();
afx_msg void OnHaarTwo();
afx_msg void OnHaarThree();
afx_msg void OnD97One();
afx_msg void OnD97Two();
afx_msg void OnD97Three();
afx_msg void OnFileSaveAs();
afx_msg void OnEZWEncode();
afx_msg void OnEZWDecode();
afx_msg void OnHaarFour();
afx_msg void OnD97Four();
afx_msg void OnFourFind();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_DECOMPRESSDOC_H__7EC3AE93_9B07_4C9A_8826_A06F61703B40__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -