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.

71 lines
2.1 KiB
C

1 month ago
#pragma once
#include "itemfocusrect.h"
#include ".\itemselectcurve.h"
#pragma pack(1)
struct DeletionCondition
{
int kind; //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0--<2D><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD> 1--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double threshold; //<2F><><EFBFBD><EFBFBD>ֵ
int method; //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ɸѡ<C9B8><D1A1><EFBFBD><EFBFBD> <<3C><><EFBFBD><EFBFBD>ֵ
int ConditionDeletion;
LPCTSTR layerName; //<2F><>λ
};
#pragma pack()
namespace NItem
{
#define DELETE_DEFAULT 0 //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>η<EFBFBD>Χ<EFBFBD><CEA7>Ԫ<EFBFBD><D4AA>
#define DELETE_IN 1 //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
#define DELETE_OUT 2 //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
#define DELETE_CONDITION 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>Ԫ<EFBFBD><D4AA>
class CItemDelete :
public CItemFocusRect
{
public:
CItemDelete(CSigmaDoc * ppDoc);
virtual ~CItemDelete(void);
public:
void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) override;
int OnMouseMove(CDC *pDC, UINT nFlags, CPoint point) override;
void DoLButtonUp(CDC *pDC) override;
void OnRButtonDown(UINT nFlags, CPoint point) override;
int GetSubMenu() override;
int SetProcessIdea(int nIdea);
int GetProcessIdea(void);
int GetSelectWidthRegion(CPositionList& SelectList, POSITION curvePostion, int nOutSelect);
int IsInside(CCurveEx* pRgn, CRect8& rgnRange, COne* pOne);
BOOL CurveInRegion(CCurveEx* pCurve, CPositionList& rgnList); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>,ֻҪ<D6BB><D2AA>һ<EFBFBD><D2BB><EFBFBD>ھͷ<DABE><CDB7><EFBFBD>TRUE
BOOL ElementInRegion(COne* pOne, CPositionList& rgnList); //Ԫ<><D4AA><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ֻҪ<D6BB><D2AA>һ<EFBFBD><D2BB><EFBFBD>ھͷ<DABE><CDB7><EFBFBD>TRUE
int GetCountSelected();
bool IsRegionSelected();
public:
int Delete(void);
void DeleteIn(void);
void DeleteOut(void);
int DeleteCondition(DeletionCondition * condition);
int m_idea; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
CItemSelectCurve *m_pSelectCurve;
//for condition
double value;
int sel;
int mode;
int condition;
CString strLayer;
CList<POSITION, POSITION> m_selectionSet;
bool m_bIsRegionSelected;
////////////
int CurveInRegion(CCurveEx* pCurve, CCurveEx* pRgn);//0Ϊȫ<CEAA><C8AB><EFBFBD>ڷ<EFBFBD>Χ<EFBFBD><CEA7>,1Ϊȫ<CEAA>ڷ<EFBFBD>Χ<EFBFBD><CEA7>,2Ϊ<32><CEAA><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>ֲ<EFBFBD><D6B2>ڷ<EFBFBD>Χ<EFBFBD><CEA7>
void DeleteSelectWidthLength(CList<POSITION,POSITION> &list, double value, int flag);
void DeleteSelectWidthName(CList<POSITION,POSITION> &list, double value, int flag, int type);
BOOL DeleteQualification(double length, double value, int flag);
void DeleteSelection(CList<POSITION, POSITION>* pList);
};
}