QGIS API Documentation  2.99.0-Master (5169e0d)
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"
30 #include "qgsmaptopixel.h"
31 #include "qgsrectangle.h"
32 #include "qgsscalecalculator.h"
33 #include "qgsexpressioncontext.h"
34 #include "qgsmaplayer.h"
35 
36 class QPainter;
37 
39 class QgsScaleCalculator;
40 class QgsMapRendererJob;
41 
42 
57 class CORE_EXPORT QgsMapSettings
58 {
59  public:
61 
66  QgsRectangle extent() const;
71  void setExtent( const QgsRectangle &rect, bool magnified = true );
72 
74  QSize outputSize() const;
76  void setOutputSize( QSize size );
77 
81  double rotation() const;
85  void setRotation( double degrees );
86 
89  double outputDpi() const;
91  void setOutputDpi( double dpi );
92 
99  void setMagnificationFactor( double factor );
100 
104  double magnificationFactor() const;
105 
108  QStringList layerIds() const;
111  QList<QgsMapLayer *> layers() const;
114  void setLayers( const QList<QgsMapLayer *> &layers );
115 
118  QMap<QString, QString> layerStyleOverrides() const;
121  void setLayerStyleOverrides( const QMap<QString, QString> &overrides );
122 
128  QString customRenderFlags() const { return mCustomRenderFlags; }
129 
135  void setCustomRenderFlags( const QString &customRenderFlags ) { mCustomRenderFlags = customRenderFlags; }
136 
138  void setDestinationCrs( const QgsCoordinateReferenceSystem &crs );
140  QgsCoordinateReferenceSystem destinationCrs() const;
141 
143  QgsUnitTypes::DistanceUnit mapUnits() const;
144 
146  void setBackgroundColor( const QColor &color ) { mBackgroundColor = color; }
148  QColor backgroundColor() const { return mBackgroundColor; }
149 
151  void setSelectionColor( const QColor &color ) { mSelectionColor = color; }
153  QColor selectionColor() const { return mSelectionColor; }
154 
156  enum Flag
157  {
158  Antialiasing = 0x01,
159  DrawEditingInfo = 0x02,
160  ForceVectorOutput = 0x04,
161  UseAdvancedEffects = 0x08,
162  DrawLabeling = 0x10,
163  UseRenderingOptimization = 0x20,
164  DrawSelection = 0x40,
165  DrawSymbolBounds = 0x80,
166  RenderMapTile = 0x100,
167  RenderPartialOutput = 0x200,
168  // TODO: ignore scale-based visibility (overview)
169  };
170  Q_DECLARE_FLAGS( Flags, Flag )
171 
172 
173  void setFlags( QgsMapSettings::Flags flags );
175  void setFlag( Flag flag, bool on = true );
177  Flags flags() const;
179  bool testFlag( Flag flag ) const;
180 
182  void setOutputImageFormat( QImage::Format format ) { mImageFormat = format; }
184  QImage::Format outputImageFormat() const { return mImageFormat; }
185 
187  bool hasValidSettings() const;
189  QgsRectangle visibleExtent() const;
192  QPolygonF visiblePolygon() const;
194  double mapUnitsPerPixel() const;
196  double scale() const;
197 
203  void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; }
204 
210  const QgsExpressionContext &expressionContext() const { return mExpressionContext; }
211 
212  // -- utility functions --
213 
215  const QgsDatumTransformStore &datumTransformStore() const { return mDatumTransformStore; }
216  QgsDatumTransformStore &datumTransformStore() { return mDatumTransformStore; }
217 
218  const QgsMapToPixel &mapToPixel() const { return mMapToPixel; }
219 
225  double layerToMapUnits( const QgsMapLayer *layer, const QgsRectangle &referenceExtent = QgsRectangle() ) const;
226 
232  QgsRectangle layerExtentToOutputExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
233 
239  QgsRectangle outputExtentToLayerExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
240 
245  QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, QgsPoint point ) const;
246 
252  QgsRectangle layerToMapCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
253 
258  QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, QgsPoint point ) const;
259 
265  QgsRectangle mapToLayerCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
266 
272  QgsCoordinateTransform layerTransform( const QgsMapLayer *layer ) const;
273 
275  QgsRectangle fullExtent() const;
276 
277  /* serialization */
278 
279  void readXml( QDomNode &node );
280 
281  void writeXml( QDomNode &node, QDomDocument &doc );
282 
285  void setSegmentationTolerance( double tolerance ) { mSegmentationTolerance = tolerance; }
287  double segmentationTolerance() const { return mSegmentationTolerance; }
288 
291  void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type ) { mSegmentationToleranceType = type; }
293  QgsAbstractGeometry::SegmentationToleranceType segmentationToleranceType() const { return mSegmentationToleranceType; }
294 
299  void setLabelingEngineSettings( const QgsLabelingEngineSettings &settings ) { mLabelingEngineSettings = settings; }
300 
305  const QgsLabelingEngineSettings &labelingEngineSettings() const { return mLabelingEngineSettings; }
306 
307  protected:
308 
309  double mDpi;
310 
311  QSize mSize;
312 
314 
315  double mRotation;
317 
320  QMap<QString, QString> mLayerStyleOverrides;
323 
326 
329 
330  Flags mFlags;
331 
332  QImage::Format mImageFormat;
333 
336 
338 
339  // derived properties
340  bool mValid;
343  double mScale;
344 
345  // utiity stuff
348 
349  void updateDerived();
350 };
351 
352 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsMapSettings::Flags )
353 
354 
355 #endif // QGSMAPSETTINGS_H
double mMagnificationFactor
A rectangle specified with double values.
Definition: qgsrectangle.h:38
Base class for all map layer types.
Definition: qgsmaplayer.h:53
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...
QgsLabelingEngineSettings mLabelingEngineSettings
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.
void setLabelingEngineSettings(const QgsLabelingEngineSettings &settings)
Sets global configuration of the labeling engine.
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:1040
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)
Stores global configuration for labeling engine.
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
const QgsLabelingEngineSettings & labelingEngineSettings() const
Returns global configuration of the labeling engine.