www.pudn.com > mp3.rar > CeXDib.h


// 
//	Class:		CCeXDib 
// 
//	Compiler:	Visual C++ 
//				eMbedded Visual C++ 
//	Tested on:	Visual C++ 6.0 
//				Windows CE 3.0 
// 
//	Author:		Davide Calabro'		davide_calabro@yahoo.com 
//									http://www.softechsoftware.it 
// 
//	Note:		This class uses code snippets taken from a similar class written 
//				for the Win32 enviroment by Davide Pizzolato (ing.davide.pizzolato@libero.it) 
// 
//	Disclaimer 
//	---------- 
//	THIS SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED "AS IS" AND WITHOUT 
//	ANY WARRANTIES WHETHER EXPRESSED OR IMPLIED. NO REPONSIBILITIES FOR POSSIBLE 
//	DAMAGES OR EVEN FUNCTIONALITY CAN BE TAKEN. THE USER MUST ASSUME THE ENTIRE 
//	RISK OF USING THIS SOFTWARE. 
// 
//	Terms of use 
//	------------ 
//	THIS SOFTWARE IS FREE FOR PERSONAL USE OR FREEWARE APPLICATIONS. 
//	IF YOU USE THIS SOFTWARE IN COMMERCIAL OR SHAREWARE APPLICATIONS YOU 
//	ARE GENTLY ASKED TO DONATE 1$ (ONE U.S. DOLLAR) TO THE AUTHOR: 
// 
//		Davide Calabro' 
//		P.O. Box 65 
//		21019 Somma Lombardo (VA) 
//		Italy 
// 
// 
#ifndef _CEXDIB_H_ 
#define _CEXDIB_H_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#ifndef	HDIB 
#define HDIB	HANDLE 
#endif 
 
#ifndef WIDTHBYTES 
#define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4) 
#endif 
 
#ifndef BFT_BITMAP 
#define BFT_BITMAP 0x4d42   // 'BM' 
#endif 
 
class CCeXDib   
{ 
public: 
	CCeXDib(); 
	virtual ~CCeXDib(); 
 
	HDIB Create(DWORD dwWidth, DWORD dwHeight, WORD wBitCount); 
	void Clone(CCeXDib* src); 
	void Draw(HDC hDC, DWORD dwX, DWORD dwY); 
	LPBYTE GetBits(); 
	void Clear(BYTE byVal = 0); 
 
	void SetGrayPalette(); 
	void SetPaletteIndex(BYTE byIdx, BYTE byR, BYTE byG, BYTE byB); 
	void SetPixelIndex(DWORD dwX, DWORD dwY, BYTE byI); 
	void BlendPalette(COLORREF crColor, DWORD dwPerc); 
 
	WORD GetBitCount(); 
	DWORD GetLineWidth(); 
	DWORD GetWidth(); 
	DWORD GetHeight(); 
	WORD GetNumColors(); 
 
	BOOL WriteBMP(LPCTSTR bmpFileName); 
 
private: 
	void FreeResources(); 
 
	DWORD GetPaletteSize(); 
	DWORD GetSize(); 
 
	RGBQUAD RGB2RGBQUAD(COLORREF cr); 
 
	HDIB				m_hDib; 
    BITMAPINFOHEADER    m_bi; 
	DWORD				m_dwLineWidth; 
	WORD				m_wColors; 
 
	HBITMAP				m_hBitmap;	// Handle to bitmap 
	HDC					m_hMemDC;	// Handle to memory DC 
	LPVOID				m_lpBits;	// Pointer to actual bitmap bits 
}; 
 
#endif