Example #1
0
// 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);
}
Example #2
0
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();
  }
}
Example #3
0
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());
}
Example #4
0
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);
}
Example #5
0
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();
  }
}
Example #6
0
void Clipping::addPolygons(const CL::Polygons &cp, PolyType type)
{
  clpr.AddPolygons(cp, CLType(type));
}
Example #7
0
void Clipping::addPoly(const Poly &poly, PolyType type)
{
  clpr.AddPolygon(getClipperPolygon(poly),CLType(type));
  lastZ = poly.getZ();
  lastExtrF = poly.getExtrusionFactor();
}
Example #8
0
void Clipping::addPolygons(const CL::Paths &cp, PolyType type)
{
  clpr.AddPaths(cp, CLType(type), true);
}