39QString QgsExtractLabelsAlgorithm::name()
 const 
   41  return QStringLiteral( 
"extractlabels" );
 
   44QString QgsExtractLabelsAlgorithm::displayName()
 const 
   46  return QObject::tr( 
"Extract labels" );
 
   49QStringList QgsExtractLabelsAlgorithm::tags()
 const 
   51  return QObject::tr( 
"map themes,font,position" ).split( 
',' );
 
   54QgsProcessingAlgorithm::Flags QgsExtractLabelsAlgorithm::flags()
 const 
   59QString QgsExtractLabelsAlgorithm::group()
 const 
   61  return QObject::tr( 
"Cartography" );
 
   64QString QgsExtractLabelsAlgorithm::groupId()
 const 
   66  return QStringLiteral( 
"cartography" );
 
   69void QgsExtractLabelsAlgorithm::initAlgorithm( 
const QVariantMap & )
 
   72                  QStringLiteral( 
"EXTENT" ),
 
   73                  QObject::tr( 
"Map extent" ) ) );
 
   76                  QStringLiteral( 
"SCALE" ),
 
   77                  QObject::tr( 
"Map scale" ) ) );
 
   79  std::unique_ptr<QgsProcessingParameterMapTheme> mapThemeParameter = std::make_unique<QgsProcessingParameterMapTheme>(
 
   80        QStringLiteral( 
"MAP_THEME" ),
 
   81        QObject::tr( 
"Map theme" ),
 
   83  mapThemeParameter->setHelp( QObject::tr( 
"This parameter is optional. When left unset, the algorithm will fallback to extracting labels from all currently visible layers in the project." ) );
 
   84  addParameter( mapThemeParameter.release() );
 
   87                  QStringLiteral( 
"INCLUDE_UNPLACED" ),
 
   88                  QObject::tr( 
"Include unplaced labels" ),
 
   89                  QVariant( 
true ), 
true ) );
 
   91  std::unique_ptr<QgsProcessingParameterNumber> dpiParameter = std::make_unique<QgsProcessingParameterNumber>(
 
   92        QStringLiteral( 
"DPI" ),
 
   93        QObject::tr( 
"Map resolution (in DPI)" ),
 
   95        QVariant( 96.0 ), 
true );
 
   97  addParameter( dpiParameter.release() );
 
  100                  QStringLiteral( 
"OUTPUT" ),
 
  101                  QObject::tr( 
"Extracted labels" ),
 
  105QString QgsExtractLabelsAlgorithm::shortDescription()
 const 
  107  return QObject::tr( 
"Converts map labels to a point layer with relevant details saved as attributes." );
 
  110QString QgsExtractLabelsAlgorithm::shortHelpString()
 const 
  112  return QObject::tr( 
"This algorithm extracts label information from a rendered map at a given extent and scale.\n\n" 
  113                      "If a map theme is provided, the rendered map will match the visibility and symbology of that theme. If left blank, all visible layers from the project will be used.\n\n" 
  114                      "Extracted label information include: position (served as point geometries), the associated layer name and feature ID, label text, rotation (in degree, clockwise), multiline alignment, and font details." );
 
  117QgsExtractLabelsAlgorithm *QgsExtractLabelsAlgorithm::createInstance()
 const 
  119  return new QgsExtractLabelsAlgorithm();
 
  126      : mMapLayerNames( mapLayerNames )
 
  127      , mFeedback( feedback )
 
  133      processLabel( layerId, context, label, settings, 
false );
 
  138      processLabel( layerId, context, label, settings, 
true );
 
  143      if ( mFeedback->isCanceled() )
 
  154          if ( !mCurvedWarningPushed.contains( layerId ) )
 
  156            mCurvedWarningPushed << layerId;
 
  157            mFeedback->pushWarning( QObject::tr( 
"Curved placement not supported, skipping labels from layer %1" ).arg( mMapLayerNames.value( layerId ) ) );
 
  177      const QMap< QgsPalLayerSettings::Property, QVariant > &dataDefinedValues = labelFeature->
dataDefinedValues();
 
  188                                labelSettings.wrapChar,
 
  189                                labelSettings.autoWrapLength,
 
  190                                labelSettings.useMaxLineLengthForAutoWrap ).join( 
'\n' );
 
  192      QString labelAlignment;
 
  197      switch ( labelSettings.multilineAlign )
 
  199        case Qgis::LabelMultiLineAlignment::Right:
 
  200          labelAlignment = QStringLiteral( 
"right" );
 
  203        case Qgis::LabelMultiLineAlignment::Center:
 
  204          labelAlignment = QStringLiteral( 
"center" );
 
  207        case Qgis::LabelMultiLineAlignment::Left:
 
  208          labelAlignment = QStringLiteral( 
"left" );
 
  211        case Qgis::LabelMultiLineAlignment::Justify:
 
  212          labelAlignment = QStringLiteral( 
"justify" );
 
  215        case Qgis::LabelMultiLineAlignment::FollowPlacement:
 
  221              labelAlignment = QStringLiteral( 
"right" );
 
  227              labelAlignment = QStringLiteral( 
"center" );
 
  233              labelAlignment = QStringLiteral( 
"left" );
 
  240                                   ? -( label->
getAlpha() * 180 / M_PI ) + 360
 
  244      const QString fontFamily = font.family();
 
  245      const QString fontStyle = font.styleName();
 
  246      const double fontSize = 
static_cast<double>( font.pixelSize() ) * 72 / context.
painter()->device()->logicalDpiX();
 
  247      const bool fontItalic = font.italic();
 
  248      const bool fontBold = font.bold();
 
  249      const bool fontUnderline = font.underline();
 
  250      const double fontLetterSpacing = font.letterSpacing();
 
  251      const double fontWordSpacing = font.wordSpacing();
 
  271      const QString formatColor = format.
color().name();
 
  272      const double formatOpacity = format.
opacity() * 100;
 
  273      const double formatLineHeight = format.
lineHeight();
 
  280      const bool bufferDraw = buffer.
enabled();
 
  281      double bufferSize = 0.0;
 
  283      double bufferOpacity = 0.0;
 
  299        bufferSize =  buffer.
sizeUnit() == Qgis::RenderUnit::Percentage
 
  302        bufferSize = bufferSize * 72 / context.
painter()->device()->logicalDpiX();
 
  303        bufferColor = buffer.
color().name();
 
  304        bufferOpacity = buffer.
opacity() * 100;
 
  308      attributes << mMapLayerNames.value( layerId ) << fid
 
  309                 << labelText << label->
getWidth() << label->
getHeight() << labelRotation << unplacedLabel
 
  310                 << fontFamily << fontSize << fontItalic << fontBold << fontUnderline << fontStyle << fontLetterSpacing << fontWordSpacing
 
  311                 << labelAlignment << formatLineHeight << formatColor << formatOpacity
 
  312                 << bufferDraw << bufferSize << bufferColor << bufferOpacity;
 
  314      double x = label->
getX();
 
  315      double y = label->
getY();
 
  324    QList<QgsFeature> features;
 
  328    QMap<QString, QString> mMapLayerNames;
 
  329    QList<QString> mCurvedWarningPushed;
 
  336  const QgsRectangle extent = parameterAsExtent( parameters, QStringLiteral( 
"EXTENT" ), context );
 
  337  const double scale = parameterAsDouble( parameters, QStringLiteral( 
"SCALE" ), context );
 
  340    throw QgsProcessingException( QObject::tr( 
"Invalid scale value, a number greater than 0 is required" ) );
 
  342  double dpi = parameterAsDouble( parameters, QStringLiteral( 
"DPI" ), context );
 
  354  fields.
append( 
QgsField( QStringLiteral( 
"Layer" ), QVariant::String, QString(), 0, 0 ) );
 
  355  fields.
append( 
QgsField( QStringLiteral( 
"FeatureID" ), QVariant::LongLong, QString(), 20 ) );
 
  356  fields.
append( 
QgsField( QStringLiteral( 
"LabelText" ), QVariant::String, QString(), 0, 0 ) );
 
  357  fields.
append( 
QgsField( QStringLiteral( 
"LabelWidth" ), QVariant::Double, QString(), 20, 8 ) );
 
  358  fields.
append( 
QgsField( QStringLiteral( 
"LabelHeight" ), QVariant::Double, QString(), 20, 8 ) );
 
  359  fields.
append( 
QgsField( QStringLiteral( 
"LabelRotation" ), QVariant::Double, QString(), 20, 2 ) );
 
  360  fields.
append( 
QgsField( QStringLiteral( 
"LabelUnplaced" ), QVariant::Bool, QString(), 1, 0 ) );
 
  361  fields.
append( 
QgsField( QStringLiteral( 
"Family" ), QVariant::String, QString(), 0, 0 ) );
 
  362  fields.
append( 
QgsField( QStringLiteral( 
"Size" ), QVariant::Double, QString(), 20, 4 ) );
 
  363  fields.
append( 
QgsField( QStringLiteral( 
"Italic" ), QVariant::Bool, QString(), 1, 0 ) );
 
  364  fields.
append( 
QgsField( QStringLiteral( 
"Bold" ), QVariant::Bool, QString(), 1, 0 ) );
 
  365  fields.
append( 
QgsField( QStringLiteral( 
"Underline" ), QVariant::Bool, QString(), 1, 0 ) );
 
  366  fields.
append( 
QgsField( QStringLiteral( 
"FontStyle" ), QVariant::String, QString(), 0, 0 ) );
 
  367  fields.
append( 
QgsField( QStringLiteral( 
"FontLetterSpacing" ), QVariant::Double, QString(), 20, 4 ) );
 
  368  fields.
append( 
QgsField( QStringLiteral( 
"FontWordSpacing" ), QVariant::Double, QString(), 20, 4 ) );
 
  369  fields.
append( 
QgsField( QStringLiteral( 
"MultiLineAlignment" ), QVariant::String, QString(), 0, 0 ) );
 
  370  fields.
append( 
QgsField( QStringLiteral( 
"MultiLineHeight" ), QVariant::Double, QString(), 20, 2 ) );
 
  371  fields.
append( 
QgsField( QStringLiteral( 
"Color" ), QVariant::String, QString(), 7, 0 ) );
 
  372  fields.
append( 
QgsField( QStringLiteral( 
"FontOpacity" ), QVariant::Double, QString(), 20, 1 ) );
 
  373  fields.
append( 
QgsField( QStringLiteral( 
"BufferDraw" ), QVariant::Bool, QString(), 1, 0 ) );
 
  374  fields.
append( 
QgsField( QStringLiteral( 
"BufferSize" ), QVariant::Double, QString(), 20, 4 ) );
 
  375  fields.
append( 
QgsField( QStringLiteral( 
"BufferColor" ), QVariant::String, QString(), 7, 0 ) );
 
  376  fields.
append( 
QgsField( QStringLiteral( 
"BufferOpacity" ), QVariant::Double, QString(), 20, 1 ) );
 
  404  nullPaintDevice.
setOutputDpi( 
static_cast< int >( std::round( dpi ) ) );
 
  405  QPainter painter( &nullPaintDevice );
 
  408  ExtractLabelSink labelSink( mMapLayerNames, feedback );
 
  409  renderJob.setLabelSink( &labelSink );
 
  411  feedback->
pushInfo( QObject::tr( 
"Extracting labels" ) );
 
  414  multiStepFeedback.setCurrentStep( 0 );
 
  419  int labelsCollectedFromLayers = 0;
 
  422    multiStepFeedback.pushInfo( QObject::tr( 
"Collecting labelled features from %1" ).arg( mMapLayerNames.value( layerId ) ) );
 
  423    multiStepFeedback.setProgress( 100.0 * 
static_cast< double >( labelsCollectedFromLayers ) / mMapLayers.size() );
 
  424    labelsCollectedFromLayers++;
 
  429    multiStepFeedback.setCurrentStep( 1 );
 
  430    multiStepFeedback.pushInfo( QObject::tr( 
"Registering labels" ) );
 
  435    multiStepFeedback.setCurrentStep( 2 );
 
  436    if ( !provider->layerId().isEmpty() )
 
  438      multiStepFeedback.pushInfo( QObject::tr( 
"Adding labels from %1" ).arg( mMapLayerNames.value( provider->layerId() ) ) );
 
  443    multiStepFeedback.setCurrentStep( 3 );
 
  444    if ( !provider->layerId().isEmpty() )
 
  446      multiStepFeedback.pushInfo( QObject::tr( 
"Generating label placement candidates for %1" ).arg( mMapLayerNames.value( provider->layerId() ) ) );
 
  451    multiStepFeedback.setCurrentStep( 4 );
 
  452    multiStepFeedback.setProgressText( QObject::tr( 
"Calculating obstacle costs" ) );
 
  456    multiStepFeedback.setCurrentStep( 5 );
 
  457    multiStepFeedback.setProgressText( QObject::tr( 
"Calculating label conflicts" ) );
 
  461    multiStepFeedback.setCurrentStep( 6 );
 
  462    multiStepFeedback.setProgressText( QObject::tr( 
"Finalizing candidates" ) );
 
  466    multiStepFeedback.setCurrentStep( 7 );
 
  467    multiStepFeedback.setProgressText( QObject::tr( 
"Reducing problem" ) );
 
  471    multiStepFeedback.setCurrentStep( 8 );
 
  472    multiStepFeedback.setProgressText( QObject::tr( 
"Determining optimal label placements" ) );
 
  476    multiStepFeedback.setProgressText( QObject::tr( 
"Labeling complete" ) );
 
  481    multiStepFeedback.setProgress( progress );
 
  488  qDeleteAll( mMapLayers );
 
  491  multiStepFeedback.setCurrentStep( 9 );
 
  492  feedback->
pushInfo( QObject::tr( 
"Writing %n label(s) to output layer", 
"", labelSink.features.count() ) );
 
  493  const double step = !labelSink.features.empty() ? 100.0 / labelSink.features.count() : 1;
 
  494  long long index = -1;
 
  495  for ( 
QgsFeature &feature : labelSink.features )
 
  498    multiStepFeedback.setProgress( step * index );
 
  510    if ( vl->renderer() )
 
  512      vl->renderer()->setReferenceScale( scale );
 
  517      settings.
fieldName = QStringLiteral( 
"LabelText" );
 
  520      settings.
quadOffset = Qgis::LabelQuadrantPosition::AboveRight;
 
  526      textFormat.
setSizeUnit( Qgis::RenderUnit::Points );
 
  527      textFormat.
setColor( QColor( 0, 0, 0 ) );
 
  555      vl->setLabeling( labeling );
 
  556      vl->setLabelsEnabled( 
true );
 
  558      QString errorMessage;
 
  559      vl->saveStyleToDatabase( QString(), QString(), 
true, QString(), errorMessage );
 
  564  outputs.insert( QStringLiteral( 
"OUTPUT" ), dest );
 
  572  const QString mapTheme = parameterAsString( parameters, QStringLiteral( 
"MAP_THEME" ), context );
 
  579      if ( l->type() == Qgis::LayerType::Vector )
 
  580        mMapLayers.push_back( l->clone() );
 
  585  if ( mMapLayers.isEmpty() )
 
  587    QList<QgsMapLayer *> layers;
 
  589    const QList<QgsLayerTreeLayer *> layerTreeLayers = root->
findLayers();
 
  590    layers.reserve( layerTreeLayers.size() );
 
  594      if ( nodeLayer->isVisible() && root->
layerOrder().contains( layer ) )
 
  598    for ( 
const QgsMapLayer *l : std::as_const( layers ) )
 
  600      if ( l->type() == Qgis::LayerType::Vector )
 
  601        mMapLayers.push_back( l->clone() );
 
  605  for ( 
const QgsMapLayer *l : std::as_const( mMapLayers ) )
 
  607    mMapLayerNames.insert( l->id(), l->name() );
 
  610  mCrs = parameterAsExtentCrs( parameters, QStringLiteral( 
"EXTENT" ), context );
 
  611  if ( !mCrs.isValid() )
 
  614  bool includeUnplaced = parameterAsBoolean( parameters, QStringLiteral( 
"INCLUDE_UNPLACED" ), context );
 
@ OverPoint
Arranges candidates over a point (or centroid of a polygon), or at a preset offset from the point....
 
@ Curved
Arranges candidates following the curvature of a line feature. Applies to line layers only.
 
@ AroundPoint
Arranges candidates in a circle around a point (or centroid of a polygon). Applies to point or polygo...
 
@ Line
Arranges candidates parallel to a generalised line representing the feature or parallel to a polygon'...
 
@ Free
Arranges candidates scattered throughout a polygon feature. Candidates are rotated to respect the pol...
 
@ OrderedPositionsAroundPoint
Candidates are placed in predefined positions around a point. Preference is given to positions with g...
 
@ Horizontal
Arranges horizontal candidates scattered throughout a polygon feature. Applies to polygon layers only...
 
@ PerimeterCurved
Arranges candidates following the curvature of a polygon's boundary. Applies to polygon layers only.
 
@ OutsidePolygons
Candidates are placed outside of polygon boundaries. Applies to polygon layers only....
 
@ CollectUnplacedLabels
Whether unplaced labels should be collected in the labeling results (regardless of whether they are b...
 
@ DrawUnplacedLabels
Whether to render unplaced labels as an indicator/warning for users.
 
LabelMultiLineAlignment
Text alignment for multi-line labels.
 
@ AllowOverlapIfRequired
Avoids overlapping labels when possible, but permit overlaps if labels for features cannot otherwise ...
 
@ UseRenderingOptimization
Enable vector simplification and other rendering optimizations.
 
@ DrawLabeling
Enable drawing of labels on top of the map.
 
@ SkipSymbolRendering
Disable symbol rendering while still drawing labels if enabled (since QGIS 3.24)
 
The QgsAbstractLabelProvider class is an interface class.
 
Abstract base class - its implementations define different approaches to the labeling of a vector lay...
 
static QgsExpressionContextScope * projectScope(const QgsProject *project)
Creates a new scope which contains variables and functions relating to a QGIS project.
 
static QgsExpressionContextScope * mapSettingsScope(const QgsMapSettings &mapSettings)
Creates a new scope which contains variables and functions relating to a QgsMapSettings object.
 
static QgsExpressionContextScope * globalScope()
Creates a new scope which contains variables and functions relating to the global QGIS context.
 
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
 
@ FastInsert
Use faster inserts, at the cost of updating the passed features to reflect changes made at the provid...
 
@ RegeneratePrimaryKey
This flag indicates, that a primary key field cannot be guaranteed to be unique and the sink should i...
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
void setAttributes(const QgsAttributes &attrs)
Sets the feature's attributes.
 
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
 
void progressChanged(double progress)
Emitted when the feedback object reports a progress change.
 
void canceled()
Internal routines can connect to this signal if they use event loop.
 
bool isCanceled() const SIP_HOLDGIL
Tells whether the operation has been canceled already.
 
Encapsulate a field in an attribute table or data source.
 
Container of fields for a vector layer.
 
bool append(const QgsField &field, FieldOrigin origin=OriginProvider, int originIndex=-1)
Appends a field. The field must have unique name, otherwise it is rejected (returns false)
 
A geometry is the spatial representation of a feature.
 
void setIsObstacle(bool isObstacle)
Sets whether features are obstacles to labels of other layers.
 
void setOverlapHandling(Qgis::LabelOverlapHandling handling)
Sets the technique used to handle overlapping labels.
 
void setAllowDegradedPlacement(bool allow)
Sets whether labels can be placed in inferior fallback positions if they cannot otherwise be placed.
 
Abstract base class that can be used to intercept rendered labels from a labeling / rendering job.
 
virtual void drawUnplacedLabel(const QString &layerId, QgsRenderContext &context, pal::LabelPosition *label, const QgsPalLayerSettings &settings)
The drawLabel method is called for each unplaced label.
 
virtual void drawLabel(const QString &layerId, QgsRenderContext &context, pal::LabelPosition *label, const QgsPalLayerSettings &settings)=0
The drawLabel method is called for each label that is being drawn.
 
void obstacleCostingAboutToBegin()
Emitted when the obstacle costing is about to begin.
 
void solvingPlacementAboutToBegin()
Emitted when the problem solving step is about to begin.
 
void calculatingConflictsAboutToBegin()
Emitted when the conflict handling step is about to begin.
 
void reductionAboutToBegin()
Emitted when the candidate reduction step is about to begin.
 
void labelRegistrationAboutToBegin()
Emitted when the label registration is about to begin.
 
void solvingPlacementFinished()
Emitted when the problem solving step is finished.
 
void finalizingCandidatesAboutToBegin()
Emitted when the label candidates are about to be finalized.
 
void candidateCreationAboutToBegin(QgsAbstractLabelProvider *provider)
Emitted when the label candidate creation is about to begin for a provider.
 
void providerRegistrationAboutToBegin(QgsAbstractLabelProvider *provider)
Emitted when the label registration is about to begin for a provider.
 
void setFlag(Qgis::LabelingFlag f, bool enabled=true)
Sets whether a particual flag is enabled.
 
QList< QgsLayerTreeLayer * > findLayers() const
Find all layer nodes.
 
Layer tree node points to a map layer.
 
Namespace with helper functions for layer tree operations.
 
QList< QgsMapLayer * > layerOrder() const
The order in which layers will be rendered on the canvas.
 
Base class for all map layer types.
 
Job implementation that renders everything sequentially using a custom painter.
 
void cancel() override
Stop the rendering job - does not return until the job has terminated.
 
void renderingLayersFinished()
Emitted when the layers are rendered.
 
void finished()
emitted when asynchronous rendering is finished (or canceled).
 
void layerRenderingStarted(const QString &layerId)
Emitted just before rendering starts for a particular layer.
 
The QgsMapSettings class contains configuration for rendering of the map.
 
void setLayers(const QList< QgsMapLayer * > &layers)
Sets the list of layers to render in the map.
 
void setOutputDpi(double dpi)
Sets the dpi (dots per inch) used for conversion between real world units (e.g.
 
void setLayerStyleOverrides(const QMap< QString, QString > &overrides)
Sets the map of map layer style overrides (key: layer ID, value: style name) where a different style ...
 
void setExtent(const QgsRectangle &rect, bool magnified=true)
Sets the coordinates of the rectangle which should be rendered.
 
void setExpressionContext(const QgsExpressionContext &context)
Sets the expression context.
 
void setLabelingEngineSettings(const QgsLabelingEngineSettings &settings)
Sets the global configuration of the labeling engine.
 
void setOutputSize(QSize size)
Sets the size of the resulting map image, in pixels.
 
void setFlag(Qgis::MapSettingsFlag flag, bool on=true)
Enable or disable a particular flag (other flags are not affected)
 
void setDestinationCrs(const QgsCoordinateReferenceSystem &crs)
Sets the destination crs (coordinate reference system) for the map render.
 
bool hasMapTheme(const QString &name) const
Returns whether a map theme with a matching name exists.
 
QList< QgsMapLayer * > mapThemeVisibleLayers(const QString &name) const
Returns the list of layers that are visible for the specified map theme.
 
QMap< QString, QString > mapThemeStyleOverrides(const QString &name)
Gets layer style overrides (for QgsMapSettings) of the visible layers for given map theme.
 
Null painter device that can be used for map renderer jobs which use custom painters.
 
void setOutputSize(const QSize &size)
Sets the size of the device in pixels.
 
void setOutputDpi(const int dpi)
Sets the dpi of the device.
 
static QStringList splitToLines(const QString &text, const QString &wrapCharacter, int autoWrapLength=0, bool useMaxLineLengthWhenAutoWrapping=true)
Splits a text string to a list of separate lines, using a specified wrap character (wrapCharacter).
 
Contains settings for how a map layer will be labeled.
 
const QgsLabelObstacleSettings & obstacleSettings() const
Returns the label obstacle settings.
 
const QgsLabelPlacementSettings & placementSettings() const
Returns the label placement settings.
 
void setFormat(const QgsTextFormat &format)
Sets the label text formatting settings, e.g., font settings, buffer settings, etc.
 
Qgis::LabelPlacement placement
Label placement mode.
 
Qgis::LabelQuadrantPosition quadOffset
Sets the quadrant in which to offset labels from feature.
 
@ LabelRotation
Label rotation.
 
@ Underline
Use underline.
 
@ FontLetterSpacing
Letter spacing.
 
@ BufferOpacity
Buffer opacity.
 
@ Italic
Use italic style.
 
@ FontWordSpacing
Word spacing.
 
@ FontOpacity
Text opacity.
 
void setDataDefinedProperties(const QgsPropertyCollection &collection)
Sets the label's property collection, used for data defined overrides.
 
QString fieldName
Name of field (or an expression) to use for label text.
 
Point geometry type, with support for z-dimension and m-values.
 
virtual Flags flags() const
Returns the flags indicating how and when the algorithm operates and should be exposed to users.
 
Contains information about the context in which a processing algorithm is executed.
 
QgsProject * project() const
Returns the project in which the algorithm is being executed.
 
Custom exception class for processing related exceptions.
 
Base class for providing feedback from a processing algorithm.
 
virtual void pushInfo(const QString &info)
Pushes a general informational message from the algorithm.
 
Processing feedback object for multi-step operations.
 
A boolean parameter for processing algorithms.
 
@ FlagAdvanced
Parameter is an advanced parameter which should be hidden from users by default.
 
A rectangular map extent parameter for processing algorithms.
 
A feature sink output for processing algorithms.
 
@ Double
Double/float values.
 
A double numeric parameter for map scale values.
 
static QgsMapLayer * mapLayerFromString(const QString &string, QgsProcessingContext &context, bool allowLoadingNewLayers=true, QgsProcessingUtils::LayerHint typeHint=QgsProcessingUtils::LayerHint::UnknownType, QgsProcessing::LayerOptionsFlags flags=QgsProcessing::LayerOptionsFlags())
Interprets a string as a map layer within the supplied context.
 
@ TypeVectorPoint
Vector point layers.
 
QgsMapThemeCollection * mapThemeCollection
 
QgsLayerTree * layerTreeRoot() const
Returns pointer to the root (invisible) node of the project's layer tree.
 
QgsCoordinateReferenceSystem crs
 
const QgsLabelingEngineSettings & labelingEngineSettings() const
Returns project's global labeling engine settings.
 
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
 
void setProperty(int key, const QgsProperty &property)
Adds a property to the collection and takes ownership of it.
 
static QgsProperty fromExpression(const QString &expression, bool isActive=true)
Returns a new ExpressionBasedProperty created from the specified expression.
 
static QgsProperty fromField(const QString &fieldName, bool isActive=true)
Returns a new FieldBasedProperty created from the specified field name.
 
A rectangle specified with double values.
 
Contains information about the context of a rendering operation.
 
void setRenderingStopped(bool stopped)
Sets whether the rendering operation has been stopped and any ongoing rendering should be canceled im...
 
double convertToPainterUnits(double size, Qgis::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::RenderSubcomponentProperty property=Qgis::RenderSubcomponentProperty::Generic) const
Converts a size from the specified units to painter units (pixels).
 
QPainter * painter()
Returns the destination QPainter for the render operation.
 
Calculates scale for a given combination of canvas size, map extent, and monitor dpi.
 
void setDpi(double dpi)
Sets the dpi (dots per inch) for the output resolution, to be used in scale calculations.
 
void setMapUnits(Qgis::DistanceUnit mapUnits)
Set the map units.
 
QSizeF calculateImageSize(const QgsRectangle &mapExtent, double scale) const
Calculate the image size in pixel (physical) units.
 
Container for settings relating to a text buffer.
 
Qgis::RenderUnit sizeUnit() const
Returns the units for the buffer size.
 
double size() const
Returns the size of the buffer.
 
void setColor(const QColor &color)
Sets the color for the buffer.
 
void setOpacity(double opacity)
Sets the buffer opacity.
 
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the buffer size.
 
bool enabled() const
Returns whether the buffer is enabled.
 
double opacity() const
Returns the buffer opacity.
 
void setSizeUnit(Qgis::RenderUnit unit)
Sets the units used for the buffer size.
 
void setEnabled(bool enabled)
Sets whether the text buffer will be drawn.
 
QColor color() const
Returns the color of the buffer.
 
void setSize(double size)
Sets the size of the buffer.
 
Container for all settings relating to text rendering.
 
void setColor(const QColor &color)
Sets the color that text will be rendered in.
 
void setSize(double size)
Sets the size for rendered text.
 
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the size.
 
double lineHeight() const
Returns the line height for text.
 
void setSizeUnit(Qgis::RenderUnit unit)
Sets the units for the size of rendered text.
 
void setOpacity(double opacity)
Sets the text's opacity.
 
void setBuffer(const QgsTextBufferSettings &bufferSettings)
Sets the text's buffer settings.
 
Qgis::RenderUnit sizeUnit() const
Returns the units for the size of rendered text.
 
double opacity() const
Returns the text's opacity.
 
double size() const
Returns the size for rendered text.
 
QColor color() const
Returns the color that text will be rendered in.
 
QgsTextBufferSettings & buffer()
Returns a reference to the text buffer settings.
 
void setLineHeight(double height)
Sets the line height for text.
 
Class that adds extra information to QgsLabelFeature for text labels.
 
QFont definedFont() const
Font to be used for rendering.
 
const QMap< QgsPalLayerSettings::Property, QVariant > & dataDefinedValues() const
Gets data-defined values.
 
QString text(int partId) const
Returns the text component corresponding to a specified label part.
 
Basic implementation of the labeling interface.
 
Represents a vector layer which manages a vector based data sets.
 
QgsFeatureId featureId() const
Returns the unique ID of the feature.
 
QgsLabelFeature * feature()
Returns the parent feature.
 
LabelPosition is a candidate feature label position.
 
double getAlpha() const
Returns the angle to rotate text (in rad).
 
Quadrant getQuadrant() const
 
FeaturePart * getFeaturePart() const
Returns the feature corresponding to this labelposition.
 
double getX(int i=0) const
Returns the down-left x coordinate.
 
double getY(int i=0) const
Returns the down-left y coordinate.
 
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
 
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features