|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "itemcurve.h"
|
|
|
|
|
|
#include ".\ActionItem.h"
|
|
|
|
|
|
#include "CurveEditorBase.h"
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* ע<EFBFBD>⣺<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ѽ<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>
|
|
|
|
|
|
*
|
|
|
|
|
|
* ԭ CItemCurveEdit <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֱ༭ģʽ<EFBFBD>Ĵ<EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* - CItemCurveEditBase : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* - CItemCurveEditDefault : Ĭ<EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD>ڵ㣩
|
|
|
|
|
|
* - CItemCurveEditLinear : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD>ڵ㣩
|
|
|
|
|
|
* - CItemCurveEditCosine : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>Ӱ<EFBFBD>죩
|
|
|
|
|
|
* - CItemCurveEditSpline : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|
|
|
|
|
*
|
|
|
|
|
|
* <EFBFBD><EFBFBD>ǰ CItemCurveEdit <EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ࣺ
|
|
|
|
|
|
* - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>нӿڲ<EFBFBD><EFBFBD>䣬ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* - <EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> m_currentEditor<EFBFBD><EFBFBD>ItemCurveEditBase*<EFBFBD><EFBFBD>
|
|
|
|
|
|
* - <EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>༭<EFBFBD><EFBFBD>
|
|
|
|
|
|
* - ֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>̬<EFBFBD>л<EFBFBD><EFBFBD>༭ģʽ
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
class HandleDrawer;
|
|
|
|
|
|
namespace NItem
|
|
|
|
|
|
{
|
|
|
|
|
|
#define DRAG_NODE_DEFAULT 0 //ֱ<><D6B1><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>ǰ<EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
|
#define DRAG_NODE_LINE 1 //<2F><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>ڵ<EFBFBD>
|
|
|
|
|
|
#define DRAG_NODE_COS 2 //<2F><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>ڵ<EFBFBD>
|
|
|
|
|
|
#define DRAG_NODE_SPLINE 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>ڵ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
#define DRAG_LINE_COLOR RGB(0,153,255)
|
|
|
|
|
|
|
|
|
|
|
|
// CItemCurveEdit: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>࣬ת<E0A3AC><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı༭<C4B1><E0BCAD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
class CItemCurveEdit : public CItemCurve
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CItemCurveEdit(CSigmaDoc* ppDoc);
|
|
|
|
|
|
virtual ~CItemCurveEdit(void);
|
|
|
|
|
|
|
|
|
|
|
|
// ʵ<>ֽӿڣ<D3BF>ת<EFBFBD><D7AA><EFBFBD><EFBFBD> m_currentEditor
|
|
|
|
|
|
void OnDraw(CXyDC* pDC) override;
|
|
|
|
|
|
void OnLButtonDblClk(UINT nFlags, CPoint point) override;
|
|
|
|
|
|
void OnLButtonDown(CDC* pDC, UINT nFlags, CPoint point, int vk) override;
|
|
|
|
|
|
int OnMouseMove(CDC* pDC, UINT nFlags, CPoint point) override;
|
|
|
|
|
|
void OnLButtonUp(CDC* pDC, UINT nFlags, CPoint point, int vk) override;
|
|
|
|
|
|
BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) override;
|
|
|
|
|
|
BOOL OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) override;
|
|
|
|
|
|
BOOL OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) override;
|
|
|
|
|
|
int GetSubMenu() override;
|
|
|
|
|
|
void SetPos(POSITION pos) override;
|
|
|
|
|
|
void Clear(void);
|
|
|
|
|
|
|
|
|
|
|
|
void Draw(CDC* pDC);
|
|
|
|
|
|
void DrawAssistant(CDC* pDC, int mouseX, int mouseY) override;
|
|
|
|
|
|
int GetNumberOfNode();
|
|
|
|
|
|
void EreaseHandles(CDC* pDC);
|
|
|
|
|
|
|
|
|
|
|
|
// <20>༭<EFBFBD><E0BCAD><EFBFBD>л<EFBFBD>
|
|
|
|
|
|
void SetCurveState(int state, CDC* pDC) override;
|
|
|
|
|
|
void SwitchEditMode(int mode); // <20><>ʽ<EFBFBD>л<EFBFBD><D0BB>༭ģʽ
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Խӿڣ<D3BF>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
void EndEdit(void);
|
|
|
|
|
|
void CancelAll(void);
|
|
|
|
|
|
BOOL IsCanCancelAll(void);
|
|
|
|
|
|
int HitTestHandle(CPoint point);
|
|
|
|
|
|
void DeleteHandle(int nIndex);
|
|
|
|
|
|
int AddHandle(CPoint point);
|
|
|
|
|
|
CCurveEx* GetCurCurve(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void AttachProcess(CPointList& oldPoints, CPointList& newPoints);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void DrawMoveLine(void);
|
|
|
|
|
|
virtual void GetMarkCurve(void);
|
|
|
|
|
|
virtual BOOL IsCanAddHandle(CPoint point, double* pl0 = nullptr);
|
|
|
|
|
|
virtual void GetXY(CCurveEx* pValue, int nIndex, dfPoint& point);
|
|
|
|
|
|
|
|
|
|
|
|
CPoint2D GetCDown() const;
|
|
|
|
|
|
CPoint2D GetCLast() const;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
// <20><><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>е<EFBFBD>ǰ<EFBFBD>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
std::shared_ptr<CurveEditorBase> m_currentEditor;
|
|
|
|
|
|
CSigmaDoc* m_pDoc; // <20><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>༭<EFBFBD><E0BCAD>
|
|
|
|
|
|
|
|
|
|
|
|
int GetCurrentEditMode() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>༭<EFBFBD><E0BCAD>
|
|
|
|
|
|
std::shared_ptr<CurveEditorBase> CreateEditor(int mode);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
};
|