QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgsvectorlayerdiagramprovider.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsvectorlayerdiagramprovider.h
3  --------------------------------------
4  Date : September 2015
5  Copyright : (C) 2015 by Martin Dobias
6  Email : wonder dot sk at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSVECTORLAYERDIAGRAMPROVIDER_H
17 #define QGSVECTORLAYERDIAGRAMPROVIDER_H
18 
19 #define SIP_NO_FILE
20 
21 #include "qgis_core.h"
22 #include "qgslabelingengine.h"
23 #include "qgslabelfeature.h"
24 #include "qgsdiagramrenderer.h"
25 
34 {
35  public:
38  : QgsLabelFeature( feature.id(), std::move( geometry ), size )
39  {
41  }
42 
43 };
44 
45 
47 
58 {
59  public:
60 
62  explicit QgsVectorLayerDiagramProvider( QgsVectorLayer *layer, bool ownFeatureLoop = true );
63 
66 
67  QList<QgsLabelFeature *> labelFeatures( QgsRenderContext &context ) override;
68 
69  void drawLabel( QgsRenderContext &context, pal::LabelPosition *label ) const override;
70 
71  // new virtual methods
72 
79  virtual bool prepare( const QgsRenderContext &context, QSet<QString> &attributeNames );
80 
93  virtual void registerFeature( QgsFeature &feature, QgsRenderContext &context, const QgsGeometry &obstacleGeometry = QgsGeometry() );
94 
100  void setClipFeatureGeometry( const QgsGeometry &geometry );
101 
102  protected:
104  void init();
106  QgsLabelFeature *registerDiagram( const QgsFeature &feat, QgsRenderContext &context, const QgsGeometry &obstacleGeometry = QgsGeometry() );
107 
108  protected:
109 
113  QgsDiagramRenderer *mDiagRenderer = nullptr;
114 
115  // these are needed only if using own renderer loop
116 
122  QgsAbstractFeatureSource *mSource = nullptr;
125 
127  QList<QgsLabelFeature *> mFeatures;
128 
129  std::unique_ptr< QgsExpressionContextScope > mLayerScope;
130 
132 };
133 
134 #endif // QGSVECTORLAYERDIAGRAMPROVIDER_H
QgsLabelFeature::id
QgsFeatureId id() const
Identifier of the label (unique within the parent label provider)
Definition: qgslabelfeature.h:67
QgsAbstractLabelProvider::drawLabel
virtual void drawLabel(QgsRenderContext &context, pal::LabelPosition *label) const =0
Draw this label at the position determined by the labeling engine.
QgsVectorLayerDiagramProvider::mSettings
QgsDiagramLayerSettings mSettings
Diagram layer settings.
Definition: qgsvectorlayerdiagramprovider.h:111
QgsVectorLayerDiagramProvider::mLayerScope
std::unique_ptr< QgsExpressionContextScope > mLayerScope
Definition: qgsvectorlayerdiagramprovider.h:129
pal::LabelPosition
LabelPosition is a candidate feature label position.
Definition: labelposition.h:55
QgsVectorLayerDiagramProvider
The QgsVectorLayerDiagramProvider class implements support for diagrams within the labeling engine....
Definition: qgsvectorlayerdiagramprovider.h:57
QgsFields
Container of fields for a vector layer.
Definition: qgsfields.h:44
QgsRenderContext
Contains information about the context of a rendering operation.
Definition: qgsrendercontext.h:59
QgsDiagramLabelFeature
Class that adds extra information to QgsLabelFeature for labeling of diagrams.
Definition: qgsvectorlayerdiagramprovider.h:33
qgslabelfeature.h
geos::unique_ptr
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:79
QgsAbstractLabelProvider
The QgsAbstractLabelProvider class is an interface class. Implementations return list of labels and t...
Definition: qgslabelingengine.h:52
QgsVectorLayerDiagramProvider::mOwnsSource
bool mOwnsSource
Whether layer's feature source is owned.
Definition: qgsvectorlayerdiagramprovider.h:124
QgsAbstractLabelProvider::labelFeatures
virtual QList< QgsLabelFeature * > labelFeatures(QgsRenderContext &context)=0
Returns list of label features (they are owned by the provider and thus deleted on its destruction)
QgsVectorLayerDiagramProvider::mFeatures
QList< QgsLabelFeature * > mFeatures
List of generated label features (owned by the provider)
Definition: qgsvectorlayerdiagramprovider.h:127
QgsAbstractFeatureSource
Base class that can be used for any class that is capable of returning features.
Definition: qgsfeaturerequest.h:1009
QgsVectorLayerDiagramProvider::mFields
QgsFields mFields
Layer's fields.
Definition: qgsvectorlayerdiagramprovider.h:118
QgsDiagramLayerSettings
Stores the settings for rendering of all diagrams for a layer.
Definition: qgsdiagramrenderer.h:61
QgsVectorLayerDiagramProvider::mLayerCrs
QgsCoordinateReferenceSystem mLayerCrs
Layer's CRS.
Definition: qgsvectorlayerdiagramprovider.h:120
QgsDiagramRenderer
Evaluates and returns the diagram settings relating to a diagram for a specific feature.
Definition: qgsdiagramrenderer.h:684
QgsLabelFeature::feature
QgsFeature feature() const
Returns the original feature associated with this label.
Definition: qgslabelfeature.cpp:57
qgsdiagramrenderer.h
QgsCoordinateReferenceSystem
This class represents a coordinate reference system (CRS).
Definition: qgscoordinatereferencesystem.h:211
QgsDiagramLabelFeature::QgsDiagramLabelFeature
QgsDiagramLabelFeature(const QgsFeature &feature, geos::unique_ptr geometry, QSizeF size)
Create label feature, takes ownership of the geometry instance.
Definition: qgsvectorlayerdiagramprovider.h:37
QgsLabelFeature::size
QSizeF size(double angle=0.0) const
Size of the label (in map units)
Definition: qgslabelfeature.cpp:62
QgsLabelFeature::geometry
GEOSGeometry * geometry() const
Gets access to the associated geometry.
Definition: qgslabelfeature.h:70
QgsGeometry
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:124
QgsVectorLayer
Represents a vector layer which manages a vector based data sets.
Definition: qgsvectorlayer.h:391
QgsVectorLayerDiagramProvider::mLabelClipFeatureGeom
QgsGeometry mLabelClipFeatureGeom
Definition: qgsvectorlayerdiagramprovider.h:131
QgsFeature
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:55
QgsLabelFeature
The QgsLabelFeature class describes a feature that should be used within the labeling engine....
Definition: qgslabelfeature.h:57
QgsLabelFeature::setFeature
void setFeature(const QgsFeature &feature)
Sets the original feature associated with this label.
Definition: qgslabelfeature.cpp:76
qgslabelingengine.h