36 #include "qgis_core.h"
45 #include <QStringList>
46 #include <unordered_map>
126 void removeLayer(
Layer *layer );
128 typedef bool ( *FnIsCanceled )(
void *ctx );
131 void registerCancellationCallback( FnIsCanceled fnCanceled,
void *context );
134 inline bool isCanceled() {
return fnIsCanceled ? fnIsCanceled( fnIsCanceledContext ) :
false; }
157 QList<LabelPosition *> solveProblem(
Problem *prob,
QgsRenderContext &context,
bool displayAll, QList<pal::LabelPosition *> *unlabeled =
nullptr );
164 void setShowPartialLabels(
bool show );
171 bool showPartialLabels()
const;
258 std::unordered_map< QgsAbstractLabelProvider *, std::unique_ptr< Layer > > mLayers;
270 int mEjChainDeg = 50;
272 double mCandListSize = 0.2;
274 unsigned int mNextCandidateId = 1;
275 mutable QHash< QPair< unsigned int, unsigned int >,
bool > mCandidateConflicts;
280 bool mShowPartialLabels =
true;
282 double mMaxLineCandidatesPerMapUnit = 0;
283 double mMaxPolygonCandidatesPerMapUnitSquared = 0;
285 int mGlobalCandidatesLimitPoint = 0;
286 int mGlobalCandidatesLimitLine = 0;
287 int mGlobalCandidatesLimitPolygon = 0;
292 FnIsCanceled fnIsCanceled =
nullptr;
294 void *fnIsCanceledContext =
nullptr;
300 void setPopmusicR(
int r );
306 void setMinIt(
int min_it );
312 void setMaxIt(
int max_it );
318 void setTenure(
int tenure );
324 void setEjChainDeg(
int degree );
330 void setCandListSize(
double fact );
337 int getMinIt()
const;
343 int getMaxIt()
const;
LabelPlacement
Placement modes which determine how label candidates are generated for a feature.
LabelPlacementEngineVersion
Labeling placement engine version.
@ Version2
Version 2 (default for new projects since QGIS 3.12)
The QgsAbstractLabelProvider class is an interface class.
A geometry is the spatial representation of a feature.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
An integer settings entry.
QgsSettingsTreeNode is a tree node for the settings tree to help organizing and introspecting the tre...
QgsSettingsTreeNode * createChildNode(const QString &key)
Creates a normal tree node It will return the existing child node if it exists at the given key.
static QgsSettingsTreeNode * sTreeRendering
Main class to handle feature.
LabelPosition is a candidate feature label position.
A set of features which influence the labeling process.
double maximumLineCandidatesPerMapUnit() const
Returns the maximum number of line label candidate positions per map unit.
Pal & operator=(const Pal &other)=delete
Pal cannot be copied.
int globalCandidatesLimitPoint() const
Returns the global candidates limit for point features, or 0 if no global limit is in effect.
double maximumPolygonCandidatesPerMapUnitSquared() const
Returns the maximum number of polygon label candidate positions per map unit squared.
void setMaximumPolygonCandidatesPerMapUnitSquared(double candidates)
Sets the maximum number of polygon label candidates per map unit squared.
int globalCandidatesLimitLine() const
Returns the global candidates limit for line features, or 0 if no global limit is in effect.
static const QgsSettingsEntryInteger * settingsRenderingLabelCandidatesLimitLines
static const QgsSettingsEntryInteger * settingsRenderingLabelCandidatesLimitPoints
static const QgsSettingsEntryInteger * settingsRenderingLabelCandidatesLimitPolygons
void setMaximumLineCandidatesPerMapUnit(double candidates)
Sets the maximum number of line label candidates per map unit.
bool isCanceled()
Check whether the job has been canceled.
Pal(const Pal &other)=delete
Pal cannot be copied.
int globalCandidatesLimitPolygon() const
Returns the global candidates limit for polygon features, or 0 if no global limit is in effect.
Representation of a labeling problem.
SearchMethod
Search method to use.
@ FALP
Only initial solution.
@ POPMUSIC_TABU
Is a little bit better than CHAIN but slower.
@ POPMUSIC_CHAIN
Is slower and best than TABU, worse and faster than TABU_CHAIN.
@ CHAIN
Is the worst but fastest method.
@ POPMUSIC_TABU_CHAIN
Is the best but slowest.