QGIS API Documentation 3.32.0-Lima (311a8cb8a6)
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
29#include "qgsmaptopixel.h"
30#include "qgsrectangle.h"
31#include "qgsscalecalculator.h"
33#include "qgsmaplayer.h"
34#include "qgsgeometry.h"
39
40class QPainter;
41
46
55class CORE_EXPORT QgsLabelBlockingRegion
56{
57 public:
58
62 explicit QgsLabelBlockingRegion( const QgsGeometry &geometry )
63 : geometry( geometry )
64 {}
65
68
69};
70
71
89class CORE_EXPORT QgsMapSettings : public QgsTemporalRangeObject
90{
91 public:
93
104 QgsRectangle extent() const;
105
116 void setExtent( const QgsRectangle &rect, bool magnified = true );
117
124 double extentBuffer() const;
125
132 void setExtentBuffer( double buffer );
133
140 QSize outputSize() const;
141
147 void setOutputSize( QSize size );
148
155 float devicePixelRatio() const;
156
163 void setDevicePixelRatio( float dpr );
164
177 QSize deviceOutputSize() const;
178
184 double rotation() const;
185
191 void setRotation( double rotation );
192
200 double outputDpi() const;
201
207 void setOutputDpi( double dpi );
208
217 double dpiTarget() const;
218
225 void setDpiTarget( double dpi );
226
234 void setMagnificationFactor( double factor, const QgsPointXY *center = nullptr );
235
241 double magnificationFactor() const;
242
254 QStringList layerIds( bool expandGroupLayers = false ) const;
255
267 QList<QgsMapLayer *> layers( bool expandGroupLayers = false ) const;
268
279 void setLayers( const QList<QgsMapLayer *> &layers );
280
287 QMap<QString, QString> layerStyleOverrides() const;
288
295 void setLayerStyleOverrides( const QMap<QString, QString> &overrides );
296
304 Q_DECL_DEPRECATED QString customRenderFlags() const { return mCustomRenderFlags; }
305
313 Q_DECL_DEPRECATED void setCustomRenderFlags( const QString &customRenderFlags ) { mCustomRenderFlags = customRenderFlags; }
314
321 QVariantMap customRenderingFlags() const { return mCustomRenderingFlags; }
322
330 void setCustomRenderingFlag( const QString &flag, const QVariant &value ) { mCustomRenderingFlags[flag] = value; }
331
338 void clearCustomRenderingFlag( const QString &flag ) { mCustomRenderingFlags.remove( flag ); }
339
345 void setDestinationCrs( const QgsCoordinateReferenceSystem &crs );
346
352 QgsCoordinateReferenceSystem destinationCrs() const;
353
357 Qgis::DistanceUnit mapUnits() const;
358
367 bool setEllipsoid( const QString &ellipsoid );
368
375 QString ellipsoid() const { return mEllipsoid; }
376
382 void setBackgroundColor( const QColor &color ) { mBackgroundColor = color; }
383
389 QColor backgroundColor() const { return mBackgroundColor; }
390
396 void setSelectionColor( const QColor &color ) { mSelectionColor = color; }
397
403 QColor selectionColor() const { return mSelectionColor; }
404
406 void setFlags( Qgis::MapSettingsFlags flags );
408 void setFlag( Qgis::MapSettingsFlag flag, bool on = true );
410 Qgis::MapSettingsFlags flags() const;
412 bool testFlag( Qgis::MapSettingsFlag flag ) const;
413
421 {
422 return mTextRenderFormat;
423 }
424
435 {
436 mTextRenderFormat = format;
437 // ensure labeling engine setting is also kept in sync, just in case anyone accesses QgsMapSettings::labelingEngineSettings().defaultTextRenderFormat()
438 // instead of correctly calling QgsMapSettings::textRenderFormat(). It can't hurt to be consistent!
439 mLabelingEngineSettings.setDefaultTextRenderFormat( format );
440 }
441
443 void setOutputImageFormat( QImage::Format format ) { mImageFormat = format; }
445 QImage::Format outputImageFormat() const { return mImageFormat; }
446
448 bool hasValidSettings() const;
450 QgsRectangle visibleExtent() const;
451
456 QPolygonF visiblePolygon() const;
457
463 QPolygonF visiblePolygonWithBuffer() const;
464
466 double mapUnitsPerPixel() const;
467
472 double scale() const;
473
480 void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; }
481
488 const QgsExpressionContext &expressionContext() const { return mExpressionContext; }
489
498 QgsCoordinateTransformContext transformContext() const;
499
508 void setTransformContext( const QgsCoordinateTransformContext &context );
509
517 const QgsPathResolver &pathResolver() const { return mPathResolver; }
518
526 void setPathResolver( const QgsPathResolver &resolver ) { mPathResolver = resolver; }
527
528 const QgsMapToPixel &mapToPixel() const { return mMapToPixel; }
529
536 double layerToMapUnits( const QgsMapLayer *layer, const QgsRectangle &referenceExtent = QgsRectangle() ) const;
537
543 QgsRectangle layerExtentToOutputExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
544
550 QgsRectangle outputExtentToLayerExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
551
556 QgsPointXY layerToMapCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
557
563 QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const;
564
570 QgsRectangle layerToMapCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
571
576 QgsPointXY mapToLayerCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
577
583 QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const;
584
590 QgsRectangle mapToLayerCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
591
596 QgsCoordinateTransform layerTransform( const QgsMapLayer *layer ) const;
597
608 QgsRectangle computeExtentForScale( const QgsPointXY &center, double scale ) const;
609
618 double computeScaleForExtent( const QgsRectangle &extent ) const;
619
621 QgsRectangle fullExtent() const;
622
623 /* serialization */
624
625 void readXml( QDomNode &node );
626
627 void writeXml( QDomNode &node, QDomDocument &doc );
628
633 void setSegmentationTolerance( double tolerance ) { mSegmentationTolerance = tolerance; }
635 double segmentationTolerance() const { return mSegmentationTolerance; }
636
641 void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type ) { mSegmentationToleranceType = type; }
644
656 {
657 mLabelingEngineSettings = settings;
658 mTextRenderFormat = settings.defaultTextRenderFormat();
659 }
660
668 const QgsLabelingEngineSettings &labelingEngineSettings() const { return mLabelingEngineSettings; }
669
681 QgsGeometry labelBoundaryGeometry() const;
682
696 void setLabelBoundaryGeometry( const QgsGeometry &boundary );
697
704 void setLabelBlockingRegions( const QList< QgsLabelBlockingRegion > &regions ) { mLabelBlockingRegions = regions; }
705
712 QList< QgsLabelBlockingRegion > labelBlockingRegions() const { return mLabelBlockingRegions; }
713
722 void addClippingRegion( const QgsMapClippingRegion &region );
723
732 void setClippingRegions( const QList< QgsMapClippingRegion > &regions );
733
742 QList< QgsMapClippingRegion > clippingRegions() const;
743
760 void setSimplifyMethod( const QgsVectorSimplifyMethod &method ) { mSimplifyMethod = method; }
761
773 const QgsVectorSimplifyMethod &simplifyMethod() const { return mSimplifyMethod; }
774
784 void addRenderedFeatureHandler( QgsRenderedFeatureHandlerInterface *handler );
785
791 QList< QgsRenderedFeatureHandlerInterface * > renderedFeatureHandlers() const;
792
799 QgsDoubleRange zRange() const;
800
807 void setZRange( const QgsDoubleRange &range );
808
815 Qgis::RendererUsage rendererUsage() const;
816
826 void setRendererUsage( Qgis::RendererUsage rendererUsage );
827
836 double frameRate() const;
837
846 void setFrameRate( double rate );
847
856 long long currentFrame() const;
857
866 void setCurrentFrame( long long frame );
867
874 const QgsElevationShadingRenderer &elevationShadingRenderer() const;
875
882 void setElevationShadingRenderer( const QgsElevationShadingRenderer &renderer );
883
884 protected:
885
886 double mDpi = 96.0;
887 double mDpiTarget = -1;
888
889 QSize mSize;
890 float mDevicePixelRatio = 1.0;
891
893 double mExtentBuffer = 0.0;
894
895 double mRotation = 0.0;
896 double mMagnificationFactor = 1.0;
897
900 QMap<QString, QString> mLayerStyleOverrides;
904
907 QString mEllipsoid;
908
911
912 Qgis::MapSettingsFlags mFlags;
913
914 QImage::Format mImageFormat = QImage::Format_ARGB32_Premultiplied;
915
918
920
921 // derived properties
923 bool mValid = false;
926 double mMapUnitsPerPixel = 1;
927 double mScale = 1;
928
929 // utiity stuff
932
934
936
937 Qgis::TextRenderFormat mTextRenderFormat = Qgis::TextRenderFormat::AlwaysOutlines;
938
940
942
944
946
947 double mFrameRate = -1;
948 long long mCurrentFrame = -1;
949
950#ifdef QGISDEBUG
951 bool mHasTransformContext = false;
952#endif
953
954 void updateDerived();
955
956 private:
957
958 QList< QgsLabelBlockingRegion > mLabelBlockingRegions;
959 QList< QgsMapClippingRegion > mClippingRegions;
960 QList< QgsRenderedFeatureHandlerInterface * > mRenderedFeatureHandlers;
961
962 QgsDoubleRange mZRange;
963
964};
965
966#endif // QGSMAPSETTINGS_H
DistanceUnit
Units of distance.
Definition: qgis.h:3310
TextRenderFormat
Options for rendering text.
Definition: qgis.h:1885
RendererUsage
Usage of the renderer.
Definition: qgis.h:2378
@ Unknown
Renderer used for unknown usage.
MapSettingsFlag
Coordinate transformation flags.
Definition: qgis.h:1821
SegmentationToleranceType
Segmentation tolerance as maximum angle or maximum difference between approximation and circle.
@ MaximumAngle
Maximum angle between generating radii (lines from arc center to output vertices)
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Class for doing transforms between two map coordinate systems.
QgsRange which stores a range of double values.
Definition: qgsrange.h:203
This class can render elevation shading on an image with different methods (eye dome lighting,...
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:164
Label blocking region (in map coordinates and CRS).
QgsGeometry geometry
Geometry of region to avoid placing labels within (in destination map coordinates and CRS)
QgsLabelBlockingRegion(const QgsGeometry &geometry)
Constructor for a label blocking region.
Stores global configuration for labeling engine.
Qgis::TextRenderFormat defaultTextRenderFormat() const
Returns the default text rendering format for the labels.
A map clipping region (in map coordinates and CRS).
Base class for all map layer types.
Definition: qgsmaplayer.h:73
Abstract base class for map rendering implementations.
The QgsMapSettings class contains configuration for rendering of the map.
QgsVectorSimplifyMethod mSimplifyMethod
const QgsLabelingEngineSettings & labelingEngineSettings() const
Returns the global configuration of the labeling engine.
QColor mBackgroundColor
void setSelectionColor(const QColor &color)
Sets the color that is used for drawing of selected vector features.
void setSimplifyMethod(const QgsVectorSimplifyMethod &method)
Sets the simplification setting to use when rendering vector layers.
QgsRectangle mVisibleExtent
Extent with some additional white space that matches the output aspect ratio.
Q_DECL_DEPRECATED void setCustomRenderFlags(const QString &customRenderFlags)
Sets the custom rendering flags.
void setTextRenderFormat(Qgis::TextRenderFormat format)
Sets the text render format, which dictates how text is rendered (e.g.
void clearCustomRenderingFlag(const QString &flag)
Clears the specified custom rendering flag.
double segmentationTolerance() const
Gets the segmentation tolerance applied when rendering curved geometries.
Qgis::MapSettingsFlags mFlags
QString mCustomRenderFlags
const QgsVectorSimplifyMethod & simplifyMethod() const
Returns the simplification settings to use when rendering vector layers.
QgsLabelingEngineSettings mLabelingEngineSettings
QString mEllipsoid
ellipsoid acronym (from table tbl_ellipsoids)
QColor backgroundColor() const
Returns the background color of the map.
const QgsMapToPixel & mapToPixel() const
void setCustomRenderingFlag(const QString &flag, const QVariant &value)
Sets a custom rendering flag.
void setOutputImageFormat(QImage::Format format)
sets format of internal QImage
QgsRectangle mExtent
QMap< QString, QString > mLayerStyleOverrides
QList< QgsLabelBlockingRegion > labelBlockingRegions() const
Returns the list of regions to avoid placing labels within.
void setSegmentationTolerance(double tolerance)
Sets the segmentation tolerance applied when rendering curved geometries.
QgsGeometry mLabelBoundaryGeometry
QgsElevationShadingRenderer mShadingRenderer
QgsCoordinateTransformContext mTransformContext
QImage::Format outputImageFormat() const
format of internal QImage, default QImage::Format_ARGB32_Premultiplied
QgsPathResolver mPathResolver
QgsScaleCalculator mScaleCalculator
void setExpressionContext(const QgsExpressionContext &context)
Sets the expression context.
QVariantMap mCustomRenderingFlags
QgsExpressionContext mExpressionContext
QColor selectionColor() const
Returns the color that is used for drawing of selected vector features.
QgsAbstractGeometry::SegmentationToleranceType segmentationToleranceType() const
Gets segmentation tolerance type (maximum angle or maximum difference between curve and approximation...
QVariantMap customRenderingFlags() const
Returns any custom rendering flags.
void setLabelingEngineSettings(const QgsLabelingEngineSettings &settings)
Sets the global configuration of the labeling engine.
Q_DECL_DEPRECATED QString customRenderFlags() const
Returns custom rendering flags.
QString ellipsoid() const
Returns ellipsoid's acronym.
void setPathResolver(const QgsPathResolver &resolver)
Sets the path resolver for conversion between relative and absolute paths during rendering operations...
Qgis::TextRenderFormat textRenderFormat() const
Returns the text render format, which dictates how text is rendered (e.g.
QgsCoordinateReferenceSystem mDestCRS
QgsMapToPixel mMapToPixel
QgsWeakMapLayerPointerList mLayers
list of layers to be rendered (stored as weak pointers)
void setLabelBlockingRegions(const QList< QgsLabelBlockingRegion > &regions)
Sets a list of regions to avoid placing labels within.
QColor mSelectionColor
const QgsPathResolver & pathResolver() const
Returns the path resolver for conversion between relative and absolute paths during rendering operati...
void setBackgroundColor(const QColor &color)
Sets the background color of the map.
void setSegmentationToleranceType(QgsAbstractGeometry::SegmentationToleranceType type)
Sets segmentation tolerance type (maximum angle or maximum difference between curve and approximation...
const QgsExpressionContext & expressionContext() const
Gets the expression context.
double mSegmentationTolerance
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:39
Resolves relative paths into absolute paths and vice versa.
A class to represent a 2D point.
Definition: qgspointxy.h:59
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:49
A rectangle specified with double values.
Definition: qgsrectangle.h:42
An interface for classes which provider custom handlers for features rendered as part of a map render...
Calculates scale for a given combination of canvas size, map extent, and monitor dpi.
Base class for objects with an associated (optional) temporal range.
This class contains information how to simplify geometries fetched from a vector layer.
QList< QgsWeakMapLayerPointer > QgsWeakMapLayerPointerList
A list of weak pointers to QgsMapLayers.
Definition: qgsmaplayer.h:2262
const QgsCoordinateReferenceSystem & crs