103 int subPartId()
const;
108 std::size_t maximumPointCandidates()
const;
113 std::size_t maximumLineCandidates()
const;
118 std::size_t maximumPolygonCandidates()
const;
123 std::vector<std::unique_ptr<LabelPosition> > createCandidates(
Pal *
pal );
133 std::size_t createCandidatesAroundPoint(
double x,
double y, std::vector<std::unique_ptr<LabelPosition> > &lPos,
double angle );
143 std::size_t createCandidatesOverPoint(
double x,
double y, std::vector<std::unique_ptr<LabelPosition> > &lPos,
double angle );
153 std::size_t createCandidateCenteredOverPoint(
double x,
double y, std::vector<std::unique_ptr<LabelPosition> > &lPos,
double angle );
161 std::unique_ptr< LabelPosition > createCandidatePointOnSurface(
PointSet *mapShape );
171 std::size_t createCandidatesAtOrderedPositionsOverPoint(
double x,
double y, std::vector<std::unique_ptr<LabelPosition> > &lPos,
double angle );
181 std::size_t createCandidatesAlongLine( std::vector<std::unique_ptr<LabelPosition> > &lPos,
PointSet *mapShape,
bool allowOverrun,
Pal *
pal );
190 std::size_t createHorizontalCandidatesAlongLine( std::vector<std::unique_ptr<LabelPosition> > &lPos,
PointSet *mapShape,
Pal *
pal );
200 std::size_t createCandidatesAlongLineNearStraightSegments( std::vector<std::unique_ptr<LabelPosition> > &lPos,
PointSet *mapShape,
Pal *
pal );
212 std::size_t createCandidatesAlongLineNearMidpoint( std::vector<std::unique_ptr<LabelPosition> > &lPos,
PointSet *mapShape,
double initialCost = 0.0,
Pal *
pal =
nullptr );
227 std::unique_ptr< LabelPosition > curvedPlacementAtOffset(
229 const std::vector<double> &pathDistances,
232 bool &labeledLineSegmentIsRightToLeft,
233 bool applyAngleConstraints,
235 double additionalCharacterSpacing,
236 double additionalWordSpacing
247 std::size_t createCurvedCandidatesAlongLine( std::vector<std::unique_ptr<LabelPosition> > &lPos,
PointSet *mapShape,
bool allowOverrun,
Pal *
pal );
257 std::size_t createDefaultCurvedCandidatesAlongLine( std::vector<std::unique_ptr<LabelPosition> > &lPos,
PointSet *mapShape,
bool allowOverrun,
Pal *
pal );
266 std::size_t createCurvedCandidateWithCharactersAtVertices( std::vector<std::unique_ptr<LabelPosition> > &lPos,
PointSet *mapShape,
Pal *
pal );
275 std::size_t createCandidatesForPolygon( std::vector<std::unique_ptr<LabelPosition> > &lPos,
PointSet *mapShape,
Pal *
pal );
283 std::size_t createCandidatesOutsidePolygon( std::vector<std::unique_ptr<LabelPosition> > &lPos,
Pal *
pal );
291 bool hasSameLabelFeatureAs(
FeaturePart *part )
const;
351 void addSizePenalty( std::vector<std::unique_ptr<LabelPosition> > &lPos,
double bbx[4],
double bby[4] )
const;
357 double calculatePriority()
const;
360 bool onlyShowUprightLabels()
const;
366 int totalRepeats()
const;
372 void setTotalRepeats(
int repeats );
384 int mTotalRepeats = 0;
386 mutable std::size_t mCachedMaxLineCandidates = 0;
387 mutable std::size_t mCachedMaxPolygonCandidates = 0;
LabelLineDirection
Controls behavior of curved text with respect to line directions.