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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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);
};
};