www.pudn.com > ImgFFT.zip > CDib.h


//CDib.h 
//for new class added to current project is required,it is essential before building  
//to add the head file of the new class to the executive file(.cpp) of the project, 
//to the head file(.cpp) of the project,and to the executive file(.cpp) of the class  
//where a object of the new class is constructed. 
//////////////////////////////////////////////////////////////////////////// 
 
#ifndef _INSIDE_VISUAL_CPP_CDIB //could be changed? 
#define _INSIDE_VISUAL_CPP_CDIB 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
class CDib:public CObject 
{ 
public: 
	enum Alloc{noAlloc,crtAlloc,heapAlloc}; 
	DECLARE_SERIAL(CDib) 
 
public: 
	LPVOID m_lpvColorTable; 
	HBITMAP m_hBitmap; 
	LPBYTE m_lpImage; 
	LPBITMAPINFOHEADER m_lpBMIH; 
	HGLOBAL m_hGlobal; 
	Alloc m_nBmihAlloc; 
	Alloc m_nImageAlloc; 
	DWORD m_dwSizeImage; 
	int m_nColorTableEntries; 
	HANDLE m_hFile; 
	HANDLE m_hMap; 
	LPVOID m_lpvFile; 
	HPALETTE m_hPalette; 
 
public: 
	RGBQUAD GetPixel(int x,int y); 
	LONG GetPixelOffset(int x,int y); 
	CSize GetDibSaveDim(); 
	CSize GetDimension(); 
	WORD PaletteSize(); 
	BOOL IsEmpty(); 
//	WORD PaletteSize(); 
	CDib(); 
	CDib(CSize size,int nBitCount); 
	~CDib(); 
	int GetSizeImage(){return m_dwSizeImage;} 
	int GetSizeHeader() 
	{return sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*m_nColorTableEntries;} 
	 
//	BOOL AttachMapFile(const char* strPathname,BOOL bShare=FALSE); 
//	BOOL CopyToMapFile(const char* strPathname); 
//	BOOL AttachMemory(LPVOID lpvMem,BOOL bMustDelete=FALSE,HGLOBAL hGlobal=NULL); 
	BOOL Draw(CDC *pDC,CPoint origin,CSize size); 
	 
//	HBITMAP CreateSection(CDC* pDC=NULL); 
	UINT UsePalette(CDC* pDC,BOOL bBackground=FALSE); 
	BOOL MakePalette(); 
	BOOL SetSystemPalette(CDC* pDC); 
//	BOOL Compress(CDC *pDC,BOOL bCompress=TRUE); 
//	HBITMAP CreateBitmap(CDC* pDC); 
	BOOL Read(CFile *pFile); 
	BOOL ReadSection(CFile *pFile,CDC* pDC=NULL); 
	BOOL Write(CFile *pFile); 
 
	void Serialize(CArchive& ar); 
	void Empty(); 
	void ComputePaletteSize(int nBitCount); 
 
private: 
	void DetachMapFile(); 
	void ComputeMetrics(); 
 
}; 
 
#endif//_INSIDE_VISUAL_CPP_CDIB