📄 jpegdoc.h
字号:
// JPEGDoc.h : interface of the CJPEGDoc class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_JPEGDOC_H__C06737A2_5ED6_44E5_A96D_BA6F4D43A51C__INCLUDED_)
#define AFX_JPEGDOC_H__C06737A2_5ED6_44E5_A96D_BA6F4D43A51C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CDib
{
protected:
CPalette m_Palette;
unsigned char *m_pDibBits;
DWORD m_dwDibSize;
BITMAPFILEHEADER *m_pBFH; //位图文件头
RGBQUAD *m_pPalette;
int m_nPaletteEntries;
struct RGBData
{
unsigned char Blue;
unsigned char Green;
unsigned char Red;
};
RGBData *data[1600]; //存储彩色图像的RGB三色
unsigned char *hdata[1600]; //数据类型一定不能错
typedef struct
{
double re;
double im;
}COMPLEX; //复数运算的结构体
typedef struct {
int zero_num;
int digit;
}C_RLE; //记录游程的长度和数据的结构体
public:
BITMAPINFOHEADER *m_pBIH; //位图信息头
LONG width,height; //图像的宽度和高度
LONG BmpFileLength;
C_RLE RLE[64]; //记录8*8的游程数据
int table[64]; //记录8*8的数据块经量化和Z型扫描结果
unsigned char *m_pDib; //
CFile file; //写JPEG文件的文件指针
int EncodeJpeg; //32位的数据缓冲区,用于把不等长的码串串成4个字节以便写入JPEG文件
int surplus; //32位数据缓冲区中剩余没使用的位长,使用数据缓冲区从高位到低位
public:
CDib();
~CDib();
BOOL Load(const char *);
BOOL Save(const char *);
BOOL SaveJpeg(const char *pszFilename);
BOOL Draw(CDC *,int nX=0,int nY=0);
BOOL SetPalette(CDC *);
// void FFT(COMPLEX * TD,COMPLEX * FD,int r);
void Show(CDC *pDC,int nX,int nY);
void Pre_DCT(double * sourcedata);
BOOL m_bit24;
BOOL DCT(double *x,int n,unsigned char *QuantTable);
int RLEProg();
BOOL WriteHuffmanData();
BOOL HuffmanTable(unsigned char *bit,unsigned char *val);
void Write32bit();
void ShiftWrite(int ac_huffmanbitnum,int ac_huffmancode);
BOOL WriteSurplus();
int WriteData(int preDC,int *DChufco,int *DChufsi,int *AChufco,int *AChufsi);
// BOOL DIBDct(LONG lWidth,LONG lHeight);
// BOOL Edge_Laplace(int ival);
// void Edge_Sobel();
// BOOL Add();
BOOL ShangInvert();
BOOL ZheInvert();
};
class CJPEGDoc : public CDocument
{
protected: // create from serialization only
CJPEGDoc();
DECLARE_DYNCREATE(CJPEGDoc)
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CJPEGDoc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CJPEGDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CJPEGDoc)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_JPEGDOC_H__C06737A2_5ED6_44E5_A96D_BA6F4D43A51C__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -