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.

72 lines
2.0 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD>: ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
//<2F><><EFBFBD><EFBFBD>: 2009-7-15
//////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "Xy.h"
#include "CurveAnd.h"
class AFX_EXT_CLASS CCutOut
{
public:
CCutOut(void);
virtual ~CCutOut(void);
public:
CXy* GetXY(void);
void SetXY(CXy* pXY); //<2F>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ͼ֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetSourceCurveRange(CCurveEx* pCurveRange); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫָ<D2AA><D6B8>Դ<EFBFBD><D4B4><EFBFBD>ߣ<EFBFBD><DFA3>Ա<EFBFBD><D4B1>жϲ<D0B6><CFB2><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>
int CutOut(CCurveEx* pCurveRange, CPositionList* values);
int CutOut(CCurveEx* pCurveRange);
int CutOutOld(CCurveEx* pCurveRange);
CPositionList m_plDel, m_plAdd; //<2F><>ͼ<EFBFBD><CDBC><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD>Ԫ<EFBFBD>ؼ<EFBFBD><D8BC>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ӵ<EFBFBD>Ԫ<EFBFBD><D4AA>
double m_dMiniCurveSmoothStep;
void ClearList(void);
void DeleteElement(CPositionList& plDel);
protected:
int CutOutCurveSolid(POSITION pos, CCurveAnd& ca, COne* pSourceOne, CPositionList& plAdd);
int CutOutCurve (POSITION pos, CCurveAnd& ca, COne* pSourceOne, CPositionList& plAdd);
int RemoveFlags(CHowToViewCurve* pvc, UINT nFlagsType);
CHowToViewCurve* GetSolidHowToViewCurve(CHowToViewCurve* pvc);
CHowToViewCurve* GetPlineHowToViewCurve(CHowToViewCurve* pvc);
protected:
CCurveEx* m_pSourceCurveRange;
CXy* m_pXY;
private:
/**
* <EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>沿<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>غ<EFBFBD>
*
* \param mainCurve
* \param subCurve
* \return
*/
bool IsCurveStartsWith(const CCurveEx& mainCurve, const CCurveEx& subCurve) const;
};
class AFX_EXT_CLASS CCutIn : public CCutOut
{
public:
CCutIn(void);
virtual ~CCutIn(void);
int CutIn(CCurveEx* pCurveRange);
protected:
int CutInCurveSolid (POSITION pos, CCurveAnd& ca, COne* pSourceOne, CPositionList& plAdd);
int CutInCurve (POSITION pos, CCurveAnd& ca, COne* pSourceOne, CPositionList& plAdd);
BOOL CutInImage(CImageInsert* pImage, CCurveEx* pCurveRange);
BOOL CutInMesh(CMesh* pMesh, CCurveEx* pCurveRange);
CCurveEx* GetXorRange(CRect8& rect, CCurveEx* pCurveRange);
};