QGIS API Documentation  2.99.0-Master (9fdd060)
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 "qgis_sip.h"
21 #include <QColor>
22 #include <QImage>
23 #include <QPointer>
24 #include <QSize>
25 #include <QStringList>
26 
27 #include "qgsabstractgeometry.h"
29 #include "qgsdatumtransformstore.h"
31 #include "qgsmaptopixel.h"
32 #include "qgsrectangle.h"
33 #include "qgsscalecalculator.h"
34 #include "qgsexpressioncontext.h"
35 #include "qgsmaplayer.h"
36 
37 class QPainter;
38 
40 class QgsScaleCalculator;
41 class QgsMapRendererJob;
42 
43 
59 class CORE_EXPORT QgsMapSettings
60 {
61  public:
63 
70  QgsRectangle extent() const;
71 
78  void setExtent( const QgsRectangle &rect, bool magnified = true );
79 
81  QSize outputSize() const;
83  void setOutputSize( QSize size );
84 
90  double rotation() const;
91 
97  void setRotation( double rotation );
98 
103  double outputDpi() const;
105  void setOutputDpi( double dpi );
106 
113  void setMagnificationFactor( double factor );
114 
120  double magnificationFactor() const;
121 
126  QStringList layerIds() const;
127 
132  QList<QgsMapLayer *> layers() const;
133 
138  void setLayers( const QList<QgsMapLayer *> &layers );
139 
144  QMap<QString, QString> layerStyleOverrides() const;
145 
150  void setLayerStyleOverrides( const QMap<QString, QString> &overrides );
151 
158  QString customRenderFlags() const { return mCustomRenderFlags; }
159 
166  void setCustomRenderFlags( const QString &customRenderFlags ) { mCustomRenderFlags = customRenderFlags; }
167 
169  void setDestinationCrs( const QgsCoordinateReferenceSystem &crs );
171  QgsCoordinateReferenceSystem destinationCrs() const;
172 
174  QgsUnitTypes::DistanceUnit mapUnits() const;
175 
184  bool setEllipsoid( const QString &ellipsoid );
185 
192  QString ellipsoid() const { return mEllipsoid; }
193 
195  void setBackgroundColor( const QColor &color ) { mBackgroundColor = color; }
197  QColor backgroundColor() const { return mBackgroundColor; }
198 
200  void setSelectionColor( const QColor &color ) { mSelectionColor = color; }
202  QColor selectionColor() const { return mSelectionColor; }
203 
205  enum Flag
206  {
207  Antialiasing = 0x01,
208  DrawEditingInfo = 0x02,
209  ForceVectorOutput = 0x04,
210  UseAdvancedEffects = 0x08,
211  DrawLabeling = 0x10,
212  UseRenderingOptimization = 0x20,
213  DrawSelection = 0x40,
214  DrawSymbolBounds = 0x80,
215  RenderMapTile = 0x100,
216  RenderPartialOutput = 0x200,
217  // TODO: ignore scale-based visibility (overview)
218  };
219  Q_DECLARE_FLAGS( Flags, Flag )
220 
221 
222  void setFlags( QgsMapSettings::Flags flags );
224  void setFlag( Flag flag, bool on = true );
226  Flags flags() const;
228  bool testFlag( Flag flag ) const;
229 
231  void setOutputImageFormat( QImage::Format format ) { mImageFormat = format; }
233  QImage::Format outputImageFormat() const { return mImageFormat; }
234 
236  bool hasValidSettings() const;
238  QgsRectangle visibleExtent() const;
239 
244  QPolygonF visiblePolygon() const;
246  double mapUnitsPerPixel() const;
247 
252  double scale() const;
253 
260  void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; }
261 
268  const QgsExpressionContext &expressionContext() const { return mExpressionContext; }
269 
270  // -- utility functions --
271 
273  const QgsDatumTransformStore &datumTransformStore() const { return mDatumTransformStore; } SIP_SKIP
274  QgsDatumTransformStore &datumTransformStore() { return mDatumTransformStore; }
275 
276  const QgsMapToPixel &mapToPixel() const { return mMapToPixel; }
277 
284  double layerToMapUnits( const QgsMapLayer *layer, const QgsRectangle &referenceExtent = QgsRectangle() ) const;
285 
291  QgsRectangle layerExtentToOutputExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
292 
298  QgsRectangle outputExtentToLayerExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
299 
304  QgsPointXY layerToMapCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
305 
311  QgsRectangle layerToMapCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
312 
317  QgsPointXY mapToLayerCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
318 
324  QgsRectangle mapToLayerCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
325 
331  QgsCoordinateTransform layerTransform( const QgsMapLayer *layer ) const;
332 
334  QgsRectangle fullExtent() const;
335 
336  /* serialization */
337 
338  void readXml( QDomNode &node );
339 
340  void writeXml( QDomNode &node, QDomDocument &doc );
341 
345  void setSegmentationTolerance( double tolerance ) { mSegmentationTolerance = tolerance; }
347  double segmentationTolerance() const { return mSegmentationTolerance; }
348 
352  void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type ) { mSegmentationToleranceType = type; }
354  QgsAbstractGeometry::SegmentationToleranceType segmentationToleranceType() const { return mSegmentationToleranceType; }
355 
360  void setLabelingEngineSettings( const QgsLabelingEngineSettings &settings ) { mLabelingEngineSettings = settings; }
361 
366  const QgsLabelingEngineSettings &labelingEngineSettings() const { return mLabelingEngineSettings; }
367 
368  protected:
369 
370  double mDpi;
371 
372  QSize mSize;
373 
375 
376  double mRotation = 0.0;
377  double mMagnificationFactor = 1.0;
378 
381  QMap<QString, QString> mLayerStyleOverrides;
384 
387  QString mEllipsoid;
389 
392 
393  Flags mFlags;
394 
395  QImage::Format mImageFormat = QImage::Format_ARGB32_Premultiplied;
396 
399 
401 
402  // derived properties
403  bool mValid = false;
405  double mMapUnitsPerPixel = 1;
406  double mScale = 1;
407 
408  // utiity stuff
411 
412  void updateDerived();
413 };
414 
415 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsMapSettings::Flags )
416 
417 
418 #endif // QGSMAPSETTINGS_H
A rectangle specified with double values.
Definition: qgsrectangle.h:39
Base class for all map layer types.
Definition: qgsmaplayer.h:56
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.
Maximum angle between generating radii (lines from arc center to output vertices) ...
QgsCoordinateReferenceSystem mDestCRS
A class to represent a 2D point.
Definition: qgspointxy.h:43
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:36
QgsRectangle mExtent
Flag
Enumeration of flags that adjust the way the map is rendered.
#define SIP_SKIP
Definition: qgis_sip.h:119
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
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:43
QString mEllipsoid
ellipsoid acronym (from table tbl_ellipsoids)
void setBackgroundColor(const QColor &color)
Set the background color of the map.
void setLabelingEngineSettings(const QgsLabelingEngineSettings &settings)
Sets global configuration of the labeling engine.
QString ellipsoid() const
Returns ellipsoid&#39;s acronym.
double segmentationTolerance() const
Gets the segmentation tolerance applied when rendering curved geometries.
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:1237
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
const QgsLabelingEngineSettings & labelingEngineSettings() const
Returns global configuration of the labeling engine.