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.

108 lines
3.3 KiB
C

1 month ago
#pragma once
#include "ItemCurve.h"
#include "ItemArc.h"
#include "ItemSelectElement.h"
namespace NItem
{
class CItemCurveArc :
public CItemCurve
{
public:
CItemCurveArc(CSigmaDoc * ppDoc);
virtual ~CItemCurveArc(void);
protected:
CItemArc* m_pArc;
public:
void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) override;
int OnMouseMove(CDC* pDC, UINT nFlags, CPoint point) override;//, BYTE*& destBuffer, int& destLen);
void OnLButtonUp(CDC* pDC, UINT nFlags, CPoint point, int vk) override;
virtual void SetCurveState(int state, CDC * pDC);
int loop;
BOOL IsArcState(void);
};
class CItemCurveSpline :
public CItemCurveArc
{
public:
CItemCurveSpline(CSigmaDoc * ppDoc);
virtual ~CItemCurveSpline(void);
public:
void OnDraw(CXyDC* pDC) 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;
virtual void SetCurveState(int state, CDC * pDC);
virtual void AppendPoint(void);
void clearSplineData();
BOOL OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) override;
void EraseAuxiliarySpline(CDC * pScreenDC);
void DrawAssistant(CDC * pDC, int mouseX, int mouseY) override;
virtual void AutoClose(void);
virtual POSITION NextCurve(void);
virtual void Undo(void);
virtual void Redo(void);
virtual BOOL IsCanUndo(void);
virtual BOOL IsCanRedo(void);
void DrawSpline(CXyDC* pDC);
void DrawSplineTail(CXyDC* pDC);
void GetSplineRealPoints(CDC *pDC);
void RedrawSplineHead(CXyDC* pDC);
void DrawSplineBody(CXyDC* pDC);
void GetHeadRealPoints(CXyDC* pDC);
void DrawHeadRealPoints(CXyDC * pDC);
BOOL IsSplineState(void);
void RemoveTail(void);
void DrawRealLine(CXyDC * pDC);
BOOL IsOnlyPointListTail(void);
virtual void OnCancel(void) override;
protected:
void CopyPreRealPoints();
void CopySplineHeads(int n);
void CopySplineTails(int n);
BOOL m_bAuxiliarySplineRedraw;
CPointList m_spPointList;//ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽ڵ<DFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
private:
int m_nSplineNodes;
int m_mSmoothStepFactor;
CPointList m_spRealPointList;//ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>߶ε<DFB6><CEB5><EFBFBD><EFBFBD><EFBFBD>
CPointList m_spPreRealPointList;
CPointList m_spCalcPointList;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵļ<DFB5><C4BC><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>б<EFBFBD>
CPointList m_spHeadRealPointList;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5>׶<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>߶ε<DFB6><CEB5><EFBFBD><EFBFBD><EFBFBD>
};
class CItemCurveMerge :
public CItemCurveSpline
{
public:
CItemCurveMerge(CSigmaDoc * ppDoc);
virtual ~CItemCurveMerge(void);
void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) override;
int OnMouseMove(CDC *pDC, UINT nFlags, CPoint point) override;// , BYTE*& destBuffer, int& destLen);
void OnLButtonUp(CDC *pDC, UINT nFlags, CPoint point, int vk) override;
void DrawAssistant(CDC * pDC, int mouseX, int mouseY) override;
virtual BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
void EndCurve();
void AddCurve();
void AutoClose(void);
void ChangeMergeState();
virtual void OnCancel(void) override;
virtual void SetCurveState(int state, CDC * pDC) override;
protected:
void EreaseOldLine();
void DrawLine(dfPoint pt1, dfPoint pt2);
void MergeElement(POSITION pos, CPoint2D& dp);
CItemSelectElement * m_pItemSelect;
CPointList m_ptDisposableList;
public:
BOOL IsMergeState(void);
};
};