www.pudn.com > yuzhishuanfa.zip > Dibapi.h


// dibapi.h   位图处理头文件,鲍捷1998年4月 
// 
 
#ifndef _INC_DIBAPI 
#define _INC_DIBAPI 
 
/* Handle to a DIB */ 
DECLARE_HANDLE(HDIB); 
 
/* DIB constants */ 
#define PALVERSION   0x300 
 
/* DIB Macros*/ 
 
#define IS_WIN30_DIB(lpbi)  ((*(LPDWORD)(lpbi)) == sizeof(BITMAPINFOHEADER)) 
    //Windows3.0版的BITMAPINFOHEADER的第一个字段: 
    //               DWORD biSize(本结构所要求的字节数) 
 
#define RECTWIDTH(lpRect)     ((lpRect)->right - (lpRect)->left) 
#define RECTHEIGHT(lpRect)    ((lpRect)->bottom - (lpRect)->top) 
 
 
// WIDTHBYTES performs DWORD-aligning of DIB scanlines.  The "bits" 
// parameter is the bit count for the scanline (biWidth * biBitCount), 
// and this macro returns the number of DWORD-aligned bytes needed 
// to hold those bits. 
 
#define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4) 
 
/* Function prototypes */ 
//In dibapi.cpp 
BOOL      WINAPI  PaintDIB (HDC, LPRECT, HDIB, LPRECT, CPalette* pPal); 
BOOL      WINAPI  CreateDIBPalette(HDIB hDIB, CPalette* cPal); 
LPSTR     WINAPI  FindDIBBits (LPSTR lpbi); 
DWORD     WINAPI  DIBWidth (LPSTR lpDIB); 
DWORD     WINAPI  DIBHeight (LPSTR lpDIB); 
WORD      WINAPI  PaletteSize (LPSTR lpbi); 
WORD      WINAPI  DIBNumColors (LPSTR lpbi); 
HGLOBAL   WINAPI  CopyHandle (HGLOBAL h); 
HDIB      WINAPI  BitmapToDIB (HBITMAP hBitmap, HPALETTE hPal); 
HBITMAP   WINAPI  DIBToBitmap (HDIB hDIB, HPALETTE hPal); 
 
//{{鲍捷的代码 
//建立真彩位图 
HBITMAP   WINAPI  Create24BitsBitmap(DWORD Width,DWORD Height); 
HBITMAP   WINAPI  Create8BitsBitmap(DWORD Width,DWORD Height); 
 
//256级灰度位图像素置、取 
inline BYTE  WINAPI GetGrayPixel(BYTE FAR* pImage,DWORD i,DWORD j,DWORD Width,DWORD Height) 
{return *(pImage+(Height-1-j)*WIDTHBYTES(Width * 8)+i);} 
 
inline BYTE  WINAPI SetGrayPixel(BYTE FAR* pImage,DWORD i,DWORD j,DWORD Width,DWORD Height,BYTE Color) 
{return *(pImage+(Height-1-j)*WIDTHBYTES(Width * 8)+i)=Color;} 
//}} 
 
//In File.cpp 
BOOL      WINAPI  SaveDIB (HDIB hDib, CFile& file); 
HDIB      WINAPI  ReadDIBFile(CFile& file); 
 
/* 
* In Color.cpp 
*  CreateBIPalette()   - Creates a GDI palette given a pointer            * 
*                                      to a BITMAPINFO structure.         *    * 
*                                                                             * 
*/ 
HPALETTE WINAPI CreateBIPalette (LPBITMAPINFOHEADER lpbi); 
 
//In Copy.cpp 
//In Print.cpp 
//In Draw.cpp 
//In Errors.cpp 
 
 
#endif //!_INC_DIBAPI