QGIS API Documentation 3.39.0-Master (d85f3c2a281)
Loading...
Searching...
No Matches
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
276 void setLayers( const QList<QgsMapLayer *> &layers );
277
283 QMap<QString, QString> layerStyleOverrides() const;
284
290 void setLayerStyleOverrides( const QMap<QString, QString> &overrides );
291
298 Q_DECL_DEPRECATED QString customRenderFlags() const { return mCustomRenderFlags; }
299
306 Q_DECL_DEPRECATED void setCustomRenderFlags( const QString &customRenderFlags ) { mCustomRenderFlags = customRenderFlags; }
307
314 QVariantMap customRenderingFlags() const { return mCustomRenderingFlags; }
315
323 void setCustomRenderingFlag( const QString &flag, const QVariant &value ) { mCustomRenderingFlags[flag] = value; }
324
331 void clearCustomRenderingFlag( const QString &flag ) { mCustomRenderingFlags.remove( flag ); }
332
338 void setDestinationCrs( const QgsCoordinateReferenceSystem &crs );
339
345 QgsCoordinateReferenceSystem destinationCrs() const;
346
350 Qgis::DistanceUnit mapUnits() const;
351
359 bool setEllipsoid( const QString &ellipsoid );
360
366 QString ellipsoid() const { return mEllipsoid; }
367
373 void setBackgroundColor( const QColor &color ) { mBackgroundColor = color; }
374
380 QColor backgroundColor() const { return mBackgroundColor; }
381
387 void setSelectionColor( const QColor &color ) { mSelectionColor = color; }
388
394 QColor selectionColor() const { return mSelectionColor; }
395
397 void setFlags( Qgis::MapSettingsFlags flags );
399 void setFlag( Qgis::MapSettingsFlag flag, bool on = true );
401 Qgis::MapSettingsFlags flags() const;
403 bool testFlag( Qgis::MapSettingsFlag flag ) const;
404
412 {
413 return mTextRenderFormat;
414 }
415
426 {
427 mTextRenderFormat = format;
428 // ensure labeling engine setting is also kept in sync, just in case anyone accesses QgsMapSettings::labelingEngineSettings().defaultTextRenderFormat()
429 // instead of correctly calling QgsMapSettings::textRenderFormat(). It can't hurt to be consistent!
430 mLabelingEngineSettings.setDefaultTextRenderFormat( format );
431 }
432
434 void setOutputImageFormat( QImage::Format format ) { mImageFormat = format; }
436 QImage::Format outputImageFormat() const { return mImageFormat; }
437
439 bool hasValidSettings() const;
441 QgsRectangle visibleExtent() const;
442
446 QPolygonF visiblePolygon() const;
447
453 QPolygonF visiblePolygonWithBuffer() const;
454
456 double mapUnitsPerPixel() const;
457
462 double scale() const;
463
469 void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; }
470
476 const QgsExpressionContext &expressionContext() const { return mExpressionContext; }
477
485 QgsCoordinateTransformContext transformContext() const;
486
494 void setTransformContext( const QgsCoordinateTransformContext &context );
495
502 const QgsPathResolver &pathResolver() const { return mPathResolver; }
503
510 void setPathResolver( const QgsPathResolver &resolver ) { mPathResolver = resolver; }
511
512 const QgsMapToPixel &mapToPixel() const { return mMapToPixel; }
513
519 double layerToMapUnits( const QgsMapLayer *layer, const QgsRectangle &referenceExtent = QgsRectangle() ) const;
520
526 QgsRectangle layerExtentToOutputExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
527
533 QgsRectangle outputExtentToLayerExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
534
539 QgsPointXY layerToMapCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
540
546 QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const;
547
553 QgsRectangle layerToMapCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
554
559 QgsPointXY mapToLayerCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
560
566 QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const;
567
573 QgsRectangle mapToLayerCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
574
579 QgsCoordinateTransform layerTransform( const QgsMapLayer *layer ) const;
580
591 QgsRectangle computeExtentForScale( const QgsPointXY &center, double scale ) const;
592
601 double computeScaleForExtent( const QgsRectangle &extent ) const;
602
604 QgsRectangle fullExtent() const;
605
611 void readXml( QDomNode &node );
612
618 void writeXml( QDomNode &node, QDomDocument &doc );
619
624 void setSegmentationTolerance( double tolerance ) { mSegmentationTolerance = tolerance; }
626 double segmentationTolerance() const { return mSegmentationTolerance; }
627
632 void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type ) { mSegmentationToleranceType = type; }
635
646 {
647 mLabelingEngineSettings = settings;
648 mTextRenderFormat = settings.defaultTextRenderFormat();
649 }
650
657 const QgsLabelingEngineSettings &labelingEngineSettings() const { return mLabelingEngineSettings; }
658
670 QgsGeometry labelBoundaryGeometry() const;
671
685 void setLabelBoundaryGeometry( const QgsGeometry &boundary );
686
693 void setLabelBlockingRegions( const QList< QgsLabelBlockingRegion > &regions ) { mLabelBlockingRegions = regions; }
694
701 QList< QgsLabelBlockingRegion > labelBlockingRegions() const { return mLabelBlockingRegions; }
702
711 void addClippingRegion( const QgsMapClippingRegion &region );
712
721 void setClippingRegions( const QList< QgsMapClippingRegion > &regions );
722
731 QList< QgsMapClippingRegion > clippingRegions() const;
732
749 void setSimplifyMethod( const QgsVectorSimplifyMethod &method ) { mSimplifyMethod = method; }
750
762 const QgsVectorSimplifyMethod &simplifyMethod() const { return mSimplifyMethod; }
763
771 const QgsMaskRenderSettings &maskSettings() const SIP_SKIP { return mMaskRenderSettings; }
772
780 QgsMaskRenderSettings &maskSettings() { return mMaskRenderSettings; }
781
789 void setMaskSettings( const QgsMaskRenderSettings &settings );
790
800 void addRenderedFeatureHandler( QgsRenderedFeatureHandlerInterface *handler );
801
807 QList< QgsRenderedFeatureHandlerInterface * > renderedFeatureHandlers() const;
808
815 QgsDoubleRange zRange() const;
816
823 void setZRange( const QgsDoubleRange &range );
824
831 Qgis::RendererUsage rendererUsage() const;
832
842 void setRendererUsage( Qgis::RendererUsage rendererUsage );
843
852 double frameRate() const;
853
862 void setFrameRate( double rate );
863
872 long long currentFrame() const;
873
882 void setCurrentFrame( long long frame );
883
890 const QgsElevationShadingRenderer &elevationShadingRenderer() const;
891
898 void setElevationShadingRenderer( const QgsElevationShadingRenderer &renderer );
899
900 protected:
901
902 double mDpi = 96.0;
903 double mDpiTarget = -1;
904
905 QSize mSize;
906 float mDevicePixelRatio = 1.0;
907
909 double mExtentBuffer = 0.0;
910
911 double mRotation = 0.0;
912 double mMagnificationFactor = 1.0;
913
916 QMap<QString, QString> mLayerStyleOverrides;
920
923 QString mEllipsoid;
924
927
929
930 QImage::Format mImageFormat = QImage::Format_ARGB32_Premultiplied;
931
934
936
937 // derived properties
939 bool mValid = false;
942 double mMapUnitsPerPixel = 1;
943 double mScale = 1;
944
945 // utiity stuff
948
950
952
954
956
958
960
962
963 double mFrameRate = -1;
964 long long mCurrentFrame = -1;
965
967
968#ifdef QGISDEBUG
969 bool mHasTransformContext = false;
970#endif
971
972 void updateDerived();
973
974 private:
975
976 QList< QgsLabelBlockingRegion > mLabelBlockingRegions;
977 QList< QgsMapClippingRegion > mClippingRegions;
978 QList< QgsRenderedFeatureHandlerInterface * > mRenderedFeatureHandlers;
979
980 QgsDoubleRange mZRange;
981
982};
983
984#endif // QGSMAPSETTINGS_H
QFlags< MapSettingsFlag > MapSettingsFlags
Map settings flags.
Definition qgis.h:2556
DistanceUnit
Units of distance.
Definition qgis.h:4625
TextRenderFormat
Options for rendering text.
Definition qgis.h:2623
@ AlwaysOutlines
Always render text using path objects (AKA outlines/curves). This setting guarantees the best quality...
RendererUsage
Usage of the renderer.
Definition qgis.h:3186
@ Unknown
Renderer used for unknown usage.
MapSettingsFlag
Flags which adjust the way maps are rendered.
Definition qgis.h:2534
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:231
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.
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:76
Abstract base class for map rendering implementations.
The QgsMapSettings class contains configuration for rendering of the map.
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.
A class to represent 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 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.
#define SIP_SKIP
Definition qgis_sip.h:126
QList< QgsWeakMapLayerPointer > QgsWeakMapLayerPointerList
A list of weak pointers to QgsMapLayers.
const QgsCoordinateReferenceSystem & crs