Quantum GIS API Documentation  1.8
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
QgsPointDisplacementRenderer Class Reference

A renderer that automatically displaces points with the same position. More...

#include <qgspointdisplacementrenderer.h>

Inheritance diagram for QgsPointDisplacementRenderer:
Inheritance graph
[legend]
Collaboration diagram for QgsPointDisplacementRenderer:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 QgsPointDisplacementRenderer (const QString &labelAttributeName="")
 ~QgsPointDisplacementRenderer ()
QgsFeatureRendererV2clone ()
virtual void toSld (QDomDocument &doc, QDomElement &element) const
 used from subclasses to create SLD Rule elements following SLD v1.1 specs
bool renderFeature (QgsFeature &feature, QgsRenderContext &context, int layer=-1, bool selected=false, bool drawVertexMarker=false)
 Reimplemented from QgsFeatureRendererV2.
QgsSymbolV2symbolForFeature (QgsFeature &feature)
void startRender (QgsRenderContext &context, const QgsVectorLayer *vlayer)
void stopRender (QgsRenderContext &context)
QList< QString > usedAttributes ()
QgsSymbolV2List symbols ()
 for symbol levels
QDomElement save (QDomDocument &doc)
 store renderer info to XML element
QgsLegendSymbologyList legendSymbologyItems (QSize iconSize)
 return a list of symbology items for the legend
QgsLegendSymbolList legendSymbolItems ()
 return a list of item text / symbol
void setLabelAttributeName (const QString &name)
QString labelAttributeName () const
void setEmbeddedRenderer (QgsFeatureRendererV2 *r)
 Sets embedded renderer (takes ownership)
QgsFeatureRendererV2embeddedRenderer ()
void setDisplacementGroups (const QList< QMap< QgsFeatureId, QgsFeature > > &list)
void setLabelFont (const QFont &f)
QFont labelFont () const
void setCircleWidth (double w)
double circleWidth () const
void setCircleColor (const QColor &c)
QColor circleColor () const
void setLabelColor (const QColor &c)
QColor labelColor () const
void setCircleRadiusAddition (double d)
double circleRadiusAddition () const
void setMaxLabelScaleDenominator (double d)
double maxLabelScaleDenominator () const
QgsMarkerSymbolV2centerSymbol ()
 Returns the symbol for the center of a displacement group (but _not_ ownership of the symbol)
void setCenterSymbol (QgsMarkerSymbolV2 *symbol)
 Sets the center symbol (takes ownership)
void setTolerance (double t)
double tolerance () const

Static Public Member Functions

static QgsFeatureRendererV2create (QDomElement &symbologyElem)
 create a renderer from XML element

Private Member Functions

void createDisplacementGroups (QgsVectorLayer *vlayer, const QgsRectangle &viewExtent)
 Create the displacement groups efficiently using a spatial index.
QgsRectangle searchRect (const QgsPoint &p) const
 Creates a search rectangle with mTolerance.
void printInfoDisplacementGroups ()
 This is a debugging function to check the entries in the displacement groups.
QString getLabel (const QgsFeature &f)
 Returns the label for a feature (using mLabelAttributeName as attribute field)
void renderPoint (const QPointF &point, QgsSymbolV2RenderContext &context, const QList< QgsMarkerSymbolV2 * > &symbols, const QStringList &labels)
void calculateSymbolAndLabelPositions (const QPointF &centerPoint, int nPosition, double radius, double symbolDiagonal, QList< QPointF > &symbolPositions, QList< QPointF > &labelShifts) const
void drawCircle (double radiusPainterUnits, QgsSymbolV2RenderContext &context, const QPointF &centerPoint, int nSymbols)
void drawSymbols (QgsFeature &f, QgsRenderContext &context, const QList< QgsMarkerSymbolV2 * > &symbolList, const QList< QPointF > &symbolPositions, bool selected=false)
void drawLabels (const QPointF &centerPoint, QgsSymbolV2RenderContext &context, const QList< QPointF > &labelShifts, const QStringList &labelList)
QgsSymbolV2firstSymbolForFeature (QgsFeatureRendererV2 *r, QgsFeature &f)
 Returns first symbol for feature or 0 if none.

Private Attributes

QgsFeatureRendererV2mRenderer
 Embedded renderer.
QString mLabelAttributeName
 Attribute name for labeling.
int mLabelIndex
 Label attribute index (or -1 if none).
QgsMarkerSymbolV2mCenterSymbol
 Center symbol for a displacement group.
double mTolerance
 Tolerance.
QFont mLabelFont
 Font that is passed to the renderer.
QColor mLabelColor
double mCircleWidth
 Line width for the circle.
QColor mCircleColor
 Color to draw the circle.
double mCircleRadiusAddition
 Addition to the default circle radius.
bool mDrawLabels
 Is set internally from startRender() depending on scale denominator.
double mMaxLabelScaleDenominator
 Maximum scale denominator for label display.
QList< QMap< QgsFeatureId,
QgsFeature > > 
mDisplacementGroups
 Groups of features that have the same position.
QSet< QgsFeatureIdmDisplacementIds
 Set that contains all the ids the display groups (for quicker lookup)

Detailed Description

A renderer that automatically displaces points with the same position.

Definition at line 31 of file qgspointdisplacementrenderer.h.


Constructor & Destructor Documentation

QgsPointDisplacementRenderer::QgsPointDisplacementRenderer ( const QString &  labelAttributeName = "")

Definition at line 46 of file qgspointdisplacementrenderer.cpp.

References mCenterSymbol, and mRenderer.


Member Function Documentation

void QgsPointDisplacementRenderer::calculateSymbolAndLabelPositions ( const QPointF &  centerPoint,
int  nPosition,
double  radius,
double  symbolDiagonal,
QList< QPointF > &  symbolPositions,
QList< QPointF > &  labelShifts 
) const [private]

Definition at line 481 of file qgspointdisplacementrenderer.cpp.

References M_PI.

Referenced by renderFeature().

Returns the symbol for the center of a displacement group (but _not_ ownership of the symbol)

Definition at line 89 of file qgspointdisplacementrenderer.h.

QColor QgsPointDisplacementRenderer::circleColor ( ) const [inline]

Definition at line 77 of file qgspointdisplacementrenderer.h.

Definition at line 83 of file qgspointdisplacementrenderer.h.

double QgsPointDisplacementRenderer::circleWidth ( ) const [inline]

Definition at line 74 of file qgspointdisplacementrenderer.h.

QgsFeatureRendererV2 * QgsPointDisplacementRenderer::create ( QDomElement &  symbologyElem) [static]
void QgsPointDisplacementRenderer::createDisplacementGroups ( QgsVectorLayer vlayer,
const QgsRectangle viewExtent 
) [private]
void QgsPointDisplacementRenderer::drawCircle ( double  radiusPainterUnits,
QgsSymbolV2RenderContext context,
const QPointF &  centerPoint,
int  nSymbols 
) [private]
void QgsPointDisplacementRenderer::drawLabels ( const QPointF &  centerPoint,
QgsSymbolV2RenderContext context,
const QList< QPointF > &  labelShifts,
const QStringList &  labelList 
) [private]
void QgsPointDisplacementRenderer::drawSymbols ( QgsFeature f,
QgsRenderContext context,
const QList< QgsMarkerSymbolV2 * > &  symbolList,
const QList< QPointF > &  symbolPositions,
bool  selected = false 
) [private]

Definition at line 528 of file qgspointdisplacementrenderer.cpp.

Referenced by renderFeature().

Definition at line 66 of file qgspointdisplacementrenderer.h.

Returns first symbol for feature or 0 if none.

Definition at line 586 of file qgspointdisplacementrenderer.cpp.

References QgsFeatureRendererV2::symbolsForFeature().

Referenced by renderFeature().

QString QgsPointDisplacementRenderer::getLabel ( const QgsFeature f) [private]

Returns the label for a feature (using mLabelAttributeName as attribute field)

Definition at line 458 of file qgspointdisplacementrenderer.cpp.

References QgsFeature::attributeMap(), and mLabelIndex.

Referenced by renderFeature().

Definition at line 62 of file qgspointdisplacementrenderer.h.

QColor QgsPointDisplacementRenderer::labelColor ( ) const [inline]

Definition at line 80 of file qgspointdisplacementrenderer.h.

QFont QgsPointDisplacementRenderer::labelFont ( ) const [inline]

Definition at line 71 of file qgspointdisplacementrenderer.h.

Referenced by create().

return a list of item text / symbol

Note:
: this method was added in version 1.5

Reimplemented from QgsFeatureRendererV2.

Definition at line 333 of file qgspointdisplacementrenderer.cpp.

References QgsFeatureRendererV2::legendSymbolItems(), and mRenderer.

return a list of symbology items for the legend

Reimplemented from QgsFeatureRendererV2.

Definition at line 324 of file qgspointdisplacementrenderer.cpp.

References QgsFeatureRendererV2::legendSymbologyItems(), and mRenderer.

Definition at line 86 of file qgspointdisplacementrenderer.h.

This is a debugging function to check the entries in the displacement groups.

Definition at line 421 of file qgspointdisplacementrenderer.cpp.

References FID_TO_STRING, mDisplacementGroups, mDisplacementIds, and QgsDebugMsg.

Referenced by startRender().

bool QgsPointDisplacementRenderer::renderFeature ( QgsFeature feature,
QgsRenderContext context,
int  layer = -1,
bool  selected = false,
bool  drawVertexMarker = false 
) [virtual]
void QgsPointDisplacementRenderer::renderPoint ( const QPointF &  point,
QgsSymbolV2RenderContext context,
const QList< QgsMarkerSymbolV2 * > &  symbols,
const QStringList &  labels 
) [private]
QDomElement QgsPointDisplacementRenderer::save ( QDomDocument &  doc) [virtual]

Creates a search rectangle with mTolerance.

Definition at line 416 of file qgspointdisplacementrenderer.cpp.

References mTolerance, QgsPoint::x(), and QgsPoint::y().

Referenced by createDisplacementGroups().

Sets the center symbol (takes ownership)

Definition at line 473 of file qgspointdisplacementrenderer.cpp.

References mCenterSymbol.

Referenced by clone(), and create().

void QgsPointDisplacementRenderer::setCircleColor ( const QColor &  c) [inline]

Definition at line 76 of file qgspointdisplacementrenderer.h.

Referenced by clone(), and create().

Definition at line 82 of file qgspointdisplacementrenderer.h.

Referenced by clone(), and create().

void QgsPointDisplacementRenderer::setCircleWidth ( double  w) [inline]

Definition at line 73 of file qgspointdisplacementrenderer.h.

Referenced by clone(), and create().

Definition at line 442 of file qgspointdisplacementrenderer.cpp.

References mDisplacementGroups, and mDisplacementIds.

Referenced by clone().

Sets embedded renderer (takes ownership)

Definition at line 190 of file qgspointdisplacementrenderer.cpp.

References mRenderer.

Referenced by clone(), and create().

void QgsPointDisplacementRenderer::setLabelAttributeName ( const QString &  name) [inline]

Definition at line 61 of file qgspointdisplacementrenderer.h.

Referenced by create().

void QgsPointDisplacementRenderer::setLabelColor ( const QColor &  c) [inline]

Definition at line 79 of file qgspointdisplacementrenderer.h.

Referenced by clone(), and create().

void QgsPointDisplacementRenderer::setLabelFont ( const QFont &  f) [inline]

Definition at line 70 of file qgspointdisplacementrenderer.h.

Referenced by clone(), and create().

Definition at line 85 of file qgspointdisplacementrenderer.h.

Referenced by clone(), and create().

void QgsPointDisplacementRenderer::setTolerance ( double  t) [inline]

Definition at line 93 of file qgspointdisplacementrenderer.h.

Referenced by clone().

void QgsPointDisplacementRenderer::startRender ( QgsRenderContext context,
const QgsVectorLayer vlayer 
) [virtual]

Implements QgsFeatureRendererV2.

Definition at line 196 of file qgspointdisplacementrenderer.cpp.

for symbol levels

Implements QgsFeatureRendererV2.

Definition at line 258 of file qgspointdisplacementrenderer.cpp.

References mRenderer, and QgsFeatureRendererV2::symbols().

double QgsPointDisplacementRenderer::tolerance ( ) const [inline]

Definition at line 94 of file qgspointdisplacementrenderer.h.

void QgsPointDisplacementRenderer::toSld ( QDomDocument &  doc,
QDomElement &  element 
) const [virtual]

used from subclasses to create SLD Rule elements following SLD v1.1 specs

Note:
added in 1.9

Reimplemented from QgsFeatureRendererV2.

Definition at line 71 of file qgspointdisplacementrenderer.cpp.

References mRenderer, and QgsFeatureRendererV2::toSld().

QList< QString > QgsPointDisplacementRenderer::usedAttributes ( ) [virtual]

Member Data Documentation

Color to draw the circle.

Definition at line 118 of file qgspointdisplacementrenderer.h.

Referenced by clone(), drawCircle(), and save().

Addition to the default circle radius.

Definition at line 120 of file qgspointdisplacementrenderer.h.

Referenced by clone(), renderFeature(), and save().

Line width for the circle.

Definition at line 116 of file qgspointdisplacementrenderer.h.

Referenced by clone(), drawCircle(), and save().

Groups of features that have the same position.

Definition at line 127 of file qgspointdisplacementrenderer.h.

Referenced by clone(), createDisplacementGroups(), printInfoDisplacementGroups(), renderFeature(), and setDisplacementGroups().

Set that contains all the ids the display groups (for quicker lookup)

Definition at line 129 of file qgspointdisplacementrenderer.h.

Referenced by createDisplacementGroups(), printInfoDisplacementGroups(), renderFeature(), and setDisplacementGroups().

Is set internally from startRender() depending on scale denominator.

Definition at line 122 of file qgspointdisplacementrenderer.h.

Referenced by QgsPointDisplacementRenderer(), renderFeature(), and startRender().

Attribute name for labeling.

Empty string means no labelling will be done

Definition at line 102 of file qgspointdisplacementrenderer.h.

Referenced by clone(), save(), startRender(), and usedAttributes().

Definition at line 114 of file qgspointdisplacementrenderer.h.

Referenced by clone(), drawLabels(), and save().

Font that is passed to the renderer.

Definition at line 113 of file qgspointdisplacementrenderer.h.

Referenced by clone(), drawLabels(), and save().

Label attribute index (or -1 if none).

This index is not stored, it is requested in the startRender() method

Definition at line 104 of file qgspointdisplacementrenderer.h.

Referenced by getLabel(), and startRender().

Maximum scale denominator for label display.

Negative number means no scale limitation

Definition at line 124 of file qgspointdisplacementrenderer.h.

Referenced by clone(), save(), and startRender().

Embedded renderer.

Like This, it is possible to use a classification together with point displacement

Definition at line 99 of file qgspointdisplacementrenderer.h.

Referenced by clone(), legendSymbolItems(), legendSymbologyItems(), QgsPointDisplacementRenderer(), renderFeature(), save(), setEmbeddedRenderer(), startRender(), stopRender(), symbols(), toSld(), usedAttributes(), and ~QgsPointDisplacementRenderer().

Tolerance.

Points that are closer together are considered as equal

Definition at line 110 of file qgspointdisplacementrenderer.h.

Referenced by clone(), and searchRect().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines