www.pudn.com > JingXiang-Design-Jeff.rar > BmpFile.h
// BmpFile.h: interface for the BmpFile class.
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BMPFILE_H__3BA3F282_1A90_11D4_8C58_A2DB4618981D__INCLUDED_)
#define AFX_BMPFILE_H__3BA3F282_1A90_11D4_8C58_A2DB4618981D__INCLUDED_
#include "BmpDef.h"
#define GET_GRAY(R,G,B)(BYTE)((float)(R)*0.3+(float)(G)*0.51+(float)(B)*0.19)// Ghange To Gray MACRO
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define FIRSTSIZEFORSHOW (1024*1024)
#define FIRSTSIZEFORBMPBIT (500*1024)
#define FIRSTGRAYDATABUFFERSIZE (1024*1024)
#define FIRSTPUBLICBUFFERSIZE (2*1024*1024)
#define HIGH(x) ((x)>>0x08)
#define LOW(x) ((x)&0x00FF)
#define LINE_BYTE(x) ((((x)+3)>>2)<<2)
class BmpFile :virtual public CFile
{
public:
BOOL BrightAdjusting(int Adjust_Num,RECT *pInput_=NULL);
BOOL InverseImage(RECT *pInput_=NULL);
// UINT TmpFileLenth;
CFile TmpFile;
int StrongBorderMethod;
BOOL LoadLowThought(RECT *pInput_=NULL,float Kernel[3][3]=NULL);
BOOL Convolution(RECT *pInput_=NULL,int *Kernel=NULL,int Col_Num=3,int Total_Num=9);
BOOL Convolution_3_3(RECT *pInput_=NULL,int Kernel[3][3]=NULL);
BOOL Convolution_3_3_Float(RECT *pInput_=NULL,float Kernel[3][3]=NULL);
RECT RangeRectBak; // Used For Dialog 'ForLancet' Class on OnApply and OnCancel And OnOk FUnction
POINT Border[4][2][3];
BOOL StrongBorder(int Method=0,RECT *pInput_=NULL);
BOOL DetectBorder(RECT *pInput_=NULL);
BYTE * pPublicBuffer;
UINT PublicBufferSize;
BOOL MedianFilter(RECT *pInput_=NULL);
BOOL ChangeToGray(void);
BOOL Init_Palette_For_Gray(RGBQuad *pQuad=NULL,int PaletteNum=256);
BMPInfoHeader InfoHeader_For_Gray;
BMPInfoHeader InfoHeader_Bak;
BYTE * pBMPDataForGray;
UINT GrayDataBufferSize;
int AutoGetSwitchForLancet( int Method);
BOOL CopyImageDataAsNonCompressionDataToMemForShow(void);//BMPInfoHeader *pInfo=NULL,BYTE *p_Palette=NULL,BYTE *p_Bits=NULL);
//char ForTest;
BOOL GetLancet(int Switch,RECT *pInput=NULL,int Switch_=-1);
BOOL IsLancet;
int RangeOfAreaForLancet;
int SwitchForLancet;
int GetPointGray(int Line,int Col);
char ImageType[20];
RECT ReallyRectOfBMP;
BOOL BMPSelectEnabled;
RECT SelectedRect;
BOOL RectSelected;
BOOL CopyGrayToShow(void *p_Palette=NULL,void *p_Bits=NULL);
BYTE * pBMPBits;
RGBQuad * pPalette;
DWORD SizeOfMemForShow;
BYTE *pBMPDataForShow;
LOGPALETTE * pLogPal;
BOOL GetBMPPalette(void);
CPalette thePalette;
BOOL SetPalette(CDC *pDc);
BOOL SpeedShowBitMap(CDC *pDc,int Ratio);
//CBitmap *pTheBitmap;
BOOL GetRectGrayRatio(RECT &rect);
void EmptyGrayRatio(void);
void GetGrayRatio(void);
float GrayRatio[256];
DWORD TotalPoint;
DWORD Points[256];
void SetBmpStatus(BOOL OkOrNot);
void SetIsGray(BOOL IsOrNot);
//void SetIsGray(BOOL IsOrNot);
BOOL GetIsGray(void);
DWORD mNowHeight;
DWORD mNowWidth;
void Swap(void *p1,void *p2,int size);
BMPInfoHeader BmpInfoHeader;
BMPFileHeader BmpFileHeader;
BOOL ShowBitMap(CDC *pDc,int Ratio=1);
BOOL GetBmpStatus(void);
BOOL IsFileOpen(CFile *pFile=NULL);
UINT BMPDataSize;//为图形数据分配的内存大小,如图形数据未压缩
//=BmpInfoHeader.biImageSize;否则,
//=BmpInfoHeader.biImageSize*2 (bytes)
RGBQuad *pRgbQuad;
BOOL GetBMPData();
BYTE * pBMPData;
int NumOfColor;
void GetBmpStruct(int ShowMode=1);
BmpFile(CString FileName);
BmpFile();
virtual ~BmpFile();
BOOL BMP_IsEmpty;
CString BMPFileName;
INT NonCompressLineSize;//Bytes
BOOL GetBmpFile(CString Filename,int ShowMode=1);
BOOL BmpAdjustData(void);
protected:
BOOL BMP_Ok;
private:
CPalette *pOldPalette;
BOOL IsGray;
BOOL IsFirstOpen;
BOOL DecodeForRLE_4(void);
BOOL DecodeForRLE_8(void);
BOOL AskMemoryForBMPData();
BOOL IsBMPFile(void);
INT ErrorFlag;
};
#endif // !defined(AFX_BMPFILE_H__3BA3F282_1A90_11D4_8C58_A2DB4618981D__INCLUDED_)