You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.2 KiB
C
97 lines
2.2 KiB
C
2 years ago
|
//
|
||
|
// 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
|