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