QGIS API Documentation  2.99.0-Master (0a63d1f)
qgshighlight.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgshighlight.h - widget to highlight geometries
3  --------------------------------------
4  Date : 02-Mar-2011
5  Copyright : (C) 2011 by Juergen E. Fischer, norBIT GmbH
6  Email : jef at norbit dot de
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 #ifndef QGSHIGHLIGHT_H
16 #define QGSHIGHLIGHT_H
17 
18 #include "qgsmapcanvasitem.h"
19 #include "qgsgeometry.h"
20 #include "qgssymbol.h"
21 #include <QBrush>
22 #include <QColor>
23 #include <QList>
24 #include <QPen>
25 #include <QPainter>
26 #include <QPainterPath>
27 #include "qgis_gui.h"
28 
29 class QgsMapLayer;
30 class QgsVectorLayer;
31 class QgsSymbol;
32 
36 class GUI_EXPORT QgsHighlight: public QgsMapCanvasItem
37 {
38  public:
39 
45  QgsHighlight( QgsMapCanvas *mapCanvas, const QgsGeometry& geom, QgsMapLayer *layer );
46 
52  QgsHighlight( QgsMapCanvas *mapCanvas, const QgsGeometry& geom, QgsVectorLayer *layer );
53 
60  QgsHighlight( QgsMapCanvas *mapCanvas, const QgsFeature& feature, QgsVectorLayer *layer );
61  ~QgsHighlight();
62 
65  void setColor( const QColor & color );
66 
69  void setFillColor( const QColor & fillColor );
70 
72  void setWidth( int width );
73 
76  void setBuffer( double buffer ) { mBuffer = buffer; }
77 
80  void setMinWidth( double width ) { mMinWidth = width; }
81 
82  const QgsMapLayer *layer() const { return mLayer; }
83 
84  virtual void updatePosition() override;
85 
86  protected:
87  virtual void paint( QPainter* p ) override;
88 
90  void updateRect();
91 
92  private:
93  void init();
94  void setSymbol( QgsSymbol* symbol, const QgsRenderContext & context, const QColor & color, const QColor & fillColor );
95  double getSymbolWidth( const QgsRenderContext & context, double width, QgsUnitTypes::RenderUnit unit );
97  QgsFeatureRenderer * getRenderer( QgsRenderContext &context, const QColor & color, const QColor & fillColor );
98  void paintPoint( QPainter *p, const QgsPoint& point );
99  void paintLine( QPainter *p, QgsPolyline line );
100  void paintPolygon( QPainter *p, QgsPolygon polygon );
101 
102  QBrush mBrush;
103  QPen mPen;
104  QgsGeometry *mGeometry;
105  QgsMapLayer *mLayer;
106  QgsFeature mFeature;
107  double mBuffer; // line / outline buffer in pixels
108  double mMinWidth; // line / outline minimum width in pixels
109 };
110 
111 #endif
Base class for all map layer types.
Definition: qgsmaplayer.h:50
QVector< QgsPoint > QgsPolyline
Polyline is represented as a vector of points.
Definition: qgsgeometry.h:47
An abstract class for items that can be placed on the map canvas.
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:79
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:136
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:74
void setBuffer(double buffer)
Set line / outline buffer in millimeters.
Definition: qgshighlight.h:76
A class for highlight features on the map.
Definition: qgshighlight.h:36
QVector< QgsPolyline > QgsPolygon
Polygon: first item of the list is outer ring, inner rings (if any) start from second item...
Definition: qgsgeometry.h:53
A class to represent a point.
Definition: qgspoint.h:143
virtual void paint(QPainter *painter)=0
function to be implemented by derived classes
Contains information about the context of a rendering operation.
const QgsMapLayer * layer() const
Definition: qgshighlight.h:82
Represents a vector layer which manages a vector based data sets.
virtual void updatePosition()
called on changed extent or resize event to update position of the item
RenderUnit
Rendering size units.
Definition: qgsunittypes.h:92
void setMinWidth(double width)
Set minimum line / outline width in millimeters.
Definition: qgshighlight.h:80