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