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.

93 lines
2.8 KiB
C

1 month ago
#pragma once
#include "itemcurve.h"
#include ".\ActionItem.h"
1 month ago
#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>ģʽ
*/
1 month ago
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)
1 month ago
// CItemCurveEdit: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>࣬ת<E0A3AC><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<C4B1><E0BCAD>ʵ<EFBFBD><CAB5>
1 month ago
class CItemCurveEdit : public CItemCurve
{
public:
CItemCurveEdit(CSigmaDoc* ppDoc);
virtual ~CItemCurveEdit(void);
1 month ago
// ʵ<>ֽӿڣ<D3BF>ת<EFBFBD><D7AA><EFBFBD><EFBFBD> m_currentEditor
1 month ago
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;
1 month ago
void Clear(void);
1 month ago
void Draw(CDC* pDC);
void DrawAssistant(CDC* pDC, int mouseX, int mouseY) override;
int GetNumberOfNode();
void EreaseHandles(CDC* pDC);
1 month ago
// <20><EFBFBD><E0BCAD><EFBFBD>л<EFBFBD>
void SetCurveState(int state, CDC* pDC) override;
void SwitchEditMode(int mode); // <20><>ʽ<EFBFBD>л<EFBFBD><D0BB>༭ģʽ
1 month ago
1 month ago
// <20><><EFBFBD><EFBFBD><EFBFBD>Խӿڣ<D3BF>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
1 month ago
void EndEdit(void);
void CancelAll(void);
BOOL IsCanCancelAll(void);
1 month ago
int HitTestHandle(CPoint point);
void DeleteHandle(int nIndex);
int AddHandle(CPoint point);
1 month ago
CCurveEx* GetCurCurve(void);
1 month ago
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);
1 month ago
};
};