QGIS API Documentation  2.99.0-Master (314842d)
qgsmapsettings.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmapsettings.h
3  --------------------------------------
4  Date : December 2013
5  Copyright : (C) 2013 by Martin Dobias
6  Email : wonder dot sk at gmail dot com
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 
16 #ifndef QGSMAPSETTINGS_H
17 #define QGSMAPSETTINGS_H
18 
19 #include "qgis_core.h"
20 #include <QColor>
21 #include <QImage>
22 #include <QPointer>
23 #include <QSize>
24 #include <QStringList>
25 
26 #include "qgsabstractgeometry.h"
28 #include "qgsdatumtransformstore.h"
29 #include "qgsmaptopixel.h"
30 #include "qgsrectangle.h"
31 #include "qgsscalecalculator.h"
32 #include "qgsexpressioncontext.h"
33 #include "qgsmaplayer.h"
34 
35 class QPainter;
36 
38 class QgsScaleCalculator;
39 class QgsMapRendererJob;
40 
41 
56 class CORE_EXPORT QgsMapSettings
57 {
58  public:
60 
65  QgsRectangle extent() const;
70  void setExtent( const QgsRectangle &rect, bool magnified = true );
71 
73  QSize outputSize() const;
75  void setOutputSize( QSize size );
76 
80  double rotation() const;
84  void setRotation( double degrees );
85 
88  double outputDpi() const;
90  void setOutputDpi( double dpi );
91 
98  void setMagnificationFactor( double factor );
99 
103  double magnificationFactor() const;
104 
107  QStringList layerIds() const;
110  QList<QgsMapLayer *> layers() const;
113  void setLayers( const QList<QgsMapLayer *> &layers );
114 
117  QMap<QString, QString> layerStyleOverrides() const;
120  void setLayerStyleOverrides( const QMap<QString, QString> &overrides );
121 
127  QString customRenderFlags() const { return mCustomRenderFlags; }
128 
134  void setCustomRenderFlags( const QString &customRenderFlags ) { mCustomRenderFlags = customRenderFlags; }
135 
137  void setDestinationCrs( const QgsCoordinateReferenceSystem &crs );
139  QgsCoordinateReferenceSystem destinationCrs() const;
140 
142  QgsUnitTypes::DistanceUnit mapUnits() const;
143 
145  void setBackgroundColor( const QColor &color ) { mBackgroundColor = color; }
147  QColor backgroundColor() const { return mBackgroundColor; }
148 
150  void setSelectionColor( const QColor &color ) { mSelectionColor = color; }
152  QColor selectionColor() const { return mSelectionColor; }
153 
155  enum Flag
156  {
157  Antialiasing = 0x01,
158  DrawEditingInfo = 0x02,
159  ForceVectorOutput = 0x04,
160  UseAdvancedEffects = 0x08,
161  DrawLabeling = 0x10,
162  UseRenderingOptimization = 0x20,
163  DrawSelection = 0x40,
164  DrawSymbolBounds = 0x80,
165  RenderMapTile = 0x100,
166  RenderPartialOutput = 0x200,
167  // TODO: ignore scale-based visibility (overview)
168  };
169  Q_DECLARE_FLAGS( Flags, Flag )
170 
171 
172  void setFlags( QgsMapSettings::Flags flags );
174  void setFlag( Flag flag, bool on = true );
176  Flags flags() const;
178  bool testFlag( Flag flag ) const;
179 
181  void setOutputImageFormat( QImage::Format format ) { mImageFormat = format; }
183  QImage::Format outputImageFormat() const { return mImageFormat; }
184 
186  bool hasValidSettings() const;
188  QgsRectangle visibleExtent() const;
191  QPolygonF visiblePolygon() const;
193  double mapUnitsPerPixel() const;
195  double scale() const;
196 
202  void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; }
203 
209  const QgsExpressionContext &expressionContext() const { return mExpressionContext; }
210 
211  // -- utility functions --
212 
214  const QgsDatumTransformStore &datumTransformStore() const { return mDatumTransformStore; }
215  QgsDatumTransformStore &datumTransformStore() { return mDatumTransformStore; }
216 
217  const QgsMapToPixel &mapToPixel() const { return mMapToPixel; }
218 
224  double layerToMapUnits( const QgsMapLayer *layer, const QgsRectangle &referenceExtent = QgsRectangle() ) const;
225 
231  QgsRectangle layerExtentToOutputExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
232 
238  QgsRectangle outputExtentToLayerExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
239 
244  QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, QgsPoint point ) const;
245 
251  QgsRectangle layerToMapCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
252 
257  QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, QgsPoint point ) const;
258 
264  QgsRectangle mapToLayerCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
265 
271  QgsCoordinateTransform layerTransform( const QgsMapLayer *layer ) const;
272 
274  QgsRectangle fullExtent() const;
275 
276  /* serialization */
277 
278  void readXml( QDomNode &node );
279 
280  void writeXml( QDomNode &node, QDomDocument &doc );
281 
284  void setSegmentationTolerance( double tolerance ) { mSegmentationTolerance = tolerance; }
286  double segmentationTolerance() const { return mSegmentationTolerance; }
287 
290  void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type ) { mSegmentationToleranceType = type; }
292  QgsAbstractGeometry::SegmentationToleranceType segmentationToleranceType() const { return mSegmentationToleranceType; }
293 
294  protected:
295 
296  double mDpi;
297 
298  QSize mSize;
299 
301 
302  double mRotation;
304 
307  QMap<QString, QString> mLayerStyleOverrides;
310 
313 
316 
317  Flags mFlags;
318 
319  QImage::Format mImageFormat;
320 
323 
324 
325  // derived properties
326  bool mValid;
329  double mScale;
330 
331  // utiity stuff
334 
335  void updateDerived();
336 };
337 
338 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsMapSettings::Flags )
339 
340 
341 #endif // QGSMAPSETTINGS_H
double mMagnificationFactor
A rectangle specified with double values.
Definition: qgsrectangle.h:36
Base class for all map layer types.
Definition: qgsmaplayer.h:52
QgsDatumTransformStore & datumTransformStore()
QgsRectangle mVisibleExtent
Extent with some additional white space that matches the output aspect ratio.
void setSegmentationToleranceType(QgsAbstractGeometry::SegmentationToleranceType type)
Sets segmentation tolerance type (maximum angle or maximum difference between curve and approximation...
QgsMapToPixel mMapToPixel
Abstract base class for map rendering implementations.
const QgsExpressionContext & expressionContext() const
Gets the expression context.
void setExpressionContext(const QgsExpressionContext &context)
Sets the expression context.
QgsCoordinateReferenceSystem mDestCRS
QMap< QString, QString > mLayerStyleOverrides
QColor backgroundColor() const
Get the background color of the map.
void setCustomRenderFlags(const QString &customRenderFlags)
Sets the custom rendering flags.
const QgsDatumTransformStore & datumTransformStore() const
SegmentationToleranceType
Segmentation tolerance as maximum angle or maximum difference between approximation and circle...
The QgsMapSettings class contains configuration for rendering of the map.
QString customRenderFlags() const
Get custom rendering flags.
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:34
QImage::Format mImageFormat
bool mValid
Whether the actual settings are valid (set in updateDerived())
QgsRectangle mExtent
Flag
Enumeration of flags that adjust the way the map is rendered.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void setSegmentationTolerance(double tolerance)
Sets the segmentation tolerance applied when rendering curved geometries.
QImage::Format outputImageFormat() const
format of internal QImage, default QImage::Format_ARGB32_Premultiplied
void setOutputImageFormat(QImage::Format format)
sets format of internal QImage
QgsExpressionContext mExpressionContext
QgsScaleCalculator mScaleCalculator
A class to represent a point.
Definition: qgspoint.h:37
const QgsMapToPixel & mapToPixel() const
QgsAbstractGeometry::SegmentationToleranceType segmentationToleranceType() const
Gets segmentation tolerance type (maximum angle or maximum difference between curve and approximation...
Calculates scale for a given combination of canvas size, map extent, and monitor dpi.
DistanceUnit
Units of distance.
Definition: qgsunittypes.h:42
void setBackgroundColor(const QColor &color)
Set the background color of the map.
double segmentationTolerance() const
Gets the segmentation tolerance applied when rendering curved geometries.
double mMapUnitsPerPixel
double mSegmentationTolerance
void setSelectionColor(const QColor &color)
Set color that is used for drawing of selected vector features.
QList< QgsWeakMapLayerPointer > QgsWeakMapLayerPointerList
A list of weak pointers to QgsMapLayers.
Definition: qgsmaplayer.h:983
The QgsDatumTransformStore class keeps track of datum transformations as chosen by the user...
QgsWeakMapLayerPointerList mLayers
list of layers to be rendered (stored as weak pointers)
This class represents a coordinate reference system (CRS).
QColor mBackgroundColor
Class for doing transforms between two map coordinate systems.
QColor selectionColor() const
Get color that is used for drawing of selected vector features.
QColor mSelectionColor
QgsDatumTransformStore mDatumTransformStore
QString mCustomRenderFlags
QgsAbstractGeometry::SegmentationToleranceType mSegmentationToleranceType