| 
    QGIS API Documentation
    3.26.3-Buenos Aires (65e4edfdad)
    
   | 
 
 
 
 
Go to the documentation of this file.
   35 static bool _palIsCanceled( 
void *ctx )
 
   37   return ( 
reinterpret_cast< QgsRenderContext * 
>( ctx ) )->renderingStopped();
 
   50       : mMapSettings( mapSettings )
 
   62       QStringList layerIds = mMapSettings.
layerIds();
 
   65       if ( layer1Pos != layer2Pos && layer1Pos >= 0 && layer2Pos >= 0 )
 
   66         return layer1Pos > layer2Pos; 
 
   69       return lf1->
size().width() * lf1->
size().height() > lf2->
size().width() * lf2->
size().height();
 
  100   QList< QgsMapLayer * > layers;
 
  103   QList< QgsAbstractLabelProvider * > providersByZ = 
mProviders;
 
  104   std::sort( providersByZ.begin(), providersByZ.end(),
 
  107     const QgsVectorLayerLabelProvider *providerA = dynamic_cast<const QgsVectorLayerLabelProvider *>( a );
 
  108     const QgsVectorLayerLabelProvider *providerB = dynamic_cast<const QgsVectorLayerLabelProvider *>( b );
 
  110     if ( providerA && providerB )
 
  112       return providerA->settings().zIndex < providerB->settings().zIndex ;
 
  117   QList< QgsAbstractLabelProvider * > subProvidersByZ = mSubProviders;
 
  118   std::sort( subProvidersByZ.begin(), subProvidersByZ.end(),
 
  121     const QgsVectorLayerLabelProvider *providerA = dynamic_cast<const QgsVectorLayerLabelProvider *>( a );
 
  122     const QgsVectorLayerLabelProvider *providerB = dynamic_cast<const QgsVectorLayerLabelProvider *>( b );
 
  124     if ( providerA && providerB )
 
  126       return providerA->settings().zIndex < providerB->settings().zIndex ;
 
  133     if ( provider->layer() && !layers.contains( provider->layer() ) )
 
  134       layers << provider->layer();
 
  138     if ( provider->layer() && !layers.contains( provider->layer() ) )
 
  139       layers << provider->layer();
 
  149   QList< QgsAbstractLabelProvider * > providersByZ = 
mProviders;
 
  150   std::sort( providersByZ.begin(), providersByZ.end(),
 
  153     const QgsVectorLayerLabelProvider *providerA = dynamic_cast<const QgsVectorLayerLabelProvider *>( a );
 
  154     const QgsVectorLayerLabelProvider *providerB = dynamic_cast<const QgsVectorLayerLabelProvider *>( b );
 
  156     if ( providerA && providerB )
 
  158       return providerA->settings().zIndex < providerB->settings().zIndex ;
 
  163   QList< QgsAbstractLabelProvider * > subProvidersByZ = mSubProviders;
 
  164   std::sort( subProvidersByZ.begin(), subProvidersByZ.end(),
 
  167     const QgsVectorLayerLabelProvider *providerA = dynamic_cast<const QgsVectorLayerLabelProvider *>( a );
 
  168     const QgsVectorLayerLabelProvider *providerB = dynamic_cast<const QgsVectorLayerLabelProvider *>( b );
 
  170     if ( providerA && providerB )
 
  172       return providerA->settings().zIndex < providerB->settings().zIndex ;
 
  179     if ( !layers.contains( provider->layerId() ) )
 
  180       layers << provider->layerId();
 
  184     if ( !layers.contains( provider->layerId() ) )
 
  185       layers << provider->layerId();
 
  207   QgsAbstractLabelProvider::Flags flags = provider->
flags();
 
  229   const QList<QgsLabelFeature *> features = provider->
labelFeatures( context );
 
  237     catch ( std::exception &e )
 
  240       QgsDebugMsgLevel( QStringLiteral( 
"Ignoring feature %1 due PAL exception:" ).arg( feature->id() ) + QString::fromLatin1( e.what() ), 4 );
 
  259     feedback->emit labelRegistrationAboutToBegin();
 
  263   mPal = std::make_unique< pal::Pal >();
 
  278       feedback->emit providerRegistrationAboutToBegin( provider );
 
  282     std::unique_ptr< QgsExpressionContextScopePopper > layerScopePopper;
 
  283     if ( provider->layerExpressionContextScope() )
 
  289       feedback->emit providerRegistrationFinished( provider );
 
  292     feedback->emit labelRegistrationFinished();
 
  297   Q_ASSERT( 
mPal.get() );
 
  302   QPainter *painter = context.
painter();
 
  309   visiblePoly.append( visiblePoly.at( 0 ) ); 
 
  318     mapBoundaryGeom = mapBoundaryGeom.
difference( region.geometry );
 
  326     QVariantMap properties;
 
  327     properties.insert( QStringLiteral( 
"style" ), QStringLiteral( 
"no" ) );
 
  328     properties.insert( QStringLiteral( 
"style_border" ), QStringLiteral( 
"solid" ) );
 
  329     properties.insert( QStringLiteral( 
"color_border" ), QStringLiteral( 
"#0000ff" ) );
 
  330     properties.insert( QStringLiteral( 
"width_border" ), QStringLiteral( 
"0.3" ) );
 
  331     properties.insert( QStringLiteral( 
"joinstyle" ), QStringLiteral( 
"miter" ) );
 
  333     boundarySymbol->startRender( context );
 
  334     boundarySymbol->renderFeature( f, context );
 
  335     boundarySymbol->stopRender( context );
 
  348   mPal->registerCancellationCallback( &_palIsCanceled, 
reinterpret_cast< void * 
>( &context ) );
 
  356     mProblem = 
mPal->extractProblem( extent, mapBoundaryGeom, context );
 
  358   catch ( std::exception &e )
 
  361     QgsDebugMsgLevel( 
"PAL EXCEPTION :-( " + QString::fromLatin1( e.what() ), 4 );
 
  387     painter->setBrush( Qt::NoBrush );
 
  388     for ( 
int i = 0; i < static_cast< int >( 
mProblem->featureCount() ); i++ )
 
  390       for ( 
int j = 0; j < 
mProblem->featureCandidateCount( i ); j++ )
 
  407   QgsDebugMsgLevel( QStringLiteral( 
"LABELING work:  %1 ms ... labels# %2" ).arg( t.elapsed() ).arg( 
mLabels.size() ), 4 );
 
  418   QPainter *painter = context.
painter();
 
  423     if ( !layerId.isEmpty() && provider->layerId() != layerId )
 
  431     provider->startRender( context );
 
  435   std::unique_ptr< QgsExpressionContextScopePopper > symbolScopePopper = std::make_unique< QgsExpressionContextScopePopper >( context.
expressionContext(), symbolScope );
 
  522   symbolScopePopper.reset();
 
  527     if ( !layerId.isEmpty() && provider->layerId() != layerId )
 
  530     provider->stopRender( context );
 
  534   painter->setCompositionMode( QPainter::CompositionMode_SourceOver );
 
  536   QgsDebugMsgLevel( QStringLiteral( 
"LABELING draw:  %1 ms" ).arg( t.elapsed() ), 4 );
 
  632   : mLayerId( layer ? layer->id() : QString() )
 
  634   , mProviderId( providerId )
 
  638     mLayerExpressionContextScope.reset( vl->createExpressionContextScope() );
 
  640       mLayerReferenceScale = renderer->referenceScale();
 
  659     subProvider->startRender( context );
 
  668     subProvider->stopRender( context );
 
  674   return mLayerExpressionContextScope.get();
 
  683   QStringList predefinedOrderString;
 
  684   const auto constPositions = positions;
 
  690         predefinedOrderString << QStringLiteral( 
"TL" );
 
  693         predefinedOrderString << QStringLiteral( 
"TSL" );
 
  696         predefinedOrderString << QStringLiteral( 
"T" );
 
  699         predefinedOrderString << QStringLiteral( 
"TSR" );
 
  702         predefinedOrderString << QStringLiteral( 
"TR" );
 
  705         predefinedOrderString << QStringLiteral( 
"L" );
 
  708         predefinedOrderString << QStringLiteral( 
"R" );
 
  711         predefinedOrderString << QStringLiteral( 
"BL" );
 
  714         predefinedOrderString << QStringLiteral( 
"BSL" );
 
  717         predefinedOrderString << QStringLiteral( 
"B" );
 
  720         predefinedOrderString << QStringLiteral( 
"BSR" );
 
  723         predefinedOrderString << QStringLiteral( 
"BR" );
 
  727   return predefinedOrderString.join( 
',' );
 
  732   QVector<Qgis::LabelPredefinedPointPosition> result;
 
  733   const QStringList predefinedOrderList = positionString.split( 
',' );
 
  734   result.reserve( predefinedOrderList.size() );
 
  735   for ( 
const QString &position : predefinedOrderList )
 
  737     QString cleaned = position.trimmed().toUpper();
 
  738     if ( cleaned == QLatin1String( 
"TL" ) )
 
  740     else if ( cleaned == QLatin1String( 
"TSL" ) )
 
  742     else if ( cleaned == QLatin1String( 
"T" ) )
 
  744     else if ( cleaned == QLatin1String( 
"TSR" ) )
 
  746     else if ( cleaned == QLatin1String( 
"TR" ) )
 
  748     else if ( cleaned == QLatin1String( 
"L" ) )
 
  750     else if ( cleaned == QLatin1String( 
"R" ) )
 
  752     else if ( cleaned == QLatin1String( 
"BL" ) )
 
  754     else if ( cleaned == QLatin1String( 
"BSL" ) )
 
  756     else if ( cleaned == QLatin1String( 
"B" ) )
 
  758     else if ( cleaned == QLatin1String( 
"BSR" ) )
 
  760     else if ( cleaned == QLatin1String( 
"BR" ) )
 
  769   if ( flags & QgsLabeling::LinePlacementFlag::OnLine )
 
  770     parts << QStringLiteral( 
"OL" );
 
  771   if ( flags & QgsLabeling::LinePlacementFlag::AboveLine )
 
  772     parts << QStringLiteral( 
"AL" );
 
  773   if ( flags & QgsLabeling::LinePlacementFlag::BelowLine )
 
  774     parts << QStringLiteral( 
"BL" );
 
  775   if ( !( flags & QgsLabeling::LinePlacementFlag::MapOrientation ) )
 
  776     parts << QStringLiteral( 
"LO" );
 
  777   return parts.join( 
',' );
 
  782   QgsLabeling::LinePlacementFlags flags = QgsLabeling::LinePlacementFlags();
 
  783   const QStringList flagList = 
string.split( 
',' );
 
  784   bool foundLineOrientationFlag = 
false;
 
  785   for ( 
const QString &flag : flagList )
 
  787     QString cleaned = flag.trimmed().toUpper();
 
  788     if ( cleaned == QLatin1String( 
"OL" ) )
 
  789       flags |= QgsLabeling::LinePlacementFlag::OnLine;
 
  790     else if ( cleaned == QLatin1String( 
"AL" ) )
 
  791       flags |= QgsLabeling::LinePlacementFlag::AboveLine;
 
  792     else if ( cleaned == QLatin1String( 
"BL" ) )
 
  793       flags |= QgsLabeling::LinePlacementFlag::BelowLine;
 
  794     else if ( cleaned == QLatin1String( 
"LO" ) )
 
  795       foundLineOrientationFlag = 
true;
 
  797   if ( !foundLineOrientationFlag )
 
  798     flags |= QgsLabeling::LinePlacementFlag::MapOrientation;
 
  
@ BottomSlightlyLeft
Label below point, slightly left of center.
 
@ TopSlightlyLeft
Label on top of point, slightly left of center.
 
const QgsLabelingEngineSettings & labelingEngineSettings() const
Returns the global configuration of the labeling engine.
 
void addProvider(QgsAbstractLabelProvider *provider)
Add provider of label features. Takes ownership of the provider.
 
@ BottomSlightlyRight
Label below point, slightly right of center.
 
void setProgress(double progress)
Sets the current progress for the feedback object.
 
@ CollectUnplacedLabels
Whether unplaced labels should be collected in the labeling results (regardless of whether they are b...
 
virtual void drawLabel(QgsRenderContext &context, pal::LabelPosition *label) const =0
Draw this label at the position determined by the labeling engine.
 
Scoped object for temporary override of the symbologyReferenceScale property of a QgsRenderContext.
 
RAII class to pop scope from an expression context on destruction.
 
virtual void stopRender(QgsRenderContext &context)
To be called after rendering is complete.
 
void processProvider(QgsAbstractLabelProvider *provider, QgsRenderContext &context, pal::Pal &p)
 
void setPainterFlagsUsingContext(QPainter *painter=nullptr) const
Sets relevant flags on a destination painter, using the flags and settings currently defined for the ...
 
QgsAbstractLabelProvider * provider() const
Returns provider of this instance.
 
@ TopLeft
Label on top-left of point.
 
QString layerId() const
Returns ID of associated layer, or empty string if no layer is associated with the provider.
 
std::unique_ptr< pal::Pal > mPal
 
QgsExpressionContext & expressionContext()
Gets the expression context.
 
const QgsSymbol * symbol() const
Returns the feature symbol associated with this label.
 
double extentBuffer() const
Returns the buffer in map units to use around the visible extent for rendering symbols whose correspo...
 
QStringList participatingLayerIds() const
Returns a list of layer IDs for layers with providers in the engine.
 
void drawLabels(QgsRenderContext &context, const QString &layerId=QString())
Draws labels to the specified render context.
 
void run(QgsRenderContext &context) override
Runs the labeling job.
 
#define QgsDebugMsgLevel(str, level)
 
void setCentroidInside(bool forceInside)
Sets whether labels placed at the centroid of features within the layer are forced to be placed insid...
 
@ DrawCandidates
Whether to draw rectangles of generated candidates (good for debugging)
 
QList< QgsAbstractLabelProvider * > mProviders
List of providers (the are owned by the labeling engine)
 
Qgis::LabelPlacement placement() const
What placement strategy to use for the labels.
 
QgsPointXY center() const SIP_HOLDGIL
Returns the center point of the rectangle.
 
void removeProvider(QgsAbstractLabelProvider *provider)
Remove provider if the provider's initialization failed. Provider instance is deleted.
 
@ DrawLabels
Whether the labels should be rendered.
 
LabelPosition is a candidate feature label position.
 
@ TopMiddle
Label directly above point.
 
QgsAbstractLabelProvider * provider() const
Returns pointer to the associated provider.
 
Class that stores computed placement from labeling engine.
 
QgsLabelObstacleSettings::ObstacleType obstacleType() const
How the feature geometries will work as obstacles.
 
bool operator()(pal::LabelPosition *lp1, pal::LabelPosition *lp2) const
 
static QString encodePredefinedPositionOrder(const QVector< Qgis::LabelPredefinedPointPosition > &positions)
Encodes an ordered list of predefined point label positions to a string.
 
double convertToMapUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const
Converts a size from the specified units to map units.
 
QList< pal::LabelPosition * > mUnlabeled
 
Contains information about the context of a rendering operation.
 
@ RenderMillimeters
Millimeters.
 
QgsLabelSorter(const QgsMapSettings &mapSettings)
 
PlacementEngineVersion placementVersion() const
Returns the placement engine version, which dictates how the label placement problem is solved.
 
QgsLabelingEngine()
Construct the labeling engine with default settings.
 
void setFields(const QgsFields &fields)
Convenience function for setting a fields for the context.
 
QList< QgsAbstractLabelProvider * > mSubProviders
 
virtual void drawUnplacedLabel(QgsRenderContext &context, pal::LabelPosition *label) const
Draw an unplaced label.
 
void setMapSettings(const QgsMapSettings &mapSettings)
Associate map settings instance.
 
@ MiddleLeft
Label on left of point.
 
Flags flags() const
Gets flags of the labeling engine.
 
@ TopRight
Label on top-right of point.
 
A rectangle specified with double values.
 
double priority() const
Default priority of labels (may be overridden by individual labels)
 
FeaturePart * getFeaturePart() const
Returns the feature corresponding to this labelposition.
 
@ BottomLeft
Label on bottom-left of point.
 
bool renderingStopped() const
Returns true if the rendering operation has been stopped and any ongoing rendering should be canceled...
 
LabelPredefinedPointPosition
Positions for labels when using the Qgis::LabelPlacement::OrderedPositionsAroundPoint placement mode.
 
QPolygonF visiblePolygonWithBuffer() const
Returns the visible area as a polygon (may be rotated) with extent buffer included.
 
@ MergeConnectedLines
Whether adjacent lines (with the same label text) should be merged.
 
double rotation() const
Returns the rotation of the resulting map image, in degrees clockwise.
 
The QgsAbstractLabelProvider class is an interface class. Implementations return list of labels and t...
 
QStringList layerIds(bool expandGroupLayers=false) const
Returns the list of layer IDs which will be rendered in the map.
 
@ CentroidMustBeInside
Whether location of centroid must be inside of polygons.
 
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
 
static QString encodeLinePlacementFlags(QgsLabeling::LinePlacementFlags flags)
Encodes line placement flags to a string.
 
Stores global configuration for labeling engine.
 
@ TopSlightlyRight
Label on top of point, slightly right of center.
 
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
 
bool testFlag(Flag f) const
Test whether a particular flag is enabled.
 
void finalize()
Finalizes and cleans up the engine following the rendering of labels for the last layer to be labeled...
 
void setEngine(const QgsLabelingEngine *engine)
Associate provider with a labeling engine (should be only called internally from QgsLabelingEngine)
 
QgsStagedRenderLabelingEngine()
Construct the labeling engine with default settings.
 
virtual QList< QgsLabelFeature * > labelFeatures(QgsRenderContext &context)=0
Returns list of label features (they are owned by the provider and thus deleted on its destruction)
 
void cleanup()
Cleans up the engine following a call to registerLabels() or solve().
 
void setMergeConnectedLines(bool merge)
Sets whether connected lines should be merged before labeling.
 
@ BottomMiddle
Label directly below point.
 
QString name() const
Name of the layer (for statistics, debugging etc.) - does not need to be unique.
 
void setUpsidedownLabels(Qgis::UpsideDownLabelHandling ud)
Sets how upside down labels will be handled within the layer.
 
@ MiddleRight
Label on right of point.
 
Qgis::GeometryOperationResult rotate(double rotation, const QgsPointXY ¢er)
Rotate this geometry around the Z axis.
 
virtual QList< QgsAbstractLabelProvider * > subProviders()
Returns list of child providers - useful if the provider needs to put labels into more layers with di...
 
double layerReferenceScale() const
Returns the symbology reference scale of the layer associated with this provider.
 
void renderLabelsForLayer(QgsRenderContext &context, const QString &layerId)
Renders all the labels which belong only to the layer with matching layerId to the specified render c...
 
QgsFeature feature() const
Returns the original feature associated with this label.
 
QList< QgsLabelBlockingRegion > labelBlockingRegions() const
Returns the list of regions to avoid placing labels within.
 
virtual ~QgsLabelingEngine()
Clean up everything (especially the registered providers)
 
static QgsFillSymbol * createSimple(const QVariantMap &properties)
Create a fill symbol with one symbol layer: SimpleFill with specified properties.
 
QList< QgsMapLayer * > participatingLayers() const
Returns a list of layers with providers in the engine.
 
Single scope for storing variables and functions for use within a QgsExpressionContext....
 
virtual void drawLabelBackground(QgsRenderContext &context, pal::LabelPosition *label) const
Draw the background for the specified label.
 
std::unique_ptr< pal::Problem > mProblem
 
The QgsLabelingEngine class provides map labeling functionality. The input for the engine is a list o...
 
virtual void startRender(QgsRenderContext &context)
To be called before rendering of labels begins.
 
QgsDefaultLabelingEngine()
Construct the labeling engine with default settings.
 
double zIndex() const
Returns the label's z-index.
 
QgsFeedback * feedback() const
Returns the feedback object that can be queried regularly during rendering to check if rendering shou...
 
QgsLabelingResults * takeResults()
Returns pointer to recently computed results and pass the ownership of results to the caller.
 
void setSymbol(const QgsSymbol *symbol)
Sets the feature symbol associated with this label.
 
static QgsExpressionContextScope * updateSymbolScope(const QgsSymbol *symbol, QgsExpressionContextScope *symbolScope=nullptr)
Updates a symbol scope related to a QgsSymbol to an expression context.
 
const QgsMapSettings & mapSettings() const
Gets associated map settings.
 
QSizeF size(double angle=0.0) const
Size of the label (in map units)
 
A geometry is the spatial representation of a feature.
 
@ UsePartialCandidates
Whether to use also label candidates that are partially outside of the map view.
 
Perform transforms between map coordinates and device coordinates.
 
QgsExpressionContextScope * layerExpressionContextScope() const
Returns the expression context scope created from the layer associated with this provider.
 
double maximumPolygonCandidatesPerCmSquared() const
Returns the maximum number of polygon label candidate positions per centimeter squared.
 
Represents a vector layer which manages a vector based data sets.
 
Base class for all map layer types. This is the base class for all map layer types (vector,...
 
void setObstacleType(QgsLabelObstacleSettings::ObstacleType obstacleType)
Sets the obstacle type, which controls how features within the layer act as obstacles for labels.
 
static QgsGeometry fromRect(const QgsRectangle &rect) SIP_HOLDGIL
Creates a new geometry from a QgsRectangle.
 
static QgsLabeling::LinePlacementFlags decodeLinePlacementFlags(const QString &string)
Decodes a string to set of line placement flags.
 
@ BottomRight
Label on bottom right of point.
 
double maximumLineCandidatesPerCm() const
Returns the maximum number of line label candidate positions per centimeter.
 
std::unique_ptr< QgsLabelingResults > mResults
Resulting labeling layout.
 
QgsMapSettings mMapSettings
Associated map settings instance.
 
Layer * addLayer(QgsAbstractLabelProvider *provider, const QString &layerName, Qgis::LabelPlacement arrangement, double defaultPriority, bool active, bool toLabel)
add a new layer
 
QgsMapLayer * layer() const
Returns the associated layer, or nullptr if no layer is associated with the provider.
 
A set of features which influence the labeling process.
 
Flags flags() const
Flags associated with the provider.
 
QgsRectangle boundingBox() const
Returns the bounding box of the geometry.
 
static QVector< Qgis::LabelPredefinedPointPosition > decodePredefinedPositionOrder(const QString &positionString)
Decodes a string to an ordered list of predefined point label positions.
 
Label blocking region (in map coordinates and CRS).
 
static QgsGeometry fromQPolygonF(const QPolygonF &polygon)
Construct geometry from a QPolygonF.
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
void solve(QgsRenderContext &context)
Solves the label problem.
 
Qgis::UpsideDownLabelHandling upsidedownLabels() const
How to handle labels that would be upside down.
 
The QgsLabelFeature class describes a feature that should be used within the labeling engine....
 
void run(QgsRenderContext &context) override
Runs the labeling job.
 
void grow(double delta)
Grows the rectangle in place by the specified amount.
 
QgsGeometry labelBoundaryGeometry() const
Returns the label boundary geometry, which restricts where in the rendered map labels are permitted t...
 
QPainter * painter()
Returns the destination QPainter for the render operation.
 
void registerLabels(QgsRenderContext &context)
Runs the label registration step.
 
pal::Layer * mLayer
Pointer to PAL layer (assigned when registered to PAL)
 
The QgsMapSettings class contains configuration for rendering of the map. The rendering itself is don...
 
QgsRectangle visibleExtent() const
Returns the actual extent derived from requested extent that takes output image size into account.
 
QgsLabelFeature * feature()
Returns the parent feature.
 
@ UseAllLabels
Whether to draw all labels even if there would be collisions.
 
void setMapRotation(double degrees, double cx, double cy)
Sets map rotation in degrees (clockwise).
 
const QgsMapToPixel & mapToPixel() const
 
QgsFeedback subclass for granular reporting of labeling engine progress.
 
QgsGeometry difference(const QgsGeometry &geometry) const
Returns a geometry representing the points making up this geometry that do not make up other.
 
Helper class for sorting labels into correct draw order.
 
@ DrawUnplacedLabels
Whether to render unplaced labels as an indicator/warning for users.
 
QList< pal::LabelPosition * > mLabels
 
static void drawLabelCandidateRect(pal::LabelPosition *lp, QPainter *painter, const QgsMapToPixel *xform, QList< QgsLabelCandidate > *candidates=nullptr)
 
QgsAbstractLabelProvider(QgsMapLayer *layer, const QString &providerId=QString())
Construct the provider with default values.
 
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.
 
bool registerFeature(QgsLabelFeature *label)
Register a feature in the layer.