38 #include <QLinkedList>
43 #include "qgis_core.h"
81 friend class PolygonCostCalculator;
86 PointSet(
int nbPoints,
double *x,
double *y );
92 std::unique_ptr< PointSet > extractShape(
int nbPtSh,
int imin,
int imax,
int fps,
int fpe,
double fptx,
double fpty );
97 std::unique_ptr< PointSet > clone()
const;
105 bool containsPoint(
double x,
double y )
const;
116 bool containsLabelCandidate(
double x,
double y,
double width,
double height,
double alpha = 0 )
const;
128 static QLinkedList<PointSet *> splitPolygons(
PointSet *inputShape,
double labelWidth,
double labelHeight );
138 void extendLineByDistance(
double startDistance,
double endDistance,
double smoothDistance );
143 void offsetCurveByDistance(
double distance );
154 double minDistanceToPoint(
double px,
double py,
double *rx =
nullptr,
double *ry =
nullptr )
const;
156 void getCentroid(
double &px,
double &py,
bool forceInside =
false )
const;
172 bool boundingBoxIntersects(
const PointSet *other )
const;
187 void getPointByDistance(
double *d,
double *ad,
double dl,
double *px,
double *py )
const;
197 double lineLocatePoint(
const GEOSGeometry *point )
const;
202 const GEOSGeometry *
geos()
const;
207 double length()
const;
217 bool isClosed()
const;
222 QString toWkt()
const;
227 std::tuple< std::vector< double >,
double > edgeDistances()
const;
230 std::vector< double >
x;
231 std::vector< double >
y;
234 mutable GEOSGeometry *mGeos =
nullptr;
235 mutable bool mOwnsGeom =
false;
244 mutable double mArea = -1;
245 mutable double mLength = -1;
253 void createGeosGeom()
const;
254 const GEOSPreparedGeometry *preparedGeom()
const;
256 void invalidateGeos()
const;
258 double xmin = std::numeric_limits<double>::max();
259 double xmax = std::numeric_limits<double>::lowest();
260 double ymin = std::numeric_limits<double>::max();
261 double ymax = std::numeric_limits<double>::lowest();
265 mutable const GEOSPreparedGeometry *mGeosPreparedBoundary =
nullptr;
266 mutable const GEOSPreparedGeometry *mPreparedGeom =
nullptr;
268 mutable GEOSGeometry *mMultipartGeos =
nullptr;
269 mutable const GEOSPreparedGeometry *mMultipartPreparedGeos =
nullptr;