/*public*/ std::auto_ptr<Coordinate::Vect> LineStringSnapper::snapTo(const geom::Coordinate::ConstVect& snapPts) { geom::CoordinateList coordList(srcPts); snapVertices(coordList, snapPts); snapSegments(coordList, snapPts); return coordList.toCoordinateArray(); }
/* private */ std::auto_ptr<geom::CoordinateSequence> BufferInputLineSimplifier::collapseLine() const { std::auto_ptr<geom::CoordinateSequence> coordList( new CoordinateArraySequence()); for (size_t i=0, n=inputLine.size(); i<n; ++i) { if (isDeleted[i] != DELETE) coordList->add(inputLine[i]); } return coordList; }
/*public*/ DouglasPeuckerLineSimplifier::CoordsVectAutoPtr DouglasPeuckerLineSimplifier::simplify() { CoordsVectAutoPtr coordList(new CoordsVect()); // empty coordlist is the simplest, won't simplify further if(! pts.size()) { return coordList; } usePt = BoolVectAutoPtr(new BoolVect(pts.size(), true)); simplifySection(0, pts.size() - 1); for(std::size_t i = 0, n = pts.size(); i < n; ++i) { if(usePt->operator[](i)) { coordList->push_back(pts[i]); } } // unique_ptr transfer ownership to its // returned copy return coordList; }