QGIS API Documentation  3.8.0-Zanzibar (11aff65)
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
qint64 QgsFeatureId
Definition: qgsfeatureid.h:25
GEOSGeometry * geometry() const
Gets access to the associated geometry.
Container of fields for a vector layer.
Definition: qgsfields.h:42
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:111
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)
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...
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:79
pal::Layer * layer() const
Gets PAL layer of the label feature. Should be only used internally in PAL.
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.
QSizeF size() const
Size of the label (in map units)
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.
GEOSGeometry * obstacleGeometry() const
Returns the label&#39;s obstacle geometry, if different to the feature geometry.
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.