www.pudn.com > backmode824.rar > Dibapi.h


#define  HDIB HANDLE 
#define PALVERSION 0x300 
#define DIB_HEADER_MARKER 0x4d42 
#define PW_WINDOW 1 
#define PW_CLIENT 2 
#define MEAN_GRAY 0 
#define MAXIMUM_GRAY 1 
#define WEIGHT_GRAY 2 
#define UNDEFINED (-1.0) 
#define RGB_COLOR 0 
#define CMYK_COLOR 1 
#define HSI_COLOR 2 
#define HLS_COLOR 3 
#define KERNELCOLS 3 
#define KERNELROWS 3 
#define KERNELELEMENTS (KERNELCOLS*KERNELROWS) 
#define FILTER1 1 
#define FILTER2 2 
#define FILTER3 3  
#define IS_WIN30_DIB(lpbi)\ 
((*(LPWORD)(lpbi)) == sizeof(BITMAPINFOHEADER)) 
#define WIDTHBYTES(bits)\ 
(((bits)+31)/32*4) 
#define RECTWIDTH(lpRect)\ 
(lpRect->right-lpRect->left) 
#define RECTHEIGHT(lpRect)\ 
(lpRect->bottom-lpRect->top) 
#define BOUND(x,mn,mx)\ 
((x)<(mn)?(mn):((x)>(mx)?(mx):(x))) 
#define UPVALUE(x,n)\ 
((x)/((n)?(n):1)+((x)%((n)?(n):1)?1:0)) 
#define PIXEL_OFFSET24(i,j,nWidthBytes)\ 
(LONG)((LONG)i*(LONG)nWidthBytes+(LONG)(j)*3) 
#define PIXEL_OFFSET08(i,j,nWidthBytes)\ 
(LONG)((LONG)i*(LONG)nWidthBytes+(LONG)(j)) 
 
 typedef struct _NODE 
 { 
	 BOOL bIsLeaf;  // TRUE if node has no children 
     UINT nPixelCount;// Number of pixels represented by this'l 
     UINT nRedSum;    // Sum of red components 
	 UINT nGreenSum;  //Sum of green components 
     UINT nBlueSum;    // Sum of blue components 
     struct _NODE* pChild[8];   // Pointers to child nodes 
     struct _NODE* pNext;      // Pointer to next reducible node 
 } NODE; 
 
 typedef struct 
 { 
	 int Element[KERNELELEMENTS]; 
	 int Divisor; 
 } KERNEL; 
 
//调色板函数 
HPALETTE CreateDIBPalette(LPBYTE lpbi); 
int      PalEntriesOnDevice(HDC hDC); 
BOOL     MapDIBColorsToPalette(HDIB hDIB,HPALETTE hPalette); 
HPALETTE GetSystemPalette(void);  
BOOL     HDisplayPalette(HDC hDC,LPRECT lpRect,HPALETTE hPal); 
 
//属性函数 
DWORD  BytesPerLine(LPBYTE lpDIB); 
DWORD  DIBBlockSize(LPBYTE lpDIB); 
WORD   DIBBitCount(LPBYTE lpDIB); 
DWORD  DIBHeight(LPBYTE lpDIB); 
WORD   DIBNumColors(LPBYTE lpDIB); 
DWORD  DIBWidth(LPBYTE lpDIB); 
LPBYTE FindDIBBits(LPBYTE lpDIB); 
WORD   PaletteSize(LPBYTE lpDIB); 
 
DWORD  BytesPerLine(HDIB hDIB); 
DWORD  DIBBlockSize(HDIB hDIB); 
WORD   DIBBitCount(HDIB hDIB); 
DWORD  DIBHeight(HDIB hDIB); 
WORD   DIBNumColors(HDIB hDIB); 
DWORD  DIBWidth(HDIB hDIB); 
LPBYTE FindDIBBits(HDIB hDIB); 
WORD   PaletteSize(HDIB hDIB); 
 
//初始化函数 
HDIB   CreateDIB(DWORD dwWidth,DWORD dwHeight,WORD wBitCount); 
HDIB   CreateDefaultDIB(DWORD dwWidth,DWORD dwHeight); 
void   DestroyDIB(HDIB hDib); 
HANDLE ReadDIBFile(HANDLE hFile); 
HANDLE LoadDIB(LPCTSTR lpFileName); 
BOOL   SaveDIB(HANDLE hDib,LPCTSTR lpFileName); 
 
//显示函数 
BOOL PaintBitmap(HDC hDC,LPRECT lpDCRect,HBITMAP hDDB,LPRECT lpDDBRect,HPALETTE hPal, DWORD dwRop); 
BOOL PaintDIB(HDC hDC,LPRECT lpDCRect,HANDLE hDIB,LPRECT lpDIBRect,HPALETTE hPal, DWORD dwRop); 
 
 
//操作函数 
HBITMAP DIBToDIBSection(LPBYTE lpDIB); 
HDIB    DIBSectionToDIB(HBITMAP hBitmap); 
BOOL    CopyColorTable(LPBITMAPINFO lpTarget,LPBITMAPINFO lpSource,HPALETTE hPalSrc); 
HDIB    ConvertDIBFormat(LPBYTE lpDIB,UINT nWidth,UINT nHeight,UINT nbpp,BOOL bStrech,HPALETTE hPalSrc); 
HDIB    BitmapToDIB(HBITMAP hBitmap,HPALETTE hPal); 
HDIB    BitmapToDIB(HBITMAP hBitmap,HPALETTE hPalette,WORD wBitCount); 
HBITMAP DIBToBitmap(HDIB hDIB,HPALETTE hPal); 
 
//捕获函数群 
HBITMAP CopyScreenToBitmap(LPRECT lpRect); 
HBITMAP CopyWindowToBitmap(HWND hWnd,WORD fPrintArea); 
HBITMAP CopyClientRectToBitmap(HWND hWnd,LPRECT lpRect); 
HDIB    CopyScreenToDIB(LPRECT lpRect); 
HDIB    CopyWindowToDIB(HWND hWnd,WORD fPrintArea); 
HDIB    CopyClientRectToDIB(HWND hWnd,LPRECT lpRect); 
 
 
//定时函数  
void Delay (DWORD dwDelayTime); 
 
//鼠标函数 
void WaitCursorBegin(void); 
void WaitCursorEnd(void); 
 
//特技处理所需子函数 
BOOL Fade(int nDeltaR,int nDeltaG,int nDeltaB,BYTE rm,BYTE gm,BYTE bm,BYTE *r,BYTE *g,BYTE *b); 
HANDLE CopyHandle(HANDLE h); 
 
//颜色处理函数 
void     AddColor(NODE** ppNode,BYTE r,BYTE g,BYTE b,UINT nColorBits,UINT nLevel,UINT* pLeafCount,NODE** pReducibleNodes); 
HPALETTE BuildOctreePalette(HANDLE hImage, UINT nMaxColors,UINT nColorBits); 
HDIB     ColorQuantizeDIB(HDIB hDIB,UINT nColorBits,UINT nMaxColors); 
HPALETTE ConvertToGrayScale(HDIB hDib,int nMethod,double fRedWeight, double fGreenWeight,double fBlueWeight); 
NODE*    CreateNode(UINT nLevel,UINT nColorBits,UINT* pLeafCount,NODE** pReducibleNodes); 
HPALETTE CreateOctreePalette(HDIB hDIB,UINT nMaxColors,UINT nColorBits); 
HPALETTE CreateOctreePalette(LPBYTE lpDIB,UINT nMaxcolors,UINT nColorBits); 
void     DeleteTree (NODE** ppNode); 
void     GetPaletteColors (NODE* pTree,PALETTEENTRY* pPalEntries,UINT* pIndex); 
int      GetLeftShiftCount (DWORD dwVal); 
int      GetRightShiftCount (DWORD dwVal); 
void     ReduceTree(UINT nColorBits,UINT* pLeafCount,NODE** pReducibleNodes); 
//颜色空间相互转换函数 
BOOL   AdjustDIBColor(HDIB hDib, int nColorModel,int v1,int v2, int v3); 
BOOL   RGBToShort2HS(LPBITMAPINFOHEADER lpbi,LPBYTE lpdib, 
				   short *lpDataH,short *lpDataS); 
void   HSItoRGB(double h,double s,double i,BYTE *r,BYTE *g,BYTE *b); 
void   RGBtoHSI(BYTE r,BYTE g,BYTE b,double *h,double *s,double *i); 
void   RGBtoHSV(BYTE r,BYTE g,BYTE b,double *h,double *s,double *v); 
void   HLStoRGB(double h,double l,double s,BYTE *r,BYTE *g, BYTE *b); 
void   RGBtoHLS(BYTE r,BYTE g,BYTE b,double *h,double *l,double *s); 
void   CMYKtoRGB(BYTE c,BYTE m,BYTE y,BYTE k,BYTE *r,BYTE *g,BYTE *b); 
void   RGBtoCMYK(BYTE r,BYTE g,BYTE b,BYTE *c,BYTE *m,BYTE *y,BYTE *k); 
double Value(double n1, double n2, double hue); 
void   RGBtoHS(BYTE r,BYTE g,BYTE b,double *h,double *s); 
 
//亮度调整 
BOOL AdjustDIBBrightness(HDIB hDib,int v); 
void ChangeBrightness(int nDelta,BYTE *r,BYTE *g,BYTE *b); 
//对比度调整 
BOOL AdjustDIBContrast(HDIB hDib,int v); 
void IncreaseContrast(BYTE *pByte,const int Low,const int High,const float Grad); 
void DecreaseContrast(BYTE *pByte,const int Level, const float Grad); 
void ChangeContrast(int nDelta,BYTE *r,BYTE *g,BYTE *b); 
//  图象处理函数 
BOOL ConvoluteDIB24(HDIB hDib,KERNEL *lpKernel,int Strength,int nKernelNum); 
BOOL ConvoluteDIB08(HDIB hDib,KERNEL *lpKernel,int Strength,int nKernelNum); 
void DoConvoluteDlB24(int *red,int *green,int *blue,int i,int j,WORD wBytesPerLine,LPBYTE lpDIBits, KERNEL *lpKernel); 
void DoConvoluteDlB08(int *gray,int i,int j,WORD wBytesPerLine,LPBYTE lpDIBits, KERNEL *lpKernel); 
//高通滤波器 
BOOL HighPassDIB(HDIB hDib,int Strength,int nAlgorithm); 
//低通滤波器 
BOOL LowPassDIB(HDIB hDib,int Strength,int nAlgorithm); 
//中值滤波 
BOOL MedianFilterDIB24(HDIB hDib); 
void DoMedianFilterDIB24(int *red,int *green,int *blue,int i,int j,WORD wBytesPerLine,LPBYTE lpDIBits); 
BOOL MedianFilterDIB08(HDIB hDib); 
void DoMedianFilterDIB08(int *gray,int i,int j,WORD wBytesPerLine, LPBYTE lpDIBits); 
int compare(const void *e1, const void *e2); 
BOOL MedianPassDIB(HDIB hDib); 
//二值化函数 
BOOL BinaryDIB08(HDIB hDib); 
//数据读取函数 
BOOL ReadDIB08(LPCTSTR lpDataFile,HDIB hDib);