PPDrawManager.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:8k
源码类别:

CA认证

开发平台:

Visual C++

  1. //
  2. // Class: CPPDrawManager
  3. //
  4. // Compiler: Visual C++
  5. // Tested on: Visual C++ 6.0
  6. // Visual C++ .NET 2003
  7. //
  8. // Version: See GetVersionC() or GetVersionI()
  9. //
  10. // Created: xx/xxxx/2004
  11. // Updated: 21/November/2004
  12. //
  13. // Author: Eugene Pustovoyt pustovoyt@mail.ru
  14. //
  15. // Disclaimer
  16. // ----------
  17. // THIS SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED "AS IS" AND WITHOUT
  18. // ANY WARRANTIES WHETHER EXPRESSED OR IMPLIED. NO REPONSIBILITIES FOR POSSIBLE
  19. // DAMAGES OR EVEN FUNCTIONALITY CAN BE TAKEN. THE USER MUST ASSUME THE ENTIRE
  20. // RISK OF USING THIS SOFTWARE.
  21. //
  22. // Terms of use
  23. // ------------
  24. // THIS SOFTWARE IS FREE FOR PERSONAL USE OR FREEWARE APPLICATIONS.
  25. // IF YOU WISH TO THANK MY WORK, YOU MAY DONATE ANY SUM OF MONEY TO ME 
  26. //  FOR SUPPORT OF DEVELOPMENT OF THIS CLASS.
  27. // IF YOU USE THIS SOFTWARE IN COMMERCIAL OR SHAREWARE APPLICATIONS YOU
  28. // ARE GENTLY ASKED TO DONATE ANY SUM OF MONEY TO THE AUTHOR:
  29. //
  30. //--- History ------------------------------ 
  31. // 2004/03/01  *** Releases version 1.0 ***
  32. //------------------------------------------
  33. // 2004/04/04 [FIX] Removes all MFC classes (CRect, CPoint, CSize).
  34. // 2004/04/13 [ADD] Added a DrawImageList method
  35. //------------------------------------------
  36. // 2004/05/09  *** Releases version 1.1 ***
  37. //------------------------------------------
  38. // 2004/05/12 [ADD] Added support alpha-channel in the icons
  39. //------------------------------------------
  40. // 2004/05/12  *** Releases version 1.2 ***
  41. //------------------------------------------
  42. // 2004/06/06 [FIX] Fixed a resource's leak (don't deleted an object of the pen 
  43. // in DrawRectangle method)
  44. //------------------------------------------
  45. // 2004/07/01  *** Releases version 1.3 ***
  46. //------------------------------------------
  47. ////////////////////////////////////////////////////////////////////
  48. //
  49. // "SmoothMaskImage" and "GetPartialSums" functions by Denis Sarazhinsky (c)2003
  50. // Modified by Eugene Pustovoyt to use with image's mask instead of full color image.
  51. //
  52. /////////////////////////////////////////////////////////////////////
  53. #ifndef _PPDRAWMANAGER_H_
  54. #define _PPDRAWMANAGER_H_
  55. #if _MSC_VER > 1000
  56. #pragma once
  57. #endif // _MSC_VER > 1000
  58. #define USE_SHADE
  59. #ifdef USE_SHADE
  60. #include "CeXDib.h"
  61. #endif
  62. #define PPDRAWMANAGER_SHADOW_XOFFSET 4 // 
  63. #define PPDRAWMANAGER_SHADOW_YOFFSET 4 //
  64. #define PPDRAWMANAGER_SHADOW_XDEPTH 7 // 
  65. #define PPDRAWMANAGER_SHADOW_YDEPTH 7 //
  66. #define PPDRAWMANAGER_SHADOW_COLOR RGB(128, 128, 128)
  67. //Image Effects
  68. #define IMAGE_EFFECT_NONE 0x0000 //No effect
  69. #define IMAGE_EFFECT_GRAYEN 0x0001 //An image will grayen
  70. #define IMAGE_EFFECT_DARKEN 0x0002 //An image will darken
  71. #define IMAGE_EFFECT_LIGHTEN 0x0004 //An image will lighten
  72. #define IMAGE_EFFECT_MONOCHROME 0x0008 //An Image will monochrome
  73. #define IMAGE_EFFECT_MONO_SHADOW 0x0100
  74. #define IMAGE_EFFECT_GRADIENT_SHADOW 0x0200
  75. #define IMAGE_EFFECT_INVERT 0x8000
  76. #define IMAGE_EFFECT_MASK (IMAGE_EFFECT_MONOCHROME | IMAGE_EFFECT_INVERT)
  77. #define IMAGE_EFFECT_SHADOW (IMAGE_EFFECT_MONO_SHADOW | IMAGE_EFFECT_GRADIENT_SHADOW)
  78. class CPPDrawManager  
  79. {
  80. public:
  81. CPPDrawManager();
  82. virtual ~CPPDrawManager();
  83. enum { EFFECT_SOLID = 0,
  84. EFFECT_HGRADIENT,
  85. EFFECT_VGRADIENT,
  86. EFFECT_HCGRADIENT,
  87. EFFECT_VCGRADIENT,
  88. EFFECT_3HGRADIENT,
  89. EFFECT_3VGRADIENT,
  90. #ifdef USE_SHADE
  91. EFFECT_NOISE,
  92. EFFECT_DIAGSHADE,
  93. EFFECT_HSHADE,
  94. EFFECT_VSHADE,
  95. EFFECT_HBUMP,
  96. EFFECT_VBUMP,
  97. EFFECT_SOFTBUMP,
  98. EFFECT_HARDBUMP,
  99. EFFECT_METAL,
  100. #endif
  101. MAX_EFFECTS
  102. };
  103. enum { 
  104. PEN_NULL = 0,
  105. PEN_SOLID,
  106. PEN_DASH,
  107. PEN_DOT,
  108. PEN_DASHDOT,
  109. PEN_DASHDOTDOT,
  110. PEN_DOUBLE,
  111. MAX_PEN_STYLES
  112. };
  113. public:
  114. void  DrawLine(HDC hDC, int xStart, int yStart, int xEnd, int yEnd, COLORREF color, int nStyle = PEN_SOLID, int nSize = 1) const;
  115. void  DrawRectangle(HDC hDC, LPRECT lpRect, COLORREF crLight, COLORREF crDark, int nStyle = PEN_SOLID, int nSize = 1);
  116. void  DrawRectangle(HDC hDC, int left, int top, int right, int bottom, COLORREF crLight, COLORREF crDark, int nStyle = PEN_SOLID, int nSize = 1);
  117. void  GetSizeOfIcon(HICON hIcon, LPSIZE pSize) const;
  118. void  GetSizeOfBitmap(HBITMAP hBitmap, LPSIZE pSize) const;
  119. void  AlphaBitBlt(HDC hDestDC, int nDestX, int nDestY, DWORD dwWidth, DWORD dwHeight, HDC hSrcDC, int nSrcX, int nSrcY, int percent = 100);
  120. void  AlphaChannelBitBlt(HDC hDestDC, int nDestX, int nDestY, DWORD dwWidth, DWORD dwHeight, HDC hSrcDC, int nSrcX, int nSrcY);
  121. void  DrawShadow(HDC hDestDC, int nDestX, int nDestY, DWORD dwWidth, DWORD dwHeight, HBITMAP hMask, BOOL bGradient = FALSE, DWORD dwDepthX = PPDRAWMANAGER_SHADOW_XOFFSET, DWORD dwDepthY = PPDRAWMANAGER_SHADOW_YOFFSET);
  122. void  MaskToDepth(HDC hDC, DWORD dwWidth, DWORD dwHeight, HBITMAP hMask, double * pDepth, BOOL bGradient = FALSE, DWORD dwDepthX = PPDRAWMANAGER_SHADOW_XOFFSET, DWORD dwDepthY = PPDRAWMANAGER_SHADOW_YOFFSET);
  123. void  DarkenByDepth(HDC hDC, int x, int y, DWORD dwWidth, DWORD dwHeight, double * pDepth);
  124. void  SmoothMaskImage(const int ImageWidth, 
  125.     const int ImageHeight,
  126.                     const COLORREF* const pInitImg,
  127.         const int KerWidth,
  128.         const int KerHeight,
  129. double* const pResImg_R = NULL);
  130. void GetPartialSums(const double* const pM,
  131. unsigned int nMRows,
  132. unsigned int nMCols,
  133. unsigned int nPartRows,
  134. unsigned int nPartCols,
  135. double* const pBuff,
  136. double* const pRes);
  137. void  DrawBitmap(HDC hDC, int x, int y, DWORD dwWidth, DWORD dwHeight, HBITMAP hSrcBitmap,
  138. BOOL bUseMask, COLORREF crMask, 
  139. DWORD dwEffect = IMAGE_EFFECT_NONE, 
  140. BOOL bShadow = FALSE, 
  141. DWORD dwCxShadow = PPDRAWMANAGER_SHADOW_XOFFSET, 
  142. DWORD dwCyShadow = PPDRAWMANAGER_SHADOW_YOFFSET,
  143. DWORD dwCxDepth = PPDRAWMANAGER_SHADOW_XDEPTH, 
  144. DWORD dwCyDepth = PPDRAWMANAGER_SHADOW_YDEPTH,
  145. COLORREF clrShadow = PPDRAWMANAGER_SHADOW_COLOR);
  146. void  DrawIcon( HDC hDC, int x, int y, DWORD dwWidth, DWORD dwHeight, HICON hSrcIcon, 
  147. DWORD dwEffect = IMAGE_EFFECT_NONE, 
  148. BOOL bShadow = FALSE, 
  149. DWORD dwCxShadow = PPDRAWMANAGER_SHADOW_XOFFSET, 
  150. DWORD dwCyShadow = PPDRAWMANAGER_SHADOW_YOFFSET,
  151. DWORD dwCxDepth = PPDRAWMANAGER_SHADOW_XDEPTH, 
  152. DWORD dwCyDepth = PPDRAWMANAGER_SHADOW_YDEPTH,
  153. COLORREF clrShadow = PPDRAWMANAGER_SHADOW_COLOR);
  154. void  DrawImageList(HDC hDC, int x, int y, DWORD dwWidth, DWORD dwHeight, HBITMAP hSrcBitmap,
  155. int nIndex, int cx, int cy,
  156. BOOL bUseMask, COLORREF crMask, 
  157. DWORD dwEffect = IMAGE_EFFECT_NONE, 
  158. BOOL bShadow = FALSE, 
  159. DWORD dwCxShadow = PPDRAWMANAGER_SHADOW_XOFFSET, 
  160. DWORD dwCyShadow = PPDRAWMANAGER_SHADOW_YOFFSET,
  161. DWORD dwCxDepth = PPDRAWMANAGER_SHADOW_XDEPTH, 
  162. DWORD dwCyDepth = PPDRAWMANAGER_SHADOW_YDEPTH,
  163. COLORREF clrShadow = PPDRAWMANAGER_SHADOW_COLOR);
  164. HBITMAP CreateImageEffect(HBITMAP hBitmap, DWORD dwWidth, DWORD dwHeight, DWORD dwEffect, BOOL bUseMask = TRUE, COLORREF clrMask = RGB(255, 0, 255), COLORREF clrMono = RGB(255, 255, 255));
  165. COLORREF GrayMirrorColor(COLORREF clrColor);
  166. COLORREF GrayColor(COLORREF clrColor);
  167. COLORREF DarkenColor(COLORREF clrColor, double darken);
  168. COLORREF LightenColor(COLORREF clrColor, double lighten);
  169. COLORREF InvertColor(COLORREF clrColor);
  170. COLORREF PixelAlpha (COLORREF clrSrc, double src_darken, COLORREF clrDest, double dest_darken);
  171. HICON StretchIcon(HICON hIcon, DWORD dwWidth, DWORD dwHeight);
  172. void FillEffect(HDC hDC, DWORD dwEffect, LPCRECT lpRect, COLORREF clrBegin, COLORREF clrMid = 0, COLORREF clrEnd = 0,  BYTE granularity = 0, BYTE coloring = 0);
  173. void FillGradient(HDC hDC, LPCRECT lpRect, COLORREF colorStart, COLORREF colorFinish, BOOL bHorz = TRUE);
  174. void MultipleCopy(HDC hDestDC, int nDestX, int nDestY, DWORD dwDestWidth, DWORD dwDestHeight, HDC hSrcDC, int nSrcX, int nSrcY, DWORD dwSrcWidth, DWORD dwSrcHeight);
  175. #ifdef USE_SHADE
  176. void SetShade(LPCRECT lpRect, UINT shadeID = 0, BYTE granularity = 8, BYTE coloring = 0, COLORREF hicr = 0, COLORREF midcr = 0, COLORREF locr = 0);
  177. CCeXDib m_dNormal/*,m_dh,m_dv*/;
  178. #endif
  179. static short GetVersionI() {return 0x13;}
  180. // static LPCTSTR GetVersionC() {return (LPCTSTR)_T("1.3");}
  181. protected:
  182. BOOL m_bIsAlpha;
  183. };
  184. #endif //_PPDRAWMANAGER_H_