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.

88 lines
2.6 KiB
C

1 month ago
/************************************************************************
* Author : wcw
* Version : 1.0
* Date : 23 April 2015
* Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>clipper.h<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
/************************************************************************/
#pragma once
//#include "clipper.h"
class Polygons;
#include <vector>
namespace NClipperLib
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
enum EClipType
{
ectIntersection,
ectUnion,
ectDifference,
ectXor
};
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//enum EPolyType { eptSubject, eptClip };
struct ClipperPoint
{
double x;
double y;
ClipperPoint(){ }
ClipperPoint(double x0,double y0){ x = x0; y = y0;}
};
typedef std::vector<ClipperPoint> ClipperPolygon;
typedef std::vector<ClipperPolygon> ClipperPolygons;
class AFX_EXT_CLASS CClipperHandler
{
public:
CClipperHandler(void);
CClipperHandler(unsigned int n_Prec);
~CClipperHandler(void);
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><CEBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵽solution<6F><6E>,eTypeΪ<65><CEAA><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><E0BDBB><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(exclusive or)*/
bool Execute(ClipperPolygons& pPolySubject, ClipperPolygons& pPolyClip, ClipperPolygons& pPolySolution, EClipType eType);
/** @brief <20><><EFBFBD>þ<EFBFBD><C3BE>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ */
void SetPrecison(unsigned int nPrec);
/** @brief <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>*/
int GetPrecison(void) {return m_nPrec; }
/** @<40><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>С<EFBFBD><D0A1><EFBFBD>꣬ʧ<EAA3AC>ܷ<EFBFBD><DCB7><EFBFBD>false*/
bool GetMinimumValue(ClipperPolygons& sourcePolygons, double& xmin, double& ymin );
/** @<40><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬ʧ<EAA3AC>ܷ<EFBFBD><DCB7><EFBFBD>false*/
bool GetMaximumValue(ClipperPolygons& sourcePolygons, double& xmax, double& ymax );
private:
/** @brief <20><>ClipperPolygongs<67><73><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ƫ<EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD>;<EFBFBD><CDBE><EFBFBD> */
bool ClipPolysToPolygons(ClipperPolygons* pSourcePolygons, Polygons* pDestPolygons);
bool PolygonToClipPolys(Polygons* pSourcePolygons, ClipperPolygons* pDestPolygons);
/** @brief <20>ڲ<EFBFBD>ִ<EFBFBD><D6B4>*/
//bool Execute()
/** @breif <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD>ȡ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
bool GetOperationParas();
ClipperPolygons* m_pSubject;
ClipperPolygons* m_pClip;
unsigned int m_nPrec; //<2F><><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>ʾ<EFBFBD><CABE>ȷ<EFBFBD><C8B7>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> ȱʡΪ8
double m_dXOffset;//x<><78><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
double m_dYOffset;//y<><79><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
//int m_nXInitOffset; //X<><58>ʼƫ<CABC><C6AB><EFBFBD><EFBFBD>
//long64 m_nXScaleOffset; //X<>Ŵ<EFBFBD><C5B4><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
//int m_nYInitOffset; //Y<><59>ʼƫ<CABC><C6AB><EFBFBD><EFBFBD>
//long64 m_nYScaleOffset; //Y<>Ŵ<EFBFBD><C5B4><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
//double m_dScale ; // <20>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD>
//double m_dXOffset; // Xƫ<58><C6AB><EFBFBD><EFBFBD>
//double m_dYOffset; // yƫ<79><C6AB><EFBFBD><EFBFBD>
};
} //namespace