Quantum GIS API Documentation
1.8
|
A renderer that automatically displaces points with the same position. More...
#include <qgspointdisplacementrenderer.h>
Public Member Functions | |
QgsPointDisplacementRenderer (const QString &labelAttributeName="") | |
~QgsPointDisplacementRenderer () | |
QgsFeatureRendererV2 * | clone () |
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. | |
QgsSymbolV2 * | symbolForFeature (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) | |
QgsFeatureRendererV2 * | embeddedRenderer () |
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 |
QgsMarkerSymbolV2 * | centerSymbol () |
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 QgsFeatureRendererV2 * | create (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 ¢erPoint, int nPosition, double radius, double symbolDiagonal, QList< QPointF > &symbolPositions, QList< QPointF > &labelShifts) const |
void | drawCircle (double radiusPainterUnits, QgsSymbolV2RenderContext &context, const QPointF ¢erPoint, int nSymbols) |
void | drawSymbols (QgsFeature &f, QgsRenderContext &context, const QList< QgsMarkerSymbolV2 * > &symbolList, const QList< QPointF > &symbolPositions, bool selected=false) |
void | drawLabels (const QPointF ¢erPoint, QgsSymbolV2RenderContext &context, const QList< QPointF > &labelShifts, const QStringList &labelList) |
QgsSymbolV2 * | firstSymbolForFeature (QgsFeatureRendererV2 *r, QgsFeature &f) |
Returns first symbol for feature or 0 if none. | |
Private Attributes | |
QgsFeatureRendererV2 * | mRenderer |
Embedded renderer. | |
QString | mLabelAttributeName |
Attribute name for labeling. | |
int | mLabelIndex |
Label attribute index (or -1 if none). | |
QgsMarkerSymbolV2 * | mCenterSymbol |
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< QgsFeatureId > | mDisplacementIds |
Set that contains all the ids the display groups (for quicker lookup) |
A renderer that automatically displaces points with the same position.
Definition at line 31 of file qgspointdisplacementrenderer.h.
QgsPointDisplacementRenderer::QgsPointDisplacementRenderer | ( | const QString & | labelAttributeName = "" | ) |
Definition at line 31 of file qgspointdisplacementrenderer.cpp.
References QgsFeatureRendererV2::defaultRenderer(), mCenterSymbol, mDrawLabels, mRenderer, and QGis::Point.
Definition at line 46 of file qgspointdisplacementrenderer.cpp.
References mCenterSymbol, and mRenderer.
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().
QgsMarkerSymbolV2* QgsPointDisplacementRenderer::centerSymbol | ( | ) | [inline] |
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.
double QgsPointDisplacementRenderer::circleRadiusAddition | ( | ) | const [inline] |
Definition at line 83 of file qgspointdisplacementrenderer.h.
double QgsPointDisplacementRenderer::circleWidth | ( | ) | const [inline] |
Definition at line 74 of file qgspointdisplacementrenderer.h.
QgsFeatureRendererV2 * QgsPointDisplacementRenderer::clone | ( | ) | [virtual] |
Implements QgsFeatureRendererV2.
Definition at line 52 of file qgspointdisplacementrenderer.cpp.
References QgsFeatureRendererV2::clone(), QgsMarkerSymbolV2::clone(), mCenterSymbol, mCircleColor, mCircleRadiusAddition, mCircleWidth, mDisplacementGroups, mLabelAttributeName, mLabelColor, mLabelFont, mMaxLabelScaleDenominator, mRenderer, mTolerance, QgsPointDisplacementRenderer(), setCenterSymbol(), setCircleColor(), setCircleRadiusAddition(), setCircleWidth(), setDisplacementGroups(), setEmbeddedRenderer(), setLabelColor(), setLabelFont(), setMaxLabelScaleDenominator(), and setTolerance().
QgsFeatureRendererV2 * QgsPointDisplacementRenderer::create | ( | QDomElement & | symbologyElem | ) | [static] |
create a renderer from XML element
Definition at line 270 of file qgspointdisplacementrenderer.cpp.
References QgsSymbolLayerV2Utils::decodeColor(), labelFont(), QgsFeatureRendererV2::load(), QgsSymbolLayerV2Utils::loadSymbol(), QgsPointDisplacementRenderer(), setCenterSymbol(), setCircleColor(), setCircleRadiusAddition(), setCircleWidth(), setEmbeddedRenderer(), setLabelAttributeName(), setLabelColor(), setLabelFont(), and setMaxLabelScaleDenominator().
Referenced by QgsRendererV2Registry::QgsRendererV2Registry().
void QgsPointDisplacementRenderer::createDisplacementGroups | ( | QgsVectorLayer * | vlayer, |
const QgsRectangle & | viewExtent | ||
) | [private] |
Create the displacement groups efficiently using a spatial index.
Definition at line 342 of file qgspointdisplacementrenderer.cpp.
References QgsGeometry::asPoint(), QgsVectorLayer::featureAtId(), QgsVectorLayer::fieldNameIndex(), QgsFeature::geometry(), QgsFeature::id(), QgsSpatialIndex::insertFeature(), QgsSpatialIndex::intersects(), mDisplacementGroups, mDisplacementIds, QgsVectorLayer::nextFeature(), searchRect(), QgsVectorLayer::select(), usedAttributes(), QGis::WKBPoint, QGis::WKBPoint25D, and QgsVectorLayer::wkbType().
Referenced by startRender().
void QgsPointDisplacementRenderer::drawCircle | ( | double | radiusPainterUnits, |
QgsSymbolV2RenderContext & | context, | ||
const QPointF & | centerPoint, | ||
int | nSymbols | ||
) | [private] |
Definition at line 513 of file qgspointdisplacementrenderer.cpp.
References mCircleColor, mCircleWidth, QgsSymbolV2RenderContext::outputLineWidth(), QgsRenderContext::painter(), and QgsSymbolV2RenderContext::renderContext().
Referenced by renderFeature().
void QgsPointDisplacementRenderer::drawLabels | ( | const QPointF & | centerPoint, |
QgsSymbolV2RenderContext & | context, | ||
const QList< QPointF > & | labelShifts, | ||
const QStringList & | labelList | ||
) | [private] |
Definition at line 541 of file qgspointdisplacementrenderer.cpp.
References mLabelColor, mLabelFont, QgsSymbolV2RenderContext::outputLineWidth(), QgsRenderContext::painter(), QgsRenderContext::rasterScaleFactor(), and QgsSymbolV2RenderContext::renderContext().
Referenced by renderFeature().
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.
QgsSymbolV2 * QgsPointDisplacementRenderer::firstSymbolForFeature | ( | QgsFeatureRendererV2 * | r, |
QgsFeature & | f | ||
) | [private] |
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().
QString QgsPointDisplacementRenderer::labelAttributeName | ( | ) | const [inline] |
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
Reimplemented from QgsFeatureRendererV2.
Definition at line 333 of file qgspointdisplacementrenderer.cpp.
References QgsFeatureRendererV2::legendSymbolItems(), and mRenderer.
QgsLegendSymbologyList QgsPointDisplacementRenderer::legendSymbologyItems | ( | QSize | iconSize | ) | [virtual] |
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.
double QgsPointDisplacementRenderer::maxLabelScaleDenominator | ( | ) | const [inline] |
Definition at line 86 of file qgspointdisplacementrenderer.h.
void QgsPointDisplacementRenderer::printInfoDisplacementGroups | ( | ) | [private] |
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] |
Reimplemented from QgsFeatureRendererV2.
Reimplemented from QgsFeatureRendererV2.
Definition at line 77 of file qgspointdisplacementrenderer.cpp.
References QgsFeatureRendererV2::_getPoint(), QgsGeometry::asWkb(), calculateSymbolAndLabelPositions(), drawCircle(), drawLabels(), drawSymbols(), firstSymbolForFeature(), QgsFeature::geometry(), getLabel(), QgsFeature::id(), QgsSymbolLayerV2Utils::lineWidthScaleFactor(), M_PI, mCenterSymbol, mCircleRadiusAddition, mDisplacementGroups, mDisplacementIds, mDrawLabels, QgsSymbolV2::MM, mRenderer, QgsSymbolV2RenderContext::outputLineWidth(), QgsRenderContext::painter(), QgsMarkerSymbolV2::renderPoint(), QGis::WKBPoint, QGis::WKBPoint25D, and QgsGeometry::wkbType().
void QgsPointDisplacementRenderer::renderPoint | ( | const QPointF & | point, |
QgsSymbolV2RenderContext & | context, | ||
const QList< QgsMarkerSymbolV2 * > & | symbols, | ||
const QStringList & | labels | ||
) | [private] |
QDomElement QgsPointDisplacementRenderer::save | ( | QDomDocument & | doc | ) | [virtual] |
store renderer info to XML element
Reimplemented from QgsFeatureRendererV2.
Definition at line 299 of file qgspointdisplacementrenderer.cpp.
References QgsSymbolLayerV2Utils::encodeColor(), mCenterSymbol, mCircleColor, mCircleRadiusAddition, mCircleWidth, mLabelAttributeName, mLabelColor, mLabelFont, mMaxLabelScaleDenominator, mRenderer, RENDERER_TAG_NAME, QgsFeatureRendererV2::save(), and QgsSymbolLayerV2Utils::saveSymbol().
QgsRectangle QgsPointDisplacementRenderer::searchRect | ( | const QgsPoint & | p | ) | const [private] |
Creates a search rectangle with mTolerance.
Definition at line 416 of file qgspointdisplacementrenderer.cpp.
References mTolerance, QgsPoint::x(), and QgsPoint::y().
Referenced by createDisplacementGroups().
void QgsPointDisplacementRenderer::setCenterSymbol | ( | QgsMarkerSymbolV2 * | symbol | ) |
Sets the center symbol (takes ownership)
Definition at line 473 of file qgspointdisplacementrenderer.cpp.
References mCenterSymbol.
void QgsPointDisplacementRenderer::setCircleColor | ( | const QColor & | c | ) | [inline] |
Definition at line 76 of file qgspointdisplacementrenderer.h.
void QgsPointDisplacementRenderer::setCircleRadiusAddition | ( | double | d | ) | [inline] |
Definition at line 82 of file qgspointdisplacementrenderer.h.
void QgsPointDisplacementRenderer::setCircleWidth | ( | double | w | ) | [inline] |
Definition at line 73 of file qgspointdisplacementrenderer.h.
void QgsPointDisplacementRenderer::setDisplacementGroups | ( | const QList< QMap< QgsFeatureId, QgsFeature > > & | list | ) |
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.
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.
void QgsPointDisplacementRenderer::setLabelFont | ( | const QFont & | f | ) | [inline] |
Definition at line 70 of file qgspointdisplacementrenderer.h.
void QgsPointDisplacementRenderer::setMaxLabelScaleDenominator | ( | double | d | ) | [inline] |
Definition at line 85 of file qgspointdisplacementrenderer.h.
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 202 of file qgspointdisplacementrenderer.cpp.
References createDisplacementGroups(), QgsRenderContext::extent(), QgsVectorLayer::fieldNameIndex(), mCenterSymbol, mDrawLabels, mLabelAttributeName, mLabelIndex, mMaxLabelScaleDenominator, mRenderer, printInfoDisplacementGroups(), QgsRenderContext::rendererScale(), QgsFeatureRendererV2::startRender(), and QgsSymbolV2::startRender().
void QgsPointDisplacementRenderer::stopRender | ( | QgsRenderContext & | context | ) | [virtual] |
Implements QgsFeatureRendererV2.
Definition at line 234 of file qgspointdisplacementrenderer.cpp.
References mCenterSymbol, mRenderer, QgsDebugMsg, QgsFeatureRendererV2::stopRender(), and QgsSymbolV2::stopRender().
QgsSymbolV2 * QgsPointDisplacementRenderer::symbolForFeature | ( | QgsFeature & | feature | ) | [virtual] |
Implements QgsFeatureRendererV2.
Definition at line 196 of file qgspointdisplacementrenderer.cpp.
QgsSymbolV2List QgsPointDisplacementRenderer::symbols | ( | ) | [virtual] |
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
Reimplemented from QgsFeatureRendererV2.
Definition at line 71 of file qgspointdisplacementrenderer.cpp.
References mRenderer, and QgsFeatureRendererV2::toSld().
QList< QString > QgsPointDisplacementRenderer::usedAttributes | ( | ) | [virtual] |
Implements QgsFeatureRendererV2.
Definition at line 244 of file qgspointdisplacementrenderer.cpp.
References mLabelAttributeName, mRenderer, and QgsFeatureRendererV2::usedAttributes().
Referenced by createDisplacementGroups().
Center symbol for a displacement group.
Definition at line 107 of file qgspointdisplacementrenderer.h.
Referenced by clone(), QgsPointDisplacementRenderer(), renderFeature(), save(), setCenterSymbol(), startRender(), stopRender(), and ~QgsPointDisplacementRenderer().
QColor QgsPointDisplacementRenderer::mCircleColor [private] |
Color to draw the circle.
Definition at line 118 of file qgspointdisplacementrenderer.h.
Referenced by clone(), drawCircle(), and save().
double QgsPointDisplacementRenderer::mCircleRadiusAddition [private] |
Addition to the default circle radius.
Definition at line 120 of file qgspointdisplacementrenderer.h.
Referenced by clone(), renderFeature(), and save().
double QgsPointDisplacementRenderer::mCircleWidth [private] |
Line width for the circle.
Definition at line 116 of file qgspointdisplacementrenderer.h.
Referenced by clone(), drawCircle(), and save().
QList<QMap<QgsFeatureId, QgsFeature> > QgsPointDisplacementRenderer::mDisplacementGroups [private] |
Groups of features that have the same position.
Definition at line 127 of file qgspointdisplacementrenderer.h.
Referenced by clone(), createDisplacementGroups(), printInfoDisplacementGroups(), renderFeature(), and setDisplacementGroups().
QSet<QgsFeatureId> QgsPointDisplacementRenderer::mDisplacementIds [private] |
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().
bool QgsPointDisplacementRenderer::mDrawLabels [private] |
Is set internally from startRender() depending on scale denominator.
Definition at line 122 of file qgspointdisplacementrenderer.h.
Referenced by QgsPointDisplacementRenderer(), renderFeature(), and startRender().
QString QgsPointDisplacementRenderer::mLabelAttributeName [private] |
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().
QColor QgsPointDisplacementRenderer::mLabelColor [private] |
Definition at line 114 of file qgspointdisplacementrenderer.h.
Referenced by clone(), drawLabels(), and save().
QFont QgsPointDisplacementRenderer::mLabelFont [private] |
Font that is passed to the renderer.
Definition at line 113 of file qgspointdisplacementrenderer.h.
Referenced by clone(), drawLabels(), and save().
int QgsPointDisplacementRenderer::mLabelIndex [private] |
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().
double QgsPointDisplacementRenderer::mMaxLabelScaleDenominator [private] |
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().
double QgsPointDisplacementRenderer::mTolerance [private] |
Tolerance.
Points that are closer together are considered as equal
Definition at line 110 of file qgspointdisplacementrenderer.h.
Referenced by clone(), and searchRect().