QGIS API Documentation  3.4.15-Madeira (e83d02e274)
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( id, std::move( geometry ), size ) {}
39 
41  void setAttributes( const QgsAttributes &attrs ) { mAttributes = attrs; }
43  const QgsAttributes &attributes() { return mAttributes; }
44 
45  protected:
48 };
49 
50 
52 
63 {
64  public:
65 
67  explicit QgsVectorLayerDiagramProvider( QgsVectorLayer *layer, bool ownFeatureLoop = true );
68 
71 
72  QList<QgsLabelFeature *> labelFeatures( QgsRenderContext &context ) override;
73 
74  void drawLabel( QgsRenderContext &context, pal::LabelPosition *label ) const override;
75 
76  // new virtual methods
77 
84  virtual bool prepare( const QgsRenderContext &context, QSet<QString> &attributeNames );
85 
98  virtual void registerFeature( QgsFeature &feature, QgsRenderContext &context, const QgsGeometry &obstacleGeometry = QgsGeometry() );
99 
100  protected:
102  void init();
104  QgsLabelFeature *registerDiagram( QgsFeature &feat, QgsRenderContext &context, const QgsGeometry &obstacleGeometry = QgsGeometry() );
105 
106  protected:
107 
111  QgsDiagramRenderer *mDiagRenderer = nullptr;
112 
113  // these are needed only if using own renderer loop
114 
120  QgsAbstractFeatureSource *mSource = nullptr;
123 
125  QList<QgsLabelFeature *> mFeatures;
126 };
127 
128 #endif // QGSVECTORLAYERDIAGRAMPROVIDER_H
pal::Layer * layer() const
Gets PAL layer of the label feature. Should be only used internally in PAL.
qint64 QgsFeatureId
Definition: qgsfeatureid.h:25
Container of fields for a vector layer.
Definition: qgsfields.h:42
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:106
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:55
QList< QgsLabelFeature * > mFeatures
List of generated label features (owned by the provider)
GEOSGeometry * geometry() const
Gets access to the associated geometry.
QSizeF size() const
Size of the label (in map units)
bool mOwnsSource
Whether layer&#39;s feature source is owned.
Evaluates and returns the diagram settings relating to a diagram for a specific feature.
The QgsVectorLayerDiagramProvider class implements support for diagrams within the labeling engine...
GEOSGeometry * obstacleGeometry() const
Returns the label&#39;s obstacle geometry, if different to the feature geometry.
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:79
Base class that can be used for any class that is capable of returning features.
QgsFields mFields
Layer&#39;s fields.
The QgsAbstractLabelProvider class is an interface class.
QgsCoordinateReferenceSystem mLayerCrs
Layer&#39;s CRS.
Stores the settings for rendering of all diagrams for a layer.
Class that adds extra information to QgsLabelFeature for labeling of diagrams.
Contains information about the context of a rendering operation.
The QgsLabelFeature class describes a feature that should be used within the labeling engine...
QgsAttributes mAttributes
Stores attribute values for diagram rendering.
QgsDiagramLabelFeature(QgsFeatureId id, geos::unique_ptr geometry, QSizeF size)
Create label feature, takes ownership of the geometry instance.
void setAttributes(const QgsAttributes &attrs)
Store feature&#39;s attributes - used for rendering of diagrams.
This class represents a coordinate reference system (CRS).
LabelPosition is a candidate feature label position.
Definition: labelposition.h:55
const QgsAttributes & attributes()
Gets feature&#39;s attributes - used for rendering of diagrams.
A vector of attributes.
Definition: qgsattributes.h:57
Represents a vector layer which manages a vector based data sets.
QgsDiagramLayerSettings mSettings
Diagram layer settings.