15 #ifndef QGSDIAGRAMRENDERER_H 
   16 #define QGSDIAGRAMRENDERER_H 
   18 #include "qgis_core.h" 
   25 #include <QDomDocument> 
   82       MapOrientation = 1 << 4,
 
   84     Q_DECLARE_FLAGS( LinePlacementFlags, LinePlacementFlag )
 
  182     double zIndex()
 const { 
return mZIndex; }
 
  281     void readXml( 
const QDomElement &elem );
 
  287     void writeXml( QDomElement &layerElem, QDomDocument &doc ) 
const;
 
  335     Placement mPlacement = AroundPoint;
 
  338     LinePlacementFlags mPlacementFlags = OnLine;
 
  348     double mZIndex = 0.0;
 
  351     bool mObstacle = 
false;
 
  354     double mDistance = 0.0;
 
  360     bool mShowAll = 
true;
 
  365     static void initPropertyDefinitions();
 
  452     double penWidth = 0.0;
 
  455     double barWidth = 5.0;
 
  458     double opacity = 1.0;
 
  460     bool scaleByArea = 
true;
 
  466     double rotationOffset = 270;
 
  468     bool scaleBasedVisibility = 
false;
 
  476     double maximumScale = 0;
 
  484     double minimumScale = 0;
 
  487     double minimumSize = 0.0;
 
  568     void setDirection( 
Direction direction );
 
  612     bool showAxis() 
const;
 
  622     void setShowAxis( 
bool showAxis );
 
  651     bool mShowAxis = 
false;
 
  652     std::unique_ptr< QgsLineSymbol > mAxisLineSymbol;
 
  653     std::unique_ptr< QgsPaintEffect > mPaintEffect;
 
  689     if ( sipCpp->rendererName() == QLatin1String( 
"SingleCategory" ) )
 
  690       sipType = sipType_QgsSingleCategoryDiagramRenderer;
 
  691     else if ( sipCpp->rendererName() == QLatin1String( 
"LinearlyInterpolated" ) )
 
  692       sipType = sipType_QgsLinearlyInterpolatedDiagramRenderer;
 
  790     void convertSizeToMapUnits( QSizeF &size, 
const QgsRenderContext &context ) 
const;
 
  793     static int dpiPaintDevice( 
const QPainter * );
 
  807     void _writeXml( QDomElement &rendererElem, QDomDocument &doc, 
const QgsReadWriteContext &context ) 
const;
 
  813     bool mShowAttributeLegend = 
true;
 
  829     QString rendererName()
 const override { 
return QStringLiteral( 
"SingleCategory" ); }
 
  835     QList<QgsDiagramSettings> diagramSettings() 
const override;
 
  838     void writeXml( QDomElement &layerElem, QDomDocument &doc, 
const QgsReadWriteContext &context ) 
const override;
 
  868     QList<QgsDiagramSettings> diagramSettings() 
const override;
 
  872     QList<QString> diagramAttributes() 
const override;
 
  876     QString 
rendererName()
 const override { 
return QStringLiteral( 
"LinearlyInterpolated" ); }
 
  878     void setLowerValue( 
double val ) { mInterpolationSettings.lowerValue = val; }
 
  879     double lowerValue()
 const { 
return mInterpolationSettings.lowerValue; }
 
  881     void setUpperValue( 
double val ) { mInterpolationSettings.upperValue = val; }
 
  882     double upperValue()
 const { 
return mInterpolationSettings.upperValue; }
 
  884     void setLowerSize( QSizeF s ) { mInterpolationSettings.lowerSize = s; }
 
  885     QSizeF 
lowerSize()
 const { 
return mInterpolationSettings.lowerSize; }
 
  887     void setUpperSize( QSizeF s ) { mInterpolationSettings.upperSize = s; }
 
  888     QSizeF 
upperSize()
 const { 
return mInterpolationSettings.upperSize; }
 
  911     void writeXml( QDomElement &layerElem, QDomDocument &doc, 
const QgsReadWriteContext &context ) 
const override;
 
Object that keeps configuration of appearance of marker symbol's data-defined size in legend.
Additional diagram settings for interpolated size rendering.
bool classificationAttributeIsExpression
QString classificationField
Name of the field for classification.
QString classificationAttributeExpression
Stores the settings for rendering of all diagrams for a layer.
LinePlacementFlag
Line placement flags for controlling line based placements.
void setZIndex(double index)
Sets the diagram z-index.
Placement placement() const
Returns the diagram placement.
QgsCoordinateTransform coordinateTransform() const
Returns the coordinate transform associated with the layer, or an invalid transform if no transformat...
QgsDiagramRenderer * renderer()
Returns the diagram renderer associated with the layer.
Property
Data definable properties.
@ StartAngle
Angle offset for pie diagram.
@ Distance
Distance to diagram from feature.
@ IsObstacle
Whether diagram features act as obstacles for other diagrams/labels.
@ PositionX
X-coordinate data defined diagram position.
@ Priority
Diagram priority (between 0 and 10)
@ AlwaysShow
Whether the diagram should always be shown, even if it overlaps other diagrams/labels.
@ Show
Whether to show the diagram.
@ StrokeColor
Stroke color.
@ StrokeWidth
Stroke width.
@ ZIndex
Z-index for diagram ordering.
@ BackgroundColor
Diagram background color.
@ PositionY
Y-coordinate data defined diagram position.
const QgsPropertyCollection & dataDefinedProperties() const
Returns a reference to the diagram's property collection, used for data defined overrides.
bool showAllDiagrams() const
Returns whether the layer should show all diagrams, including overlapping diagrams.
LinePlacementFlags linePlacementFlags() const
Returns the diagram placement flags.
void setShowAllDiagrams(bool showAllDiagrams)
Sets whether the layer should show all diagrams, including overlapping diagrams.
void setDistance(double distance)
Sets the distance between the diagram and the feature.
void setPriority(int value)
Sets the diagram priority.
int priority() const
Returns the diagram priority.
void setIsObstacle(bool isObstacle)
Sets whether the feature associated with a diagram acts as an obstacle for other labels or diagrams.
bool isObstacle() const
Returns whether the feature associated with a diagram acts as an obstacle for other labels or diagram...
const QgsDiagramRenderer * renderer() const
Returns the diagram renderer associated with the layer.
QgsPropertyCollection & dataDefinedProperties()
Returns a reference to the diagram's property collection, used for data defined overrides.
void setPlacement(Placement value)
Sets the diagram placement.
void setLinePlacementFlags(LinePlacementFlags flags)
Sets the the diagram placement flags.
void setDataDefinedProperties(const QgsPropertyCollection &collection)
Sets the diagram's property collection, used for data defined overrides.
double zIndex() const
Returns the diagram z-index.
double distance() const
Returns the distance between the diagram and the feature (in mm).
Evaluates and returns the diagram settings relating to a diagram for a specific feature.
virtual QString rendererName() const =0
virtual QgsDiagramRenderer * clone() const =0
Returns new instance that is equivalent to this one.
virtual QList< QString > diagramAttributes() const =0
Returns attribute indices needed for diagram rendering.
virtual QSizeF diagramSize(const QgsFeature &features, const QgsRenderContext &c) const =0
Returns size of the diagram (in painter units) or an invalid size in case of error.
void setAttributeLegend(bool enabled)
Sets whether the renderer will show legend items for diagram attributes.
QgsDiagram * diagram() const
virtual bool diagramSettings(const QgsFeature &feature, const QgsRenderContext &c, QgsDiagramSettings &s) const =0
Returns diagram settings for a feature (or false if the diagram for the feature is not to be rendered...
virtual void writeXml(QDomElement &layerElem, QDomDocument &doc, const QgsReadWriteContext &context) const =0
Writes diagram state to a DOM element.
std::unique_ptr< QgsDiagram > mDiagram
Reference to the object that does the real diagram rendering.
virtual ~QgsDiagramRenderer()=default
virtual QList< QgsDiagramSettings > diagramSettings() const =0
Returns list with all diagram settings in the renderer.
QgsDiagramRenderer()=default
Constructor for QgsDiagramRenderer.
virtual void readXml(const QDomElement &elem, const QgsReadWriteContext &context)=0
Reads diagram state from a DOM element.
bool attributeLegend() const
Returns true if renderer will show legend items for diagram attributes.
Stores the settings for rendering a single diagram.
QgsUnitTypes::RenderUnit spacingUnit() const
Returns the units for the content spacing.
DiagramOrientation
Orientation of histogram.
QList< QString > categoryAttributes
QList< QString > categoryLabels
QgsMapUnitScale lineSizeScale
Line unit scale.
double spacing() const
Returns the spacing between diagram contents.
const QgsMapUnitScale & spacingMapUnitScale() const
Returns the map unit scale for the content spacing.
QList< QColor > categoryColors
QgsMapUnitScale sizeScale
Diagram size unit scale.
void setSpacing(double spacing)
Sets the spacing between diagram contents.
void setSpacingMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale for the content spacing.
Direction
Angular directions.
@ Counterclockwise
Counter-clockwise orientation.
@ Clockwise
Clockwise orientation.
void setSpacingUnit(QgsUnitTypes::RenderUnit unit)
Sets the unit for the content spacing.
Base class for all diagram types.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Layer tree node points to a map layer.
The QgsLegendRendererItem class is abstract interface for legend items returned from QgsMapLayerLegen...
A line symbol type, for rendering LineString and MultiLineString geometries.
void setLowerValue(double val)
double upperValue() const
QString classificationAttributeExpression() const
void setDiagramSettings(const QgsDiagramSettings &s)
double lowerValue() const
void setLowerSize(QSizeF s)
QString classificationField() const
Returns the field name used for interpolating the diagram size.
void setClassificationAttributeExpression(const QString &expression)
bool classificationAttributeIsExpression() const
QString rendererName() const override
void setClassificationField(const QString &field)
Sets the field name used for interpolating the diagram size.
void setClassificationAttributeIsExpression(bool isExpression)
void setUpperSize(QSizeF s)
void setUpperValue(double val)
Perform transforms between map coordinates and device coordinates.
Struct for storing maximum and minimum scales for measurements in map units.
Base class for visual effects which can be applied to QPicture drawings.
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
The class is used as a container of context for various read/write operations on other objects.
Contains information about the context of a rendering operation.
Renders the diagrams for all features with the same settings.
QList< QString > diagramAttributes() const override
Returns attribute indices needed for diagram rendering.
void setDiagramSettings(const QgsDiagramSettings &s)
QgsSingleCategoryDiagramRenderer()=default
Constructor for QgsSingleCategoryDiagramRenderer.
RenderUnit
Rendering size units.
@ RenderMillimeters
Millimeters.
Represents a vector layer which manages a vector based data sets.
A set of features which influence the labeling process.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.