XTPImageEditor.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:9k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPImageEditor.h : interface for the CXTPImageEditorDlg class.
  2. //
  3. // This file is a part of the XTREME COMMANDBARS MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTP_IMAGEEDITORDLG_H__)
  22. #define __XTP_IMAGEEDITORDLG_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPImageManagerIconHandle;
  28. class CXTPImageEditorDlg;
  29. //{{AFX_CODEJOCK_PRIVATE
  30. enum XTPImageEditorTools
  31. {
  32. xtpToolPencil,
  33. xtpToolFill,
  34. xtpToolGetColor,
  35. xtpToolLine,
  36. xtpToolRectangle,
  37. xtpToolCircle
  38. };
  39. #define XTPCOLOR_ERASE (0xFFFEFF)
  40. //===========================================================================
  41. // Summary:
  42. //     Internal class used int CXTPImageEditorDlg
  43. //===========================================================================
  44. class _XTP_EXT_CLASS CXTPImageEditorPicker : public CStatic
  45. {
  46. DECLARE_DYNAMIC(CXTPImageEditorPicker)
  47. public:
  48. CXTPImageEditorPicker();
  49. public:
  50. void SetColor(COLORREF clr);
  51. COLORREF GetColor();
  52. void SetSelected(BOOL bSelected = TRUE);
  53. protected:
  54. DECLARE_MESSAGE_MAP()
  55. afx_msg void OnPaint();
  56. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  57. private:
  58. COLORREF m_clr;
  59. BOOL m_bSelected;
  60. };
  61. //===========================================================================
  62. // Summary:
  63. //     Internal class used int CXTPImageEditorDlg
  64. //===========================================================================
  65. class _XTP_EXT_CLASS CXTPImageEditorPicture : public CStatic
  66. {
  67. public:
  68. class CAlphaBitmap : public CBitmap
  69. {
  70. public:
  71. CAlphaBitmap(BOOL bAlpha = FALSE)
  72. {
  73. m_bAlpha = bAlpha;
  74. }
  75. public:
  76. void CreateEditorBitmap(int nWidth, int nHeight);
  77. public:
  78. BOOL m_bAlpha;
  79. };
  80. public:
  81. CXTPImageEditorPicture();
  82. ~CXTPImageEditorPicture();
  83. public:
  84. void Apply();
  85. void Init(UINT nID, CXTPImageEditorDlg* pParentWnd);
  86. XTPImageEditorTools GetSelectedTool();
  87. COLORREF GetSelectedColor();
  88. CPoint ClientToPicture(CPoint pt);
  89. static void CopyBitmap(CAlphaBitmap* pBitmapCopyTo, CAlphaBitmap* pBitmapCopyFrom, CSize sz, CPoint ptOffset = 0, COLORREF clrTransparentFrom = XTPCOLOR_ERASE, COLORREF clrTransparentTo = XTPCOLOR_ERASE, CDC* pDC = 0);
  90. COLORREF GetPicturePixel(CPoint point);
  91. void FixAlphaLayer(CAlphaBitmap* pBitmap, CAlphaBitmap* pPictureBitmap);
  92. void Undo();
  93. void Redo();
  94. void Clear();
  95. void Copy();
  96. void Paste();
  97. void Load();
  98. void MovePicture(CPoint ptOffset);
  99. void OnPictureChanged();
  100. protected:
  101. DECLARE_MESSAGE_MAP()
  102. afx_msg void OnPaint();
  103. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  104. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  105. afx_msg void OnCaptureChanged(CWnd* pWnd);
  106. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  107. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  108. public:
  109. CSize m_szPicture;
  110. CSize m_szItem;
  111. CXTPImageEditorDlg* m_pParentWnd;
  112. CDC m_dcPicture;
  113. CAlphaBitmap* m_pCurrentBitmap;
  114. CAlphaBitmap* m_pPictureBitmap;
  115. CList<CAlphaBitmap*, CAlphaBitmap*> m_lstUndo;
  116. CList<CAlphaBitmap*, CAlphaBitmap*> m_lstRedo;
  117. CPoint m_ptTracked;
  118. BOOL m_bTracked;
  119. COLORREF m_clrDraw;
  120. HCURSOR m_hCursorLine;
  121. HCURSOR m_hCursorFillColor;
  122. HCURSOR m_hCursorPencil;
  123. HCURSOR m_hCursorPickColor;
  124. };
  125. //===========================================================================
  126. // Summary:
  127. //     Internal class used int CXTPImageEditorDlg
  128. //===========================================================================
  129. class _XTP_EXT_CLASS CXTPImageEditorPreview : public CStatic
  130. {
  131. public:
  132. CXTPImageEditorPreview();
  133. public:
  134. void Init(UINT nID, CXTPImageEditorDlg* pParentWnd);
  135. protected:
  136. DECLARE_MESSAGE_MAP()
  137. afx_msg void OnPaint();
  138. protected:
  139. CXTPImageEditorDlg* m_pParentWnd;
  140. CSize m_szPicture;
  141. };
  142. //}}AFX_CODEJOCK_PRIVATE
  143. //===========================================================================
  144. // Summary
  145. //     CXTPImageEditorDlg is a CDialog derived class. It represents the dialog
  146. //     for icons edition.
  147. //===========================================================================
  148. class _XTP_EXT_CLASS CXTPImageEditorDlg : public CDialog
  149. {
  150. private:
  151. //-----------------------------------------------------------------------
  152. // Summary:
  153. //     Child Tools bar.
  154. //-----------------------------------------------------------------------
  155. class CDlgToolBar : public CToolBar
  156. {
  157. public:
  158. CDlgToolBar()
  159. {
  160. m_sizeImage = CSize(16, 16);
  161. m_sizeButton = CSize(23, 23);
  162. }
  163. LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM)
  164. {
  165. if (IsWindowVisible())
  166. {
  167. CFrameWnd* pParent = (CFrameWnd*)GetParent();
  168. if (pParent)
  169. OnUpdateCmdUI(pParent, (BOOL)wParam);
  170. }
  171. return 0L;
  172. }
  173. DECLARE_MESSAGE_MAP()
  174. };
  175. public:
  176. //-----------------------------------------------------------------------
  177. // Summary:
  178. //     Constructs a CXTPImageEditorDlg object
  179. // Parameters:
  180. //     pParent - Points to the objects parent window.
  181. //     bCommandBarsEditor - TRUE if Dialog used in Customize mode
  182. //-----------------------------------------------------------------------
  183. CXTPImageEditorDlg(CWnd* pParent = NULL, BOOL bCommandBarsEditor = FALSE);
  184. public:
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     Sets the icon to edit
  188. // Parameters:
  189. //     pHandle - Reference to a CXTPImageManagerIconHandle object that
  190. //               represents the handle of the icon.
  191. //-----------------------------------------------------------------------
  192. void SetIcon(CXTPImageManagerIconHandle& pHandle);
  193. //-----------------------------------------------------------------------
  194. // Summary:
  195. //     Sets the icon size to edit.
  196. // Parameters:
  197. //     szIcon - Icon size.
  198. //-----------------------------------------------------------------------
  199. void SetIconSize(CSize szIcon);
  200. //-----------------------------------------------------------------------
  201. // Summary:
  202. //     Retrieves the edited icon
  203. // Parameters:
  204. //     pHandle - Handle of the icon
  205. //-----------------------------------------------------------------------
  206. void GetIcon(CXTPImageManagerIconHandle* pHandle);
  207. protected:
  208. //{{AFX_CODEJOCK_PRIVATE
  209. DECLARE_MESSAGE_MAP()
  210. //{{AFX_VIRTUAL(CXTPImageEditorDlg)
  211. protected:
  212. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  213. virtual BOOL OnInitDialog();
  214. //}}AFX_VIRTUAL
  215. //{{AFX_MSG(CXTPImageEditorDlg)
  216. afx_msg void OnUpdateButtonTool(CCmdUI* pCmdUI);
  217. afx_msg void OnButtonTool(UINT nID);
  218. afx_msg LRESULT OnKickIdle(WPARAM wp, LPARAM lCount);
  219. afx_msg void OnUpdateButtonUndo(CCmdUI* pCmdUI);
  220. afx_msg void OnButtonUndo();
  221. afx_msg void OnUpdateButtonRedo(CCmdUI* pCmdUI);
  222. afx_msg void OnButtonRedo();
  223. afx_msg void OnButtonClear();
  224. afx_msg void OnButtonCopy();
  225. afx_msg void OnButtonPaste();
  226. afx_msg void OnButtonOpen();
  227. afx_msg void OnMoveButton(UINT nID);
  228. afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
  229. afx_msg void OnDestroy();
  230. //}}AFX_MSG
  231. //}}AFX_CODEJOCK_PRIVATE
  232. private:
  233. void OnPictureChanged();
  234. void OnPickerClick(NMHDR* pNMHDR, LRESULT* pResult);
  235. void OnSelectorClick(UINT id, NMHDR* pNMHDR, LRESULT* pResult);
  236. void OnEraseClick(NMHDR* pNMHDR, LRESULT* pResult);
  237. void SetSelected(CXTPImageEditorPicker* pPicker);
  238. void FixAlphaLayer(LPBYTE pBits, UINT nCount);
  239. public:
  240. enum
  241. {
  242. IDD = XTP_IDD_IMAGEEDITOR_DIALOG        // Dialog resource identifier
  243. };
  244. private:
  245. CButton m_gboxTools;
  246. CButton m_gboxMove;
  247. CDlgToolBar m_wndToolbarTools;
  248. CImageList m_ilToolbarTools;
  249. CDlgToolBar m_wndToolbarMove;
  250. CImageList m_ilToolbarMove;
  251. CXTPImageEditorPicker m_wndSelector[16];
  252. CXTPImageEditorPicker m_wndPicker;
  253. CXTPImageEditorPicker m_wndSelectorErase;
  254. CXTPImageEditorPicture m_wndPicture;
  255. CXTPImageEditorPreview m_wndPreview;
  256. CXTPImageEditorPicker* m_pSelected;
  257. XTPImageEditorTools m_toolSelected;
  258. XTPImageEditorTools m_toolPrevious;
  259. CSize m_szPicture;
  260. BOOL m_bCommandBarsEditor;
  261. private:
  262. friend class CXTPImageEditorPicture;
  263. friend class CXTPImageEditorPreview;
  264. };
  265. #endif // !defined(__XTP_IMAGEEDITORDLG_H__)