// first goes in then out to get capped corners vector<Poly> Clipping::getShrinkedCapped(const vector<Poly> &polys, double distance, JoinType jtype, double miterdist) { CL::Polygons cpolys = getClipperPolygons(polys); CL::Polygons offset1 = CLOffset(cpolys, -2*CL_FACTOR*distance, CLType(jtype), 0);// CL::jtRound); CL::Polygons offset = CLOffset(offset1, 1*CL_FACTOR*distance, CLType(jtype), 0); double z=0, extrf=1.;; if (polys.size()>0) { z= polys.back().getZ(); extrf = polys.back().getExtrusionFactor(); } return getPolys(offset,z,extrf); }
void Clipping::addPolys(const vector<Poly> &polys, PolyType type) { CL::Paths cp = getClipperPolygons(polys); if(debug) { if (type==clip) clippolygons.push_back(cp); else if (type==subject) subjpolygons.push_back(cp); } // try { clpr.AddPaths(cp, CLType(type), true); // } catch (...) { // vector<CL::Paths> vcp; // vcp.push_back(cp); // printCLpolygons(vcp); // for (uint i = 0; i < cp.size(); i++) { // cerr << "try polygon "<< i << endl; // clpr.Clear(); // printCLpolygon(cp[i]); // clpr.AddPath(cp[i],CLType(type), true); // } // throw("end"); // } if (polys.size()>0) { lastZ = polys.back().getZ(); lastExtrF = polys.back().getExtrusionFactor(); } }
vector<Poly> Clipping::getOffset(const Poly &poly, double distance, JoinType jtype, double miterdist) { CL::Polygons cpolys(1); cpolys[0]=getClipperPolygon(poly); CL::Polygons offset = CLOffset(cpolys, CL_FACTOR*distance, CLType(jtype), miterdist); return getPolys(offset, poly.getZ(), poly.getExtrusionFactor()); }
vector<Poly> Clipping::getOffset(const vector<Poly> &polys, double distance, JoinType jtype, double miterdist) { CL::Paths cpolys = getClipperPolygons(polys); CL::Paths offset = CLOffset(cpolys, CL_FACTOR*distance, CLType(jtype), miterdist); double z=0, extrf=1.;; if (polys.size()>0) { z = polys.back().getZ(); extrf = polys.back().getExtrusionFactor(); } return getPolys(offset,z,extrf); }
void Clipping::addPolys(const vector<Poly> &polys, PolyType type) { CL::Polygons cp = getClipperPolygons(polys); if(debug) { if (type==clip) clippolygons.push_back(cp); else if (type==subject) subjpolygons.push_back(cp); } clpr.AddPolygons(cp,CLType(type)); if (polys.size()>0) { lastZ = polys.back().getZ(); lastExtrF = polys.back().getExtrusionFactor(); } }
void Clipping::addPolygons(const CL::Polygons &cp, PolyType type) { clpr.AddPolygons(cp, CLType(type)); }
void Clipping::addPoly(const Poly &poly, PolyType type) { clpr.AddPolygon(getClipperPolygon(poly),CLType(type)); lastZ = poly.getZ(); lastExtrF = poly.getExtrusionFactor(); }
void Clipping::addPolygons(const CL::Paths &cp, PolyType type) { clpr.AddPaths(cp, CLType(type), true); }