46#include <unordered_map>
120 void removeLayer(
Layer *layer );
122 typedef bool ( *FnIsCanceled )(
void *ctx );
125 void registerCancellationCallback( FnIsCanceled fnCanceled,
void *context );
128 inline bool isCanceled() {
return fnIsCanceled ? fnIsCanceled( fnIsCanceledContext ) :
false; }
162 QList<LabelPosition *> solveProblem(
Problem *prob,
QgsRenderContext &context,
bool displayAll, QList<pal::LabelPosition *> *unlabeled =
nullptr );
169 void setShowPartialLabels(
bool show );
176 bool showPartialLabels()
const;
270 void setRules(
const QList< QgsAbstractLabelingEngineRule * > &rules );
278 QList< QgsAbstractLabelingEngineRule * >
rules()
const {
return mRules; }
282 std::unordered_map< QgsAbstractLabelProvider *, std::unique_ptr< Layer > > mLayers;
284 QList< QgsAbstractLabelingEngineRule * > mRules;
296 int mEjChainDeg = 50;
298 double mCandListSize = 0.2;
300 unsigned int mNextCandidateId = 1;
301 mutable QHash< QPair< unsigned int, unsigned int >,
bool > mCandidateConflicts;
306 bool mShowPartialLabels =
true;
308 double mMaxLineCandidatesPerMapUnit = 0;
309 double mMaxPolygonCandidatesPerMapUnitSquared = 0;
311 int mGlobalCandidatesLimitPoint = 0;
312 int mGlobalCandidatesLimitLine = 0;
313 int mGlobalCandidatesLimitPolygon = 0;
318 FnIsCanceled fnIsCanceled =
nullptr;
320 void *fnIsCanceledContext =
nullptr;
326 void setPopmusicR(
int r );
332 void setMinIt(
int min_it );
338 void setMaxIt(
int max_it );
344 void setTenure(
int tenure );
350 void setEjChainDeg(
int degree );
356 void setCandListSize(
double fact );
363 int getMinIt()
const;
369 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.
Abstract base class for labeling engine rules.
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.
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
int globalCandidatesLimitPolygon() const
Returns the global candidates limit for polygon features, or 0 if no global limit is in effect.
Pal & operator=(const Pal &other)=delete
QList< QgsAbstractLabelingEngineRule * > rules() const
Returns the rules which the labeling solution must satisify.
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.