|
#if !defined(AFX_CDIBSECTIONLITE_H__35D9F3D4_B960_11D2_A981_2C4476000000__INCLUDED_)
#define AFX_CDIBSECTIONLITE_H__35D9F3D4_B960_11D2_A981_2C4476000000__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// defines
#define DS_BITMAP_FILEMARKER ((WORD) ('M' << 8) | 'B') // is always "BM" = 0x4D42
#define BMGRADIENT_DIRECTION_HORZ 0
#define BMGRADIENT_DIRECTION_VERT 1
/////////////////////////////////////////////////////////////////////////////
// BITMAPINFO wrapper
struct DIBINFO : public BITMAPINFO
{
RGBQUAD arColors[255]; // Color table info - adds an extra 255 entries to palette
operator LPBITMAPINFO() { return (LPBITMAPINFO) this; }
operator LPBITMAPINFOHEADER() { return &bmiHeader; }
RGBQUAD* ColorTable() { return bmiColors; }
};
/////////////////////////////////////////////////////////////////////////////
// CDIBSectionLite object
class CDIBSectionLite
{
// Construction
public:
CDIBSectionLite();
virtual ~CDIBSectionLite();
void DeleteObject();
// static helpers
public:
static int BytesPerLine(int nWidth, int nBitsPerPixel);
static int NumColorEntries(int nBitsPerPixel);
// Attributes
public:
HBITMAP GetSafeHandle() const { return (this)? m_hBitmap : NULL; }
CSize GetSize() const { return CSize(GetWidth(), GetHeight()); }
int GetHeight() const { return m_DIBinfo.bmiHeader.biHeight; }
int GetWidth() const { return m_DIBinfo.bmiHeader.biWidth; }
int GetPlanes() const { return m_DIBinfo.bmiHeader.biPlanes; }
int GetBitCount() const { return m_DIBinfo.bmiHeader.biBitCount; }
LPVOID GetDIBits() { return m_ppvBits; }
LPBITMAPINFO GetBitmapInfo() { return (BITMAPINFO*) m_DIBinfo; }
DWORD GetImageSize() const { return m_DIBinfo.bmiHeader.biSizeImage; }
LPBITMAPINFOHEADER GetBitmapInfoHeader() { return (BITMAPINFOHEADER*) m_DIBinfo; }
void Create32BitFromBitmap(HBITMAP hbmp, int iWidth, int iHeight);
COLORREF FixColorRef (COLORREF clr);
BOOL SetBitmap(LPBITMAPINFO lpBitmapInfo, LPVOID lpBits);
// Operations
public:
BOOL Draw(CDC* pDC, CPoint ptDest, BOOL bForceBackground = FALSE);
// Implementation
protected:
BOOL FillDIBColorTable(UINT nNumColours, RGBQUAD *pRGB);
protected:
HBITMAP m_hBitmap; // Handle to DIBSECTION
DIBINFO m_DIBinfo; // Bitmap header & color table info
VOID *m_ppvBits; // Pointer to bitmap bits
UINT m_iColorDataType; // color data type (palette or RGB values)
UINT m_iColorTableSize; // Size of color table
private:
HBITMAP m_hOldBitmap; // Storage for previous bitmap in Memory DC
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CDIBSECTIONLITE_H__35D9F3D4_B960_11D2_A981_2C4476000000__INCLUDED_)
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.