QGIS API Documentation 3.43.0-Master (8fc5848dca1)
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"
40
41class QPainter;
42
47
56class CORE_EXPORT QgsLabelBlockingRegion
57{
58 public:
59
63 explicit QgsLabelBlockingRegion( const QgsGeometry &geometry )
64 : geometry( geometry )
65 {}
66
69
70};
71
72
90class CORE_EXPORT QgsMapSettings : public QgsTemporalRangeObject
91{
92 public:
94
105 QgsRectangle extent() const;
106
117 void setExtent( const QgsRectangle &rect, bool magnified = true );
118
125 double extentBuffer() const;
126
133 void setExtentBuffer( double buffer );
134
141 QSize outputSize() const;
142
148 void setOutputSize( QSize size );
149
156 float devicePixelRatio() const;
157
164 void setDevicePixelRatio( float dpr );
165
178 QSize deviceOutputSize() const;
179
184 double rotation() const;
185
190 void setRotation( double rotation );
191
199 double outputDpi() const;
200
206 void setOutputDpi( double dpi );
207
216 double dpiTarget() const;
217
224 void setDpiTarget( double dpi );
225
232 void setMagnificationFactor( double factor, const QgsPointXY *center = nullptr );
233
238 double magnificationFactor() const;
239
251 QStringList layerIds( bool expandGroupLayers = false ) const;
252
264 QList<QgsMapLayer *> layers( bool expandGroupLayers = false ) const;
265
266
267#ifndef SIP_RUN
274 template <typename T>
275 QVector<T> layers() const;
276#endif
277
288 void setLayers( const QList<QgsMapLayer *> &layers );
289
295 QMap<QString, QString> layerStyleOverrides() const;
296
302 void setLayerStyleOverrides( const QMap<QString, QString> &overrides );
303
310 Q_DECL_DEPRECATED QString customRenderFlags() const { return mCustomRenderFlags; }
311
318 Q_DECL_DEPRECATED void setCustomRenderFlags( const QString &customRenderFlags ) { mCustomRenderFlags = customRenderFlags; }
319
326 QVariantMap customRenderingFlags() const { return mCustomRenderingFlags; }
327
335 void setCustomRenderingFlag( const QString &flag, const QVariant &value ) { mCustomRenderingFlags[flag] = value; }
336
343 void clearCustomRenderingFlag( const QString &flag ) { mCustomRenderingFlags.remove( flag ); }
344
350 void setDestinationCrs( const QgsCoordinateReferenceSystem &crs );
351
357 QgsCoordinateReferenceSystem destinationCrs() const;
358
362 Qgis::DistanceUnit mapUnits() const;
363
370 Qgis::ScaleCalculationMethod scaleMethod() const;
371
378 void setScaleMethod( Qgis::ScaleCalculationMethod method );
379
387 bool setEllipsoid( const QString &ellipsoid );
388
394 QString ellipsoid() const { return mEllipsoid; }
395
401 void setBackgroundColor( const QColor &color ) { mBackgroundColor = color; }
402
408 QColor backgroundColor() const { return mBackgroundColor; }
409
415 void setSelectionColor( const QColor &color ) { mSelectionColor = color; }
416
422 QColor selectionColor() const { return mSelectionColor; }
423
425 void setFlags( Qgis::MapSettingsFlags flags );
427 void setFlag( Qgis::MapSettingsFlag flag, bool on = true );
429 Qgis::MapSettingsFlags flags() const;
431 bool testFlag( Qgis::MapSettingsFlag flag ) const;
432
440 {
441 return mTextRenderFormat;
442 }
443
454 {
455 mTextRenderFormat = format;
456 // ensure labeling engine setting is also kept in sync, just in case anyone accesses QgsMapSettings::labelingEngineSettings().defaultTextRenderFormat()
457 // instead of correctly calling QgsMapSettings::textRenderFormat(). It can't hurt to be consistent!
458 mLabelingEngineSettings.setDefaultTextRenderFormat( format );
459 }
460
462 void setOutputImageFormat( QImage::Format format ) { mImageFormat = format; }
464 QImage::Format outputImageFormat() const { return mImageFormat; }
465
467 bool hasValidSettings() const;
469 QgsRectangle visibleExtent() const;
470
474 QPolygonF visiblePolygon() const;
475
481 QPolygonF visiblePolygonWithBuffer() const;
482
484 double mapUnitsPerPixel() const;
485
490 double scale() const;
491
497 void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; }
498
504 const QgsExpressionContext &expressionContext() const { return mExpressionContext; }
505
513 QgsCoordinateTransformContext transformContext() const;
514
522 void setTransformContext( const QgsCoordinateTransformContext &context );
523
530 const QgsPathResolver &pathResolver() const { return mPathResolver; }
531
538 void setPathResolver( const QgsPathResolver &resolver ) { mPathResolver = resolver; }
539
540 const QgsMapToPixel &mapToPixel() const { return mMapToPixel; }
541
547 double layerToMapUnits( const QgsMapLayer *layer, const QgsRectangle &referenceExtent = QgsRectangle() ) const;
548
554 QgsRectangle layerExtentToOutputExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
555
561 QgsRectangle outputExtentToLayerExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
562
567 QgsPointXY layerToMapCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
568
574 QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const;
575
581 QgsRectangle layerToMapCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
582
587 QgsPointXY mapToLayerCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
588
594 QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const;
595
601 QgsRectangle mapToLayerCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
602
607 QgsCoordinateTransform layerTransform( const QgsMapLayer *layer ) const;
608
619 QgsRectangle computeExtentForScale( const QgsPointXY &center, double scale ) const;
620
629 double computeScaleForExtent( const QgsRectangle &extent ) const;
630
632 QgsRectangle fullExtent() const;
633
639 void readXml( QDomNode &node );
640
646 void writeXml( QDomNode &node, QDomDocument &doc );
647
652 void setSegmentationTolerance( double tolerance ) { mSegmentationTolerance = tolerance; }
654 double segmentationTolerance() const { return mSegmentationTolerance; }
655
660 void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type ) { mSegmentationToleranceType = type; }
663
674 {
675 mLabelingEngineSettings = settings;
676 mTextRenderFormat = settings.defaultTextRenderFormat();
677 }
678
685 const QgsLabelingEngineSettings &labelingEngineSettings() const { return mLabelingEngineSettings; }
686
698 QgsGeometry labelBoundaryGeometry() const;
699
713 void setLabelBoundaryGeometry( const QgsGeometry &boundary );
714
721 void setLabelBlockingRegions( const QList< QgsLabelBlockingRegion > &regions ) { mLabelBlockingRegions = regions; }
722
729 QList< QgsLabelBlockingRegion > labelBlockingRegions() const { return mLabelBlockingRegions; }
730
739 void addClippingRegion( const QgsMapClippingRegion &region );
740
749 void setClippingRegions( const QList< QgsMapClippingRegion > &regions );
750
759 QList< QgsMapClippingRegion > clippingRegions() const;
760
777 void setSimplifyMethod( const QgsVectorSimplifyMethod &method ) { mSimplifyMethod = method; }
778
790 const QgsVectorSimplifyMethod &simplifyMethod() const { return mSimplifyMethod; }
791
799 const QgsMaskRenderSettings &maskSettings() const SIP_SKIP { return mMaskRenderSettings; }
800
808 QgsMaskRenderSettings &maskSettings() { return mMaskRenderSettings; }
809
817 void setMaskSettings( const QgsMaskRenderSettings &settings );
818
828 void addRenderedFeatureHandler( QgsRenderedFeatureHandlerInterface *handler );
829
835 QList< QgsRenderedFeatureHandlerInterface * > renderedFeatureHandlers() const;
836
843 QgsDoubleRange zRange() const;
844
851 void setZRange( const QgsDoubleRange &range );
852
859 Qgis::RendererUsage rendererUsage() const;
860
870 void setRendererUsage( Qgis::RendererUsage rendererUsage );
871
880 double frameRate() const;
881
890 void setFrameRate( double rate );
891
900 long long currentFrame() const;
901
910 void setCurrentFrame( long long frame );
911
918 const QgsElevationShadingRenderer &elevationShadingRenderer() const;
919
926 void setElevationShadingRenderer( const QgsElevationShadingRenderer &renderer );
927
934 Qgis::RasterizedRenderingPolicy rasterizedRenderingPolicy() const;
935
942 void setRasterizedRenderingPolicy( Qgis::RasterizedRenderingPolicy policy );
943
944 protected:
945
946 double mDpi = 96.0;
947 double mDpiTarget = -1;
948
949 QSize mSize;
950 float mDevicePixelRatio = 1.0;
951
953 double mExtentBuffer = 0.0;
954
955 double mRotation = 0.0;
956 double mMagnificationFactor = 1.0;
957
960 QMap<QString, QString> mLayerStyleOverrides;
964
967 QString mEllipsoid;
968
971
974 QImage::Format mImageFormat = QImage::Format_ARGB32_Premultiplied;
975
978
980
981 // derived properties
983 bool mValid = false;
986 double mMapUnitsPerPixel = 1;
987 double mScale = 1;
988
989 // utiity stuff
992
994
996
998
1000
1002
1004
1006
1007 double mFrameRate = -1;
1008 long long mCurrentFrame = -1;
1009
1011
1012#ifdef QGISDEBUG
1013 bool mHasTransformContext = false;
1014#endif
1015
1016 void updateDerived();
1017
1018 private:
1019 void matchRasterizedRenderingPolicyToFlags();
1020
1021 QList< QgsLabelBlockingRegion > mLabelBlockingRegions;
1022 QList< QgsMapClippingRegion > mClippingRegions;
1023 QList< QgsRenderedFeatureHandlerInterface * > mRenderedFeatureHandlers;
1024
1025 QgsDoubleRange mZRange;
1026
1027};
1028
1029#endif // QGSMAPSETTINGS_H
RasterizedRenderingPolicy
Policies controlling when rasterisation of content during renders is permitted.
Definition qgis.h:2653
@ Default
Allow raster-based rendering in situations where it is required for correct rendering or where it wil...
QFlags< MapSettingsFlag > MapSettingsFlags
Map settings flags.
Definition qgis.h:2688
DistanceUnit
Units of distance.
Definition qgis.h:4875
TextRenderFormat
Options for rendering text.
Definition qgis.h:2757
@ AlwaysOutlines
Always render text using path objects (AKA outlines/curves). This setting guarantees the best quality...
ScaleCalculationMethod
Scale calculation logic.
Definition qgis.h:5146
RendererUsage
Usage of the renderer.
Definition qgis.h:3329
@ Unknown
Renderer used for unknown usage.
MapSettingsFlag
Flags which adjust the way maps are rendered.
Definition qgis.h:2666
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)
Represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Handles coordinate transforms between two coordinate systems.
QgsRange which stores a range of double values.
Definition qgsrange.h:233
Renders elevation shading on an image with different methods (eye dome lighting, hillshading,...
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
A geometry is the spatial representation of a feature.
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:77
Abstract base class for map rendering implementations.
Contains configuration for rendering maps.
QgsVectorSimplifyMethod mSimplifyMethod
QgsMaskRenderSettings mMaskRenderSettings
const QgsLabelingEngineSettings & labelingEngineSettings() const
Returns the global configuration of the labeling engine.
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...
QgsMaskRenderSettings & maskSettings()
Returns a reference to the mask render settings, which control how masks are drawn and behave during ...
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.
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.
const QgsMaskRenderSettings & maskSettings() const
Returns a reference to the mask render settings, which control how masks are drawn and behave during ...
double mSegmentationTolerance
Perform transforms between map coordinates and device coordinates.
Contains settings regarding how masks are calculated and handled during a map render.
Resolves relative paths into absolute paths and vice versa.
Represents a 2D point.
Definition qgspointxy.h:60
Point geometry type, with support for z-dimension and m-values.
Definition qgspoint.h:49
A rectangle specified with double values.
An interface for classes which provide 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.
Contains settings for simplifying geometries fetched from a vector layer.
#define SIP_SKIP
Definition qgis_sip.h:126
QList< QgsWeakMapLayerPointer > QgsWeakMapLayerPointerList
A list of weak pointers to QgsMapLayers.
const QgsCoordinateReferenceSystem & crs