?? 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 + -