#pragma once #include "itemfocusrect.h" #include "itemselectcurve.h" #include "itemcurve.h" namespace NItem { /** * 曲线打断类 */ class CItemBreakCurve : public CItemFocusRect { public: CItemBreakCurve(CSigmaDoc * ppDoc); virtual ~CItemBreakCurve(void); void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) override; int OnMouseMove(CDC *pDC, UINT nFlags, CPoint point) override; void OnRButtonDown(UINT nFlags, CPoint point) override; void DoLButtonUp(CDC *pDC) override; void OnDraw(CXyDC* pDC) override; void OnDraw(CXyDC* pXyDC, CDC *pDC) override; virtual int ProcessCurve(CCurveEx* pCurve, COne* pOne, CPoint2D* pPoint); int GetSubMenu() override; virtual void Clear(void); void BreakAllEditableCurve(CPositionList& list); bool IsBreaked(); int GetSelectCount(); void HightLightFirstCurve(); protected: void ProcessLButtonUp(void); int BreakOne(COne* pBaseOne, CPtrList& allBaseCurveList); void BreakCurve(CCurveEx* pCurve, CPositionList& list, CRect8* pRect); void BreakCurveWithAction(CCurveEx* pCurve, CPositionList& list, CRect8* pRect); POSITION AddCurve(COne* pBaseOne); POSITION AddCurve(COne* pBaseOne, CCurveEx* pCurve); void sort_location(CList &xy,CCrossPoint &cp,int nSortIndex); void SortLocation(CList &xy, int nSortIndex); CItemSelectCurve *m_pSelectCurve; // 存储打断线 POSITION curPos; CList PointList; BOOL m_bRange; CPositionList AddList, DelList; UINT m_nActionID; //undo信息ID BOOL m_bAutoDelete; int m_bCountSelected; protected: BOOL m_bNoLineValue; //不进行线性插值,在最近节点处打断 bool m_bBreak; }; class CItemBreakCurveDirect : public CItemBreakCurve { public: CItemBreakCurveDirect(CSigmaDoc * ppDoc); virtual ~CItemBreakCurveDirect(void); void OnDraw(CXyDC* pXyDC, CDC *pDC) override; 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 OnRButtonDown(UINT nFlags, CPoint point) override; BOOL OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) override; virtual void Clear(void); protected: CItemCurve * m_pItemCurve; }; };