QGIS API Documentation  2.11.0-Master
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 <QColor>
20 #include <QImage>
21 #include <QSize>
22 #include <QStringList>
23 
25 #include "qgsdatumtransformstore.h"
26 #include "qgsmaptopixel.h"
27 #include "qgsrectangle.h"
28 #include "qgsscalecalculator.h"
29 
30 class QPainter;
31 
33 class QgsScaleCalculator;
34 class QgsMapRendererJob;
35 class QgsMapLayer;
36 
37 
52 class CORE_EXPORT QgsMapSettings
53 {
54  public:
56 
61  QgsRectangle extent() const;
66  void setExtent( const QgsRectangle& rect );
67 
69  QSize outputSize() const;
71  void setOutputSize( const QSize& size );
72 
76  double rotation() const;
80  void setRotation( double degrees );
81 
84  int outputDpi() const;
86  void setOutputDpi( int dpi );
87 
90  QStringList layers() const;
93  void setLayers( const QStringList& layers );
94 
97  QMap<QString, QString> layerStyleOverrides() const;
100  void setLayerStyleOverrides( const QMap<QString, QString>& overrides );
101 
103  void setCrsTransformEnabled( bool enabled );
105  bool hasCrsTransformEnabled() const;
106 
108  void setDestinationCrs( const QgsCoordinateReferenceSystem& crs );
110  const QgsCoordinateReferenceSystem& destinationCrs() const;
111 
113  QGis::UnitType mapUnits() const;
115  void setMapUnits( QGis::UnitType u );
116 
118  void setBackgroundColor( const QColor& color ) { mBackgroundColor = color; }
120  QColor backgroundColor() const { return mBackgroundColor; }
121 
123  void setSelectionColor( const QColor& color ) { mSelectionColor = color; }
125  QColor selectionColor() const { return mSelectionColor; }
126 
128  enum Flag
129  {
130  Antialiasing = 0x01,
131  DrawEditingInfo = 0x02,
132  ForceVectorOutput = 0x04,
133  UseAdvancedEffects = 0x08,
134  DrawLabeling = 0x10,
135  UseRenderingOptimization = 0x20,
136  DrawSelection = 0x40,
137  // TODO: ignore scale-based visibility (overview)
138  };
139  Q_DECLARE_FLAGS( Flags, Flag )
140 
141 
142  void setFlags( Flags flags );
144  void setFlag( Flag flag, bool on = true );
146  Flags flags() const;
148  bool testFlag( Flag flag ) const;
149 
151  void setOutputImageFormat( QImage::Format format ) { mImageFormat = format; }
153  QImage::Format outputImageFormat() const { return mImageFormat; }
154 
156  bool hasValidSettings() const;
158  QgsRectangle visibleExtent() const;
161  QPolygonF visiblePolygon() const;
163  double mapUnitsPerPixel() const;
165  double scale() const;
166 
167 
168  // -- utility functions --
169 
170  const QgsDatumTransformStore& datumTransformStore() const { return mDatumTransformStore; }
171  QgsDatumTransformStore& datumTransformStore() { return mDatumTransformStore; }
172 
173  const QgsMapToPixel& mapToPixel() const { return mMapToPixel; }
174 
180  QgsRectangle layerExtentToOutputExtent( QgsMapLayer* theLayer, QgsRectangle extent ) const;
181 
187  QgsRectangle outputExtentToLayerExtent( QgsMapLayer* theLayer, QgsRectangle extent ) const;
188 
193  QgsPoint layerToMapCoordinates( QgsMapLayer* theLayer, QgsPoint point ) const;
194 
200  QgsRectangle layerToMapCoordinates( QgsMapLayer* theLayer, QgsRectangle rect ) const;
201 
206  QgsPoint mapToLayerCoordinates( QgsMapLayer* theLayer, QgsPoint point ) const;
207 
213  QgsRectangle mapToLayerCoordinates( QgsMapLayer* theLayer, QgsRectangle rect ) const;
214 
220  const QgsCoordinateTransform* layerTransform( QgsMapLayer *layer ) const;
221 
223  QgsRectangle fullExtent() const;
224 
225  /* serialization */
226 
227  void readXML( QDomNode& theNode );
228 
229  void writeXML( QDomNode& theNode, QDomDocument& theDoc );
230 
231  protected:
232 
233  int mDpi;
234 
236 
238 
239  double mRotation;
240 
243 
247 
250 
251  Flags mFlags;
252 
253  QImage::Format mImageFormat;
254 
255  // derived properties
256  bool mValid;
259  double mScale;
260 
261 
262  // utiity stuff
265 
266  void updateDerived();
267 };
268 
269 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsMapSettings::Flags )
270 
271 
272 #endif // QGSMAPSETTINGS_H
const QgsDatumTransformStore & datumTransformStore() const
A rectangle specified with double values.
Definition: qgsrectangle.h:35
Base class for all map layer types.
Definition: qgsmaplayer.h:49
QgsDatumTransformStore & datumTransformStore()
QgsRectangle mVisibleExtent
extent with some additional white space that matches the output aspect ratio
QgsMapToPixel mMapToPixel
Abstract base class for map rendering implementations.
UnitType
Map units that qgis supports.
Definition: qgis.h:229
QColor selectionColor() const
Get color that is used for drawing of selected vector features.
QgsCoordinateReferenceSystem mDestCRS
QMap< QString, QString > mLayerStyleOverrides
const QgsMapToPixel & mapToPixel() const
The QgsMapSettings class contains configuration for rendering of the map.
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 how map is rendered.
QgsScaleCalculator mScaleCalculator
A class to represent a point.
Definition: qgspoint.h:63
QColor backgroundColor() const
Get the background color of the map.
Calculates scale for a given combination of canvas size, map extent, and monitor dpi.
void setBackgroundColor(const QColor &color)
Set the background color of the map.
double mMapUnitsPerPixel
void setSelectionColor(const QColor &color)
Set color that is used for drawing of selected vector features.
The QgsDatumTransformStore class keeps track of datum transformations as chosen by the user...
QImage::Format outputImageFormat() const
format of internal QImage, default QImage::Format_ARGB32_Premultiplied
Class for storing a coordinate reference system (CRS)
QColor mBackgroundColor
Class for doing transforms between two map coordinate systems.
QStringList mLayers
QColor mSelectionColor
QgsDatumTransformStore mDatumTransformStore