You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
309 lines
8.1 KiB
C
309 lines
8.1 KiB
C
2 years ago
|
// XTPImageEditor.h : interface for the CXTPImageEditorDlg class.
|
||
|
//
|
||
|
// This file is a part of the XTREME COMMANDBARS MFC class library.
|
||
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
||
|
//
|
||
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
||
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
||
|
// CONSENT OF CODEJOCK SOFTWARE.
|
||
|
//
|
||
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
||
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
||
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
||
|
// SINGLE COMPUTER.
|
||
|
//
|
||
|
// CONTACT INFORMATION:
|
||
|
// support@codejock.com
|
||
|
// http://www.codejock.com
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
#if !defined(__XTP_IMAGEEDITORDLG_H__)
|
||
|
#define __XTP_IMAGEEDITORDLG_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
class CXTPImageManagerIconHandle;
|
||
|
class CXTPImageEditorDlg;
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
enum XTPImageEditorTools
|
||
|
{
|
||
|
xtpToolPencil,
|
||
|
xtpToolFill,
|
||
|
xtpToolGetColor,
|
||
|
xtpToolLine,
|
||
|
xtpToolRectangle,
|
||
|
xtpToolCircle
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
#define XTPCOLOR_ERASE (0xFFFEFF)
|
||
|
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// Internal class used int CXTPImageEditorDlg
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPImageEditorPicker : public CStatic
|
||
|
{
|
||
|
DECLARE_DYNAMIC(CXTPImageEditorPicker)
|
||
|
|
||
|
public:
|
||
|
CXTPImageEditorPicker();
|
||
|
|
||
|
public:
|
||
|
void SetColor(COLORREF clr);
|
||
|
COLORREF GetColor();
|
||
|
void SetSelected(BOOL bSelected = TRUE);
|
||
|
|
||
|
protected:
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
|
||
|
afx_msg void OnPaint();
|
||
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
||
|
|
||
|
private:
|
||
|
COLORREF m_clr;
|
||
|
BOOL m_bSelected;
|
||
|
};
|
||
|
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// Internal class used int CXTPImageEditorDlg
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPImageEditorPicture : public CStatic
|
||
|
{
|
||
|
public:
|
||
|
class CAlphaBitmap : public CBitmap
|
||
|
{
|
||
|
public:
|
||
|
CAlphaBitmap(BOOL bAlpha = FALSE)
|
||
|
{
|
||
|
m_bAlpha = bAlpha;
|
||
|
}
|
||
|
public:
|
||
|
void CreateEditorBitmap(int nWidth, int nHeight);
|
||
|
|
||
|
public:
|
||
|
BOOL m_bAlpha;
|
||
|
|
||
|
};
|
||
|
|
||
|
public:
|
||
|
CXTPImageEditorPicture();
|
||
|
~CXTPImageEditorPicture();
|
||
|
|
||
|
public:
|
||
|
void Apply();
|
||
|
void Init(UINT nID, CXTPImageEditorDlg* pParentWnd);
|
||
|
XTPImageEditorTools GetSelectedTool();
|
||
|
COLORREF GetSelectedColor();
|
||
|
CPoint ClientToPicture(CPoint pt);
|
||
|
static void CopyBitmap(CAlphaBitmap* pBitmapCopyTo, CAlphaBitmap* pBitmapCopyFrom, CSize sz, CPoint ptOffset = 0, COLORREF clrTransparentFrom = XTPCOLOR_ERASE, COLORREF clrTransparentTo = XTPCOLOR_ERASE, CDC* pDC = 0);
|
||
|
COLORREF GetPicturePixel(CPoint point);
|
||
|
void FixAlphaLayer(CAlphaBitmap* pBitmap, CAlphaBitmap* pPictureBitmap);
|
||
|
void Undo();
|
||
|
void Redo();
|
||
|
void Clear();
|
||
|
void Copy();
|
||
|
void Paste();
|
||
|
void Load();
|
||
|
void MovePicture(CPoint ptOffset);
|
||
|
void OnPictureChanged();
|
||
|
|
||
|
|
||
|
protected:
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
|
||
|
afx_msg void OnPaint();
|
||
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
||
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
||
|
afx_msg void OnCaptureChanged(CWnd* pWnd);
|
||
|
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
|
||
|
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
|
||
|
|
||
|
public:
|
||
|
CSize m_szPicture;
|
||
|
CSize m_szItem;
|
||
|
CXTPImageEditorDlg* m_pParentWnd;
|
||
|
|
||
|
CDC m_dcPicture;
|
||
|
|
||
|
CAlphaBitmap* m_pCurrentBitmap;
|
||
|
CAlphaBitmap* m_pPictureBitmap;
|
||
|
|
||
|
CList<CAlphaBitmap*, CAlphaBitmap*> m_lstUndo;
|
||
|
CList<CAlphaBitmap*, CAlphaBitmap*> m_lstRedo;
|
||
|
CPoint m_ptTracked;
|
||
|
BOOL m_bTracked;
|
||
|
COLORREF m_clrDraw;
|
||
|
|
||
|
HCURSOR m_hCursorLine;
|
||
|
HCURSOR m_hCursorFillColor;
|
||
|
HCURSOR m_hCursorPencil;
|
||
|
HCURSOR m_hCursorPickColor;
|
||
|
};
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// Internal class used int CXTPImageEditorDlg
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPImageEditorPreview : public CStatic
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
CXTPImageEditorPreview();
|
||
|
|
||
|
public:
|
||
|
void Init(UINT nID, CXTPImageEditorDlg* pParentWnd);
|
||
|
|
||
|
protected:
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
afx_msg void OnPaint();
|
||
|
|
||
|
protected:
|
||
|
CXTPImageEditorDlg* m_pParentWnd;
|
||
|
CSize m_szPicture;
|
||
|
};
|
||
|
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary
|
||
|
// CXTPImageEditorDlg is a CDialog derived class. It represents the dialog
|
||
|
// for icons edition.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPImageEditorDlg : public CDialog
|
||
|
{
|
||
|
private:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Child Tools bar.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class CDlgToolBar : public CXTPToolBar
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
CDlgToolBar()
|
||
|
{
|
||
|
SetIconSize(CSize(16, 16));
|
||
|
SetButtonSize(CSize(23, 23));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPImageEditorDlg object
|
||
|
// Parameters:
|
||
|
// pParent - Points to the objects parent window.
|
||
|
// bCommandBarsEditor - TRUE if Dialog used in Customize mode
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPImageEditorDlg(CWnd* pParent = NULL, BOOL bCommandBarsEditor = FALSE);
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets the icon to edit
|
||
|
// Parameters:
|
||
|
// pHandle - Reference to a CXTPImageManagerIconHandle object that
|
||
|
// represents the handle of the icon.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetIcon(CXTPImageManagerIconHandle& pHandle);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets the icon size to edit.
|
||
|
// Parameters:
|
||
|
// szIcon - Icon size.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetIconSize(CSize szIcon);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves the edited icon
|
||
|
// Parameters:
|
||
|
// pHandle - Handle of the icon
|
||
|
//-----------------------------------------------------------------------
|
||
|
void GetIcon(CXTPImageManagerIconHandle* pHandle);
|
||
|
|
||
|
protected:
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
|
||
|
//{{AFX_VIRTUAL(CXTPImageEditorDlg)
|
||
|
protected:
|
||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||
|
virtual BOOL OnInitDialog();
|
||
|
//}}AFX_VIRTUAL
|
||
|
|
||
|
//{{AFX_MSG(CXTPImageEditorDlg)
|
||
|
afx_msg void OnUpdateButtonTool(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnButtonTool(UINT nID);
|
||
|
afx_msg LRESULT OnKickIdle(WPARAM wp, LPARAM lCount);
|
||
|
afx_msg void OnUpdateButtonUndo(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnButtonUndo();
|
||
|
afx_msg void OnUpdateButtonRedo(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnButtonRedo();
|
||
|
afx_msg void OnButtonClear();
|
||
|
afx_msg void OnButtonCopy();
|
||
|
afx_msg void OnButtonPaste();
|
||
|
afx_msg void OnButtonOpen();
|
||
|
afx_msg void OnMoveButton(UINT nID);
|
||
|
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
|
||
|
afx_msg void OnDestroy();
|
||
|
//}}AFX_MSG
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
private:
|
||
|
void OnPictureChanged();
|
||
|
void OnPickerClick(NMHDR* pNMHDR, LRESULT* pResult);
|
||
|
void OnSelectorClick(UINT id, NMHDR* pNMHDR, LRESULT* pResult);
|
||
|
void OnEraseClick(NMHDR* pNMHDR, LRESULT* pResult);
|
||
|
void SetSelected(CXTPImageEditorPicker* pPicker);
|
||
|
void FixAlphaLayer(LPBYTE pBits, UINT nCount);
|
||
|
|
||
|
public:
|
||
|
enum
|
||
|
{
|
||
|
IDD = XTP_IDD_IMAGEEDITOR_DIALOG // Dialog resource identifier
|
||
|
};
|
||
|
|
||
|
private:
|
||
|
CButton m_gboxTools;
|
||
|
CButton m_gboxMove;
|
||
|
|
||
|
CDlgToolBar m_wndToolbarTools;
|
||
|
CDlgToolBar m_wndToolbarMove;
|
||
|
|
||
|
|
||
|
CXTPImageEditorPicker m_wndSelector[16];
|
||
|
CXTPImageEditorPicker m_wndPicker;
|
||
|
CXTPImageEditorPicker m_wndSelectorErase;
|
||
|
CXTPImageEditorPicture m_wndPicture;
|
||
|
CXTPImageEditorPreview m_wndPreview;
|
||
|
CXTPImageEditorPicker* m_pSelected;
|
||
|
|
||
|
XTPImageEditorTools m_toolSelected;
|
||
|
XTPImageEditorTools m_toolPrevious;
|
||
|
CSize m_szPicture;
|
||
|
BOOL m_bCommandBarsEditor;
|
||
|
|
||
|
private:
|
||
|
friend class CXTPImageEditorPicture;
|
||
|
friend class CXTPImageEditorPreview;
|
||
|
};
|
||
|
|
||
|
#endif // !defined(__XTP_IMAGEEDITORDLG_H__)
|