|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "itemcurve.h"
|
|
|
|
|
|
#include ".\ActionItem.h"
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
|
class CItemCurveEdit : public CItemCurve
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CItemCurveEdit(CSigmaDoc* ppDoc);
|
|
|
|
|
|
virtual ~CItemCurveEdit(void);
|
|
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
virtual void GetXY(CCurveEx* pValue, int nIndex, dfPoint& point);
|
|
|
|
|
|
virtual void Clear(void);
|
|
|
|
|
|
virtual void SetModifiedFlag(BOOL bModified);
|
|
|
|
|
|
virtual void OnDragPointEnding(CPointList* pList);
|
|
|
|
|
|
virtual void OnDragPointEnd(int nIndex);
|
|
|
|
|
|
virtual void OnDragPointMove(int nIndex, CPoint2D pt);
|
|
|
|
|
|
virtual void AttachProcess(CPointList& oldPoints, CPointList& newPoints); //<2F><EFBFBD><F3B6A8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void DrawMoveLine(void);
|
|
|
|
|
|
|
|
|
|
|
|
void Draw(CDC* pDC);
|
|
|
|
|
|
void DrawAssistant(CDC* pDC, int mouseX, int mouseY) override;
|
|
|
|
|
|
int GetNumberOfNode();
|
|
|
|
|
|
void EreaseHandles(CDC* pDC);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
CPoint2D c_down, c_last;
|
|
|
|
|
|
DWORD m_nHandleDrawMode;
|
|
|
|
|
|
COne* m_pBakOne; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ϊ<>˱༭ʱȡ<CAB1><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CPoint m_nMouseMovePoint; //<2F><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>
|
|
|
|
|
|
CPoint m_nLButtonDownPoint;
|
|
|
|
|
|
int m_nModeX, m_nModeY; //Ϊ<>˱༭<CBB1>ٶ<EFBFBD><D9B6><EFBFBD>
|
|
|
|
|
|
bool m_bLButtonDwonWhenMoueseMove;
|
|
|
|
|
|
int typeIndex; //<2F><><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
|
|
|
|
|
COLORREF color = RGB(0, 0, 0); //<2F><>ɫ
|
|
|
|
|
|
double width;
|
|
|
|
|
|
CActionItem* m_pAttachAction;
|
|
|
|
|
|
CPointList NewPointList;
|
|
|
|
|
|
int m_nBeginIndex, m_nEndIndex;
|
|
|
|
|
|
//for spline mode
|
|
|
|
|
|
CCurveEx* m_pMarkCurve; //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
HandleDrawer* m_handleDrawer;
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void DrawOrEraseSelectHandleForMouseMove(CPoint point);
|
|
|
|
|
|
double GetPointOffset(double offset, int nMode);
|
|
|
|
|
|
void GetDragPoint(CPoint2D& dp, CPointList& NewPointList, int& begin, int& end);
|
|
|
|
|
|
void DrawMoveLine(CPointList& NewPointList, BOOL bDrawNode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DrawSelectHandle(int nHandle);
|
|
|
|
|
|
CRect GetRangeWidthIndex(int nIndex);
|
|
|
|
|
|
|
|
|
|
|
|
void DrawHandle(CXyDC* pDC, CCurveEx* pCurve);
|
|
|
|
|
|
void DrawHandle(CXyDC* pDC, double x0, double y0);
|
|
|
|
|
|
void DrawHandlesByCDC(CDC* pDC, CCurveEx* pCurve);
|
|
|
|
|
|
|
|
|
|
|
|
void GetDragSplinePoint(CPoint2D& dp, CPointList& NewPointList, int& begin, int& end);
|
|
|
|
|
|
public:
|
|
|
|
|
|
void GetMarkCurve(void);
|
|
|
|
|
|
int HitTestHandle(CPoint point);
|
|
|
|
|
|
int HitTestHandle(CCurveEx* pValue, CPoint point);
|
|
|
|
|
|
void DeleteHandle(int nIndex);
|
|
|
|
|
|
BOOL InsertHandleWithPointDistance(double x, double y);
|
|
|
|
|
|
int AddHandle(double l0);
|
|
|
|
|
|
int AddHandle(CCurveEx* pValue, dfPoint add);
|
|
|
|
|
|
int AddHandle(CPoint point);
|
|
|
|
|
|
void EndEdit(void);
|
|
|
|
|
|
BOOL IsCanAddHandle(CPoint point, double* pl0 = nullptr);
|
|
|
|
|
|
void CancelAll(void);
|
|
|
|
|
|
BOOL IsCanCancelAll(void);
|
|
|
|
|
|
CRect GetFirstNodeHandleRectFocus(CPoint point);//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetDrawMode(int nModeX, int nModeY);
|
|
|
|
|
|
int GetOffsetMode(void);
|
|
|
|
|
|
CCurveEx* GetCurCurve(void);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
};
|