30 #ifndef LABELPOSITION_H 31 #define LABELPOSITION_H 36 #include "qgis_core.h" 58 friend class PolygonCostCalculator;
94 double alpha,
double cost,
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 );
198 if ( mNextPart ) mNextPart->setProblemIds( probFid, lpId );
205 double cost()
const {
return mCost; }
212 void setCost(
double newCost ) { mCost = newCost; }
220 void setConflictsWithObstacle(
bool conflicts );
234 void setHasHardObstacleConflict(
bool conflicts );
251 double getX(
int i = 0 )
const;
257 double getY(
int i = 0 )
const;
265 double getAlpha()
const;
283 void setNextPart( std::unique_ptr< LabelPosition > next ) { mNextPart = std::move( next ); }
333 std::unique_ptr< LabelPosition > mNextPart;
336 bool mHasObstacleConflict;
337 bool mHasHardConflict =
false;
338 int mUpsideDownCharCount;
343 int partCount()
const;
349 double polygonIntersectionCostForParts(
PointSet *polygon )
const;
351 bool isInConflictSinglePart(
const LabelPosition *lp )
const;
LabelPosition * nextPart() const
Returns the next part of this label position (i.e.
void setCost(double newCost)
Sets the candidate label position's geographical cost.
int incrementUpsideDownCharCount()
Increases the count of upside down characters for this label position.
int getProblemFeatureId() const
A rtree spatial index for use in the pal labeling engine.
double cost() const
Returns the candidate label position's geographical cost.
void decrementNumOverlaps()
Decreases the number of overlaps recorded against this position by 1.
Quadrant getQuadrant() const
Main class to handle feature.
int upsideDownCharCount() const
Returns the number of upside down characters for this label position.
void incrementNumOverlaps()
Increases the number of overlaps recorded against this position by 1.
void setNextPart(std::unique_ptr< LabelPosition > next)
Sets the next part of this label position (i.e.
bool hasHardObstacleConflict() const
Returns whether the position is marked as having a hard conflict with an obstacle feature...
bool conflictsWithObstacle() const
Returns whether the position is marked as conflicting with an obstacle feature.
int getNumOverlaps() const
LabelPosition is a candidate feature label position.
Quadrant
Position of label candidate relative to feature.
bool getUpsideDown() const
void setProblemIds(int probFid, int lpId)
Set problem feature ID and assigned label candidate ID.
LabelPosition::Quadrant quadrant