QGIS API Documentation  2.99.0-Master (cb63e82)
qgsrendercontext.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsrendercontext.h
3  ------------------
4  begin : March 16, 2008
5  copyright : (C) 2008 by Marco Hugentobler
6  email : marco dot hugentobler at karto dot baug dot ethz dot ch
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSRENDERCONTEXT_H
19 #define QGSRENDERCONTEXT_H
20 
21 #include "qgis_core.h"
22 #include <QColor>
23 #include <memory>
24 
25 #include "qgsabstractgeometry.h"
26 #include "qgscoordinatetransform.h"
27 #include "qgsmaptopixel.h"
28 #include "qgsrectangle.h"
30 #include "qgsexpressioncontext.h"
32 #include "qgsmapunitscale.h"
33 
34 class QPainter;
36 class QgsLabelingEngine;
37 class QgsMapSettings;
38 
39 
46 class CORE_EXPORT QgsRenderContext
47 {
48  public:
50 
52  QgsRenderContext &operator=( const QgsRenderContext &rh );
53 
57  enum Flag
58  {
59  DrawEditingInfo = 0x01,
60  ForceVectorOutput = 0x02,
61  UseAdvancedEffects = 0x04,
62  UseRenderingOptimization = 0x08,
63  DrawSelection = 0x10,
64  DrawSymbolBounds = 0x20,
65  RenderMapTile = 0x40,
66  Antialiasing = 0x80,
67  RenderPartialOutput = 0x100,
68  };
69  Q_DECLARE_FLAGS( Flags, Flag )
70 
71 
74  void setFlags( QgsRenderContext::Flags flags );
75 
79  void setFlag( Flag flag, bool on = true );
80 
84  Flags flags() const;
85 
89  bool testFlag( Flag flag ) const;
90 
93  static QgsRenderContext fromMapSettings( const QgsMapSettings &mapSettings );
94 
101  static QgsRenderContext fromQPainter( QPainter *painter );
102 
103  //getters
104 
109  QPainter *painter() {return mPainter;}
110 
114  QgsCoordinateTransform coordinateTransform() const {return mCoordTransform;}
115 
116  const QgsRectangle &extent() const {return mExtent;}
117 
118  const QgsMapToPixel &mapToPixel() const {return mMapToPixel;}
119 
126  double scaleFactor() const {return mScaleFactor;}
127 
128  bool renderingStopped() const {return mRenderingStopped;}
129 
130  bool forceVectorOutput() const;
131 
134  bool useAdvancedEffects() const;
135 
138  void setUseAdvancedEffects( bool enabled );
139 
140  bool drawEditingInformation() const;
141 
147  double rendererScale() const {return mRendererScale;}
148 
151  QgsLabelingEngine *labelingEngine() const { return mLabelingEngine; }
152 
153  QColor selectionColor() const { return mSelectionColor; }
154 
161  bool showSelection() const;
162 
163  //setters
164 
166  void setCoordinateTransform( const QgsCoordinateTransform &t );
167  void setMapToPixel( const QgsMapToPixel &mtp ) {mMapToPixel = mtp;}
168  void setExtent( const QgsRectangle &extent ) {mExtent = extent;}
169 
170  void setDrawEditingInformation( bool b );
171 
172  void setRenderingStopped( bool stopped ) {mRenderingStopped = stopped;}
173 
180  void setScaleFactor( double factor ) {mScaleFactor = factor;}
181 
187  void setRendererScale( double scale ) {mRendererScale = scale;}
188 
195  void setPainter( QPainter *p ) {mPainter = p;}
196 
197  void setForceVectorOutput( bool force );
198 
201  void setLabelingEngine( QgsLabelingEngine *engine2 ) { mLabelingEngine = engine2; }
202  void setSelectionColor( const QColor &color ) { mSelectionColor = color; }
203 
210  void setShowSelection( const bool showSelection );
211 
214  bool useRenderingOptimization() const;
215 
216  void setUseRenderingOptimization( bool enabled );
217 
219  const QgsVectorSimplifyMethod &vectorSimplifyMethod() const { return mVectorSimplifyMethod; }
220  void setVectorSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod ) { mVectorSimplifyMethod = simplifyMethod; }
221 
227  void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; }
228 
234  QgsExpressionContext &expressionContext() { return mExpressionContext; }
235 
242  const QgsExpressionContext &expressionContext() const { return mExpressionContext; }
243 
245  const QgsAbstractGeometry *geometry() const { return mGeometry; }
247  void setGeometry( const QgsAbstractGeometry *geometry ) { mGeometry = geometry; }
248 
254  void setFeatureFilterProvider( const QgsFeatureFilterProvider *ffp );
255 
261  const QgsFeatureFilterProvider *featureFilterProvider() const;
262 
265  void setSegmentationTolerance( double tolerance ) { mSegmentationTolerance = tolerance; }
267  double segmentationTolerance() const { return mSegmentationTolerance; }
268 
271  void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type ) { mSegmentationToleranceType = type; }
273  QgsAbstractGeometry::SegmentationToleranceType segmentationToleranceType() const { return mSegmentationToleranceType; }
274 
275  // Conversions
276 
283  double convertToPainterUnits( double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale = QgsMapUnitScale() ) const;
284 
291  double convertToMapUnits( double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale = QgsMapUnitScale() ) const;
292 
298  double convertFromMapUnits( double sizeInMapUnits, QgsUnitTypes::RenderUnit outputUnit ) const;
299 
300  private:
301 
302  Flags mFlags;
303 
305  QPainter *mPainter = nullptr;
306 
308  QgsCoordinateTransform mCoordTransform;
309 
310  QgsRectangle mExtent;
311 
312  QgsMapToPixel mMapToPixel;
313 
315  bool mRenderingStopped = false;
316 
318  double mScaleFactor = 1.0;
319 
321  double mRendererScale = 1.0;
322 
324  QgsLabelingEngine *mLabelingEngine = nullptr;
325 
327  QColor mSelectionColor;
328 
330  QgsVectorSimplifyMethod mVectorSimplifyMethod;
331 
333  QgsExpressionContext mExpressionContext;
334 
336  const QgsAbstractGeometry *mGeometry = nullptr;
337 
339  std::unique_ptr< QgsFeatureFilterProvider > mFeatureFilterProvider;
340 
341  double mSegmentationTolerance = M_PI_2 / 90;
342 
344 };
345 
346 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsRenderContext::Flags )
347 
348 #endif
void setRenderingStopped(bool stopped)
A rectangle specified with double values.
Definition: qgsrectangle.h:38
double rendererScale() const
Returns the renderer map scale.
const QgsVectorSimplifyMethod & vectorSimplifyMethod() const
Added in QGIS v2.4.
void setLabelingEngine(QgsLabelingEngine *engine2)
Assign new labeling engine.
QgsLabelingEngine * labelingEngine() const
Get access to new labeling engine (may be nullptr)
void setRendererScale(double scale)
Sets the renderer map scale.
bool renderingStopped() const
void setVectorSimplifyMethod(const QgsVectorSimplifyMethod &simplifyMethod)
SegmentationToleranceType
Segmentation tolerance as maximum angle or maximum difference between approximation and circle...
QgsAbstractGeometry::SegmentationToleranceType segmentationToleranceType() const
Gets segmentation tolerance type (maximum angle or maximum difference between curve and approximation...
void setExtent(const QgsRectangle &extent)
#define M_PI_2
Definition: util.cpp:45
The QgsMapSettings class contains configuration for rendering of the map.
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:34
void setSelectionColor(const QColor &color)
void setScaleFactor(double factor)
Sets the scaling factor for the render to convert painter units to physical sizes.
void setGeometry(const QgsAbstractGeometry *geometry)
Sets pointer to original (unsegmentized) geometry.
const QgsRectangle & extent() const
const QgsAbstractGeometry * geometry() const
Returns pointer to the unsegmentized geometry.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QColor selectionColor() const
void setPainter(QPainter *p)
Sets the destination QPainter for the render operation.
QgsCoordinateTransform coordinateTransform() const
Returns the current coordinate transform for the context, or an invalid transform is no coordinate tr...
Abstract interface for use by classes that filter the features of a layer.
void setSegmentationToleranceType(QgsAbstractGeometry::SegmentationToleranceType type)
Sets segmentation tolerance type (maximum angle or maximum difference between curve and approximation...
Abstract base class for all geometries.
QgsExpressionContext & expressionContext()
Gets the expression context.
void setSegmentationTolerance(double tolerance)
Sets the segmentation tolerance applied when rendering curved geometries.
The QgsLabelingEngine class provides map labeling functionality.
This class contains information how to simplify geometries fetched from a vector layer.
Contains information about the context of a rendering operation.
double segmentationTolerance() const
Gets the segmentation tolerance applied when rendering curved geometries.
QPainter * painter()
Returns the destination QPainter for the render operation.
const QgsMapToPixel & mapToPixel() const
Struct for storing maximum and minimum scales for measurements in map units.
void setMapToPixel(const QgsMapToPixel &mtp)
Class for doing transforms between two map coordinate systems.
Flag
Enumeration of flags that affect rendering operations.
double scaleFactor() const
Returns the scaling factor for the render to convert painter units to physical sizes.
const QgsExpressionContext & expressionContext() const
Gets the expression context (const version).
RenderUnit
Rendering size units.
Definition: qgsunittypes.h:95
void setExpressionContext(const QgsExpressionContext &context)
Sets the expression context.