dibapi.h
上传用户:gzboli
上传日期:2013-04-10
资源大小:471k
文件大小:8k
源码类别:

图片显示

开发平台:

Visual C++

  1. /******************************************************************************** 
  2.  *  DIBAPI.H
  3.  * 
  4.  *  Header file for Device-Independent Bitmap (DIB) API.  Provides 
  5.  *  function prototypes and constants for DIB functions 
  6.  ********************************************************************************/ 
  7. //#define LPSTR LPBYTE
  8. #ifndef __DIBAPI_H_
  9. #define __DIBAPI_H_
  10. //////////////////////////////////////////////////////////
  11. /* Handle to a DIB */ 
  12. #define HDIB HANDLE 
  13. // Dib Header Marker - used in writing DIBs to files 
  14. #define DIB_HEADER_MARKER ((WORD) ('M' << 8) | 'B') 
  15. /* DIB constants */ 
  16. #define PALVERSION 0x300 
  17. /* DIB Macros*/
  18. #define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4) 
  19. #define IS_WIN30_DIB(lpbi)  ((*(LPDWORD)(lpbi)) == sizeof(BITMAPINFOHEADER)) 
  20. #define RECTWIDTH(lpRect)   ((lpRect)->right - (lpRect)->left) 
  21. #define RECTHEIGHT(lpRect)  ((lpRect)->bottom - (lpRect)->top) 
  22. /* DIB copy constants */ 
  23. #define PW_WINDOW 1 
  24. #define PW_CLIENT 2
  25. // Image position in Canvas
  26. #define LEFT_UP 1
  27. #define CENTER_UP 2
  28. #define RIGHT_UP 3
  29. #define LEFT_CENTER 4
  30. #define CENTER_CENTER 5
  31. #define CENTER_RIGHT        6
  32. #define LEFT_DOWN 7
  33. #define CENTER_DOWN 8
  34. #define RIGHT_DOWN 9
  35. /* Gray Method */
  36. #define MEAN_GRAY 0
  37. #define MAXIMUM_GRAY 1
  38. #define WEIGHT_GRAY 2
  39. /* Color Model */
  40. #define RGB_COLOR 0
  41. #define CMYK_COLOR 1
  42. #define HSI_COLOR 2
  43. #define HLS_COLOR 3
  44. #define UNDEFINED (-1.0)
  45. // Separate color
  46. #define SEPARATE_RED 1
  47. #define SEPARATE_GREEN 2
  48. #define SEPARATE_BLUE 3
  49. // Filte color
  50. #define FILTE_RED 1
  51. #define FILTE_GREEN 2
  52. #define FILTE_BLUE 3
  53. // Filter algorithm
  54. #define FILTER1 1
  55. #define FILTER2 2
  56. #define FILTER3 3
  57. // Edge enhancement algorithm
  58. #define VERT 1
  59. #define HORZ 2
  60. #define VERTHORZ 3
  61. #define NORTH 4
  62. #define NORTHEAST 5
  63. #define EAST 6
  64. #define SOUTH 7
  65. #define SOUTHEAST 8
  66. #define SOUTHWEST 9
  67. #define WEST 10
  68. #define NORTHWEST 11
  69. #define LAP1 12
  70. #define LAP2 13
  71. #define LAP3 14
  72. #define LAP4 15
  73. #define SOBEL 16
  74. #define HOUGH 17
  75. /* DIB Macros*/ 
  76. // WIDTHBYTES performs DWORD-aligning of DIB scanlines.  The "bits" 
  77. // parameter is the bit count for the scanline (biWidth * biBitCount), 
  78. // and this macro returns the number of DWORD-aligned bytes needed  
  79. // to hold those bits. 
  80. #define BOUND(x, mn, mx) ((x) < (mn) ? (mn) : ((x) > (mx) ? (mx) : (x)))
  81. #define WaitCursorBegin() HCURSOR hcURSOR = SetCursor(LoadCursor(NULL, IDC_WAIT))
  82. #define WaitCursorEnd() SetCursor(hcURSOR) 
  83.  
  84. // PCX文件头结构
  85. typedef struct{
  86.  BYTE bManufacturer;
  87.  BYTE bVersion;
  88.  BYTE bEncoding;
  89.  BYTE bBpp;
  90.  WORD wLeft;
  91.  WORD wTop;
  92.  WORD wRight;
  93.  WORD wBottom;
  94.  WORD wXResolution;
  95.  WORD wYResolution;
  96.  BYTE bPalette[48];
  97.  BYTE bReserved;
  98.  BYTE bPlanes;
  99.  WORD wLineBytes;
  100.  WORD wPaletteType;
  101.  WORD wSrcWidth;
  102.  WORD wSrcDepth;
  103.  BYTE bFiller[54];
  104. } PCXHEADER;
  105. /* function prototypes */ 
  106. // DIB initialization
  107. HDIB CreateDIB(DWORD, DWORD, WORD); 
  108. HDIB CreateDefaultDIB(DWORD dwWidth, DWORD dwHeight);
  109. void DestroyDIB(HDIB); 
  110. HDIB LoadDIB (LPTSTR); 
  111. BOOL SaveDIB (HDIB, LPTSTR); 
  112. HDIB ReadDIBFile(HANDLE); 
  113. BOOL WriteDIBFile(HDIB hDib, HANDLE hFile);
  114. // DIB attributes
  115. DWORD BytesPerLine(LPSTR lpDIB);
  116. DWORD BytesPerLine(HDIB hDIB);
  117. DWORD DIBlockSize(HDIB hDIB);
  118. DWORD DIBlockSize(LPSTR lpDIB);
  119. long DIBHeight (HDIB hDIB); 
  120. long DIBWidth (HDIB hDIB); 
  121. WORD DIBNumColors (HDIB hDIB); 
  122. WORD DIBBitCount (LPSTR lpDIB); 
  123. WORD DIBBitCount (HDIB hDIB); 
  124. WORD PaletteSize (HDIB hDIB); 
  125. // DIB display
  126. BOOL PaintBitmap(HDC, LPRECT, HBITMAP, LPRECT, HPALETTE, DWORD);
  127. BOOL PaintDIB(HDC, LPRECT, HDIB, LPRECT, HPALETTE, DWORD);
  128. BOOL DitherDisplayDIB(HDC, LPRECT, HDIB, LPRECT, DWORD);
  129. // DIB operations
  130. HBITMAP DIBToDIBSection(LPSTR lpDIB);
  131. HBITMAP DIBToDIBSection(HDIB hDIB);
  132. HDIB DIBSectionToDIB(HBITMAP hBitmap);
  133. HDIB ConvertDIBFormat(LPSTR lpSrcDIB, UINT nWidth, UINT nHeight, UINT nbpp, BOOL bStretch, HPALETTE hPalSrc);
  134. HDIB ConvertDIBFormat(HDIB hDIB, UINT nWidth, UINT nHeight, UINT nbpp, BOOL bStretch, HPALETTE hPalSrc);
  135. HDIB ConvertDIBFormat(LPSTR lpSrcDIB, UINT nbpp, HPALETTE hPalSrc);
  136. HDIB ConvertDIBFormat(HDIB hDIB, UINT nbpp, HPALETTE hPalSrc);
  137. HDIB BitmapToDIB (HBITMAP, HPALETTE); 
  138. HDIB BitmapToDIB (HBITMAP, HPALETTE, WORD);
  139. HDIB ChangeBitmapFormat (HBITMAP, WORD, DWORD, HPALETTE); 
  140. HBITMAP DIBToBitmap (HDIB hDIB, HPALETTE hPal); 
  141. HDIB ChangeDIBFormat (HDIB, WORD, DWORD); 
  142. // DIB palette
  143. HPALETTE CreateDIBPalette(LPSTR lpDIB);
  144. HPALETTE CreateDIBPalette(HDIB hDIB); 
  145. BOOL DisplayPalette(HDC hDC, LPRECT lpRect, HPALETTE hPal);
  146. HPALETTE CopyPalette(HPALETTE hPalSrc);
  147. HPALETTE GetSystemPalette(void); 
  148. int PalEntriesOnDevice (HDC hDC); 
  149. HPALETTE CreateIdentifyPalette(HPALETTE hPalSrc);
  150. BOOL MapDIBColorsToPalette(HDIB hDIB, HPALETTE hPalette);
  151. HPALETTE CreateDitherPalette();
  152. HDIB CreateDither8BppDIB(HDIB hDIB);
  153. // DIB capture
  154. HBITMAP CopyScreenToBitmap (LPRECT); 
  155. HBITMAP CopyWindowToBitmap (HWND, WORD); 
  156. HBITMAP CopyClientRectToBitmap(HWND hWnd, LPRECT lpRect);
  157. HDIB CopyScreenToDIB (LPRECT); 
  158. HDIB CopyWindowToDIB (HWND, WORD); 
  159. HDIB CopyClientRectToDIB(HWND hWnd, LPRECT lpRect); 
  160. // effect display
  161. void DrawTransparentBitmap(HDC, HBITMAP, LONG, LONG, COLORREF);
  162. BOOL Fade(int nDeltaR, int nDeltaG, int nDeltaB, 
  163.   BYTE rm, BYTE gm, BYTE bm,
  164.   BYTE *r, BYTE *g, BYTE *b);
  165. // Helper
  166. //HANDLE CopyHandle(HANDLE h);
  167. void Delay(DWORD dwDelayTime);
  168. // DIB transform
  169. HBITMAP CropBitmap(HBITMAP, LPRECT);
  170. HDIB CropDIB(HDIB, LPRECT);
  171. HDIB CutDIB(HDIB, LPRECT);
  172. HDIB MergeDIB(HDIB hDib1, HDIB hDib2, POINT ptTopLeft);
  173. HDIB TransparentMergeDIB(HDIB hDIB1, HDIB hDIB2, POINT ptTopLeft, COLORREF crTransparent);
  174. HBITMAP RotateBitmapNT(HBITMAP hBitmap, double fDegrees, COLORREF clrBack);
  175. HBITMAP RotateBitmap(HBITMAP hBitmap, double fDegrees, COLORREF clrBack);
  176. HDIB RotateDIB(HDIB hDIB, double fDegrees, COLORREF clrBack);
  177. HDIB RotateDIB(HDIB hDib);
  178. HDIB FlipHorzDIB(HDIB hDib);
  179. HDIB FlipVertDIB(HDIB hDib);
  180. HDIB ChangeDIBSize(HDIB hDIB, int nWidth, int nHeight);
  181. HDIB ChangeDIBCanvasSize(HDIB hDIB, int nWidth, int nHeight, int nPosition);
  182. // Color quantization
  183. HPALETTE CreateOctreePalette(HDIB hDIB, UINT nMaxColors, UINT nColorBits);
  184. HPALETTE CreateOctreePalette(LPSTR lpDIB, UINT nMaxColors, UINT nColorBits);
  185. HPALETTE BuildOctreePalette(HANDLE hImage, UINT nMaxColors, UINT nColorBits);
  186. // color process
  187. HDIB SeparateRGBfromDIB(HDIB hDib, int nIndex);
  188. HDIB FilteRGBfromDIB(HDIB hDib, int nIndex);
  189. HDIB ColorQuantizeDIB(HDIB hDIB, UINT nColorBits, UINT nMaxColors);
  190. HPALETTE ConvertToGrayscale(HDIB hDib, int nMethod, 
  191.     double fRedWeight, double fGreenWeight, double fBlueWeight);
  192. BOOL AdjustDIBColor(HDIB hDib, int nColorModel, int v1, int v2, int v3);
  193. BOOL AdjustDIBBrightness(HDIB hDib, int v);
  194. BOOL AdjustDIBContrast(HDIB hDib, int v);
  195. void RGBtoHSI(BYTE r, BYTE g, BYTE b, double *h, double *s, double *i);
  196. void HSItoRGB(double h, double s, double i, BYTE *r, BYTE *g, BYTE *b);
  197. void RGBtoHLS(BYTE r, BYTE g, BYTE b, double *h, double *l, double *s);
  198. void HLStoRGB(double h, double l, double s, BYTE *r, BYTE *g, BYTE *b);
  199. void CMYKtoRGB(BYTE c, BYTE m, BYTE y, BYTE k, BYTE *r, BYTE *g, BYTE *b);
  200. void RGBtoCMYK(BYTE r, BYTE g, BYTE b, BYTE *c, BYTE *m, BYTE *y, BYTE *k);
  201. void ChangeContrast(int nDelta, BYTE *r, BYTE *g, BYTE *b);
  202. void ChangeBrightness(int nDelta, BYTE *r, BYTE *g, BYTE *b);
  203. //////////////////////////////////////////////////////////
  204. //Microsoft
  205. BOOL WINAPI  PaintDIB (HDC, LPRECT, HDIB, LPRECT, CPalette* pPal);
  206. BOOL WINAPI  CreateDIBPalette(HDIB hDIB, CPalette* cPal);
  207. LPSTR WINAPI  FindDIBBits (LPSTR lpbi);
  208. long WINAPI  DIBWidth (LPSTR lpDIB);
  209. long WINAPI  DIBHeight (LPSTR lpDIB);
  210. WORD WINAPI  PaletteSize (LPSTR lpbi);
  211. WORD WINAPI  DIBNumColors (LPSTR lpbi);
  212. HGLOBAL WINAPI  CopyHandle (HGLOBAL h);
  213. BOOL WINAPI  SaveDIB (HDIB hDib, CFile& file);
  214. HDIB WINAPI  ReadDIBFile(CFile& file);
  215. //my addment**************************************//
  216. HDIB WINAPI GenBmp(int iWidth,int iHeight,int iBits, const BYTE* pByte);
  217. HDIB WINAPI ShowColorBytes(int iWidth,int iHeight, const BYTE* pByte);
  218. HDIB WINAPI ShowJPEG(int iWidth,int iHeight,const BYTE* pByte);
  219. BOOL WINAPI  DIBToPCX256(LPSTR lpDIB, LPCTSTR lpszPathName);
  220. HDIB WINAPI  ReadPCX256(LPCTSTR lpszPathName);
  221. #endif //__DIBAPI_H_