30 #ifndef LABELPOSITION_H
31 #define LABELPOSITION_H
36 #include "qgis_core.h"
58 friend class PolygonCostCalculator;
94 double alpha,
double cost,
95 FeaturePart *feature,
bool isReversed =
false, Quadrant quadrant = QuadrantOver );
105 bool isIn(
double *bbox );
112 bool isIntersect(
double *bbox );
117 bool intersects(
const GEOSPreparedGeometry *geometry );
122 bool within(
const GEOSPreparedGeometry *geometry );
129 bool isInside(
double *bbox );
140 void getBoundingBox(
double amin[2],
double amax[2] )
const;
143 double getDistanceToPoint(
double xp,
double yp )
const;
146 bool crossesLine(
PointSet *line )
const;
149 bool crossesBoundary(
PointSet *polygon )
const;
155 int polygonIntersectionCost(
PointSet *polygon )
const;
160 bool intersectsWithPolygon(
PointSet *polygon )
const;
163 void offsetPosition(
double xOffset,
double yOffset );
199 if ( mNextPart ) mNextPart->setProblemIds( probFid, lpId );
206 double cost()
const {
return mCost; }
213 void setCost(
double newCost ) { mCost = newCost; }
221 void setConflictsWithObstacle(
bool conflicts );
235 void setHasHardObstacleConflict(
bool conflicts );
252 double getX(
int i = 0 )
const;
258 double getY(
int i = 0 )
const;
266 double getAlpha()
const;
284 void setNextPart( std::unique_ptr< LabelPosition > next ) { mNextPart = std::move( next ); }
319 const GEOSPreparedGeometry *preparedMultiPartGeom()
const;
329 unsigned int globalId()
const {
return mGlobalId; }
342 double angleDifferential();
372 unsigned int mGlobalId = 0;
373 std::unique_ptr< LabelPosition > mNextPart;
376 bool mHasObstacleConflict;
377 bool mHasHardConflict =
false;
378 int mUpsideDownCharCount;
383 int partCount()
const;
389 double polygonIntersectionCostForParts(
PointSet *polygon )
const;
394 void createMultiPartGeosGeom()
const;
A rtree spatial index for use in the pal labeling engine.
Calculates label candidate costs considering different factors.
Main class to handle feature.
LabelPosition is a candidate feature label position.
Quadrant
Position of label candidate relative to feature.
void incrementNumOverlaps()
Increases the number of overlaps recorded against this position by 1.
LabelPosition::Quadrant quadrant
bool hasHardObstacleConflict() const
Returns whether the position is marked as having a hard conflict with an obstacle feature.
void setNextPart(std::unique_ptr< LabelPosition > next)
Sets the next part of this label position (i.e.
void setCost(double newCost)
Sets the candidate label position's geographical cost.
int upsideDownCharCount() const
Returns the number of upside down characters for this label position.
void setGlobalId(unsigned int id)
Sets the global id for the candidate, which is unique for a single run of the pal labelling engine.
void decrementNumOverlaps()
Decreases the number of overlaps recorded against this position by 1.
double cost() const
Returns the candidate label position's geographical cost.
Quadrant getQuadrant() const
bool conflictsWithObstacle() const
Returns whether the position is marked as conflicting with an obstacle feature.
int getNumOverlaps() const
void setProblemIds(int probFid, int lpId)
Set problem feature ID and assigned label candidate ID.
LabelPosition * nextPart() const
Returns the next part of this label position (i.e.
void setUpsideDownCharCount(int count)
Sets the count of upside down characters for this label position.
unsigned int globalId() const
Returns the global ID for the candidate, which is unique for a single run of the pal labelling engine...
int getProblemFeatureId() const
bool getUpsideDown() const
The underlying raw pal geometry class.