37#include <unordered_map>
51using namespace Qt::StringLiterals;
134 inline bool isCanceled() {
return fnIsCanceled ? fnIsCanceled( fnIsCanceledContext ) :
false; }
168 QList<LabelPosition *> solveProblem(
Problem *prob,
QgsRenderContext &context,
bool displayAll, QList<pal::LabelPosition *> *unlabeled =
nullptr );
175 void setShowPartialLabels(
bool show );
182 bool showPartialLabels()
const;
276 void setRules(
const QList< QgsAbstractLabelingEngineRule * > &rules );
284 QList< QgsAbstractLabelingEngineRule * >
rules()
const {
return mRules; }
288 std::vector< std::pair< QgsAbstractLabelProvider *, std::unique_ptr< Layer > > > mLayers;
290 QList< QgsAbstractLabelingEngineRule * > mRules;
302 int mEjChainDeg = 50;
304 double mCandListSize = 0.2;
306 unsigned int mNextCandidateId = 1;
307 mutable QHash< QPair< unsigned int, unsigned int >,
bool > mCandidateConflicts;
312 bool mShowPartialLabels =
true;
314 double mMaxLineCandidatesPerMapUnit = 0;
315 double mMaxPolygonCandidatesPerMapUnitSquared = 0;
317 int mGlobalCandidatesLimitPoint = 0;
318 int mGlobalCandidatesLimitLine = 0;
319 int mGlobalCandidatesLimitPolygon = 0;
324 FnIsCanceled fnIsCanceled =
nullptr;
326 void *fnIsCanceledContext =
nullptr;
332 void setPopmusicR(
int r );
338 void setMinIt(
int min_it );
344 void setMaxIt(
int max_it );
350 void setTenure(
int tenure );
356 void setEjChainDeg(
int degree );
362 void setCandListSize(
double fact );
369 int getMinIt()
const;
375 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).
An abstract interface class for label providers.
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.
A tree node for the settings tree to help organizing and introspecting the tree.
static QgsSettingsTreeNode * sTreeRendering
LabelPosition is a candidate feature label position.
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.
static QgsSettingsTreeNode * sTreePal
double maximumPolygonCandidatesPerMapUnitSquared() const
Returns the maximum number of polygon label candidate positions per map unit squared.
void removeLayer(Layer *layer)
remove a layer
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.
bool(* FnIsCanceled)(void *ctx)
Cancellation check callback function.
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
void registerCancellationCallback(FnIsCanceled fnCanceled, void *context)
Register a function that returns whether this job has been canceled - PAL calls it during the computa...
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 satisfy.
Layer * addLayer(QgsAbstractLabelProvider *provider, const QString &layerName, Qgis::LabelPlacement arrangement, double defaultPriority, bool active, bool toLabel)
add a new layer
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.