QGIS API Documentation 3.39.0-Master (52f98f8c831)
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
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
183 double rotation() const;
184
189 void setRotation( double rotation );
190
198 double outputDpi() const;
199
205 void setOutputDpi( double dpi );
206
215 double dpiTarget() const;
216
223 void setDpiTarget( double dpi );
224
231 void setMagnificationFactor( double factor, const QgsPointXY *center = nullptr );
232
237 double magnificationFactor() const;
238
250 QStringList layerIds( bool expandGroupLayers = false ) const;
251
263 QList<QgsMapLayer *> layers( bool expandGroupLayers = false ) const;
264
275 void setLayers( const QList<QgsMapLayer *> &layers );
276
282 QMap<QString, QString> layerStyleOverrides() const;
283
289 void setLayerStyleOverrides( const QMap<QString, QString> &overrides );
290
297 Q_DECL_DEPRECATED QString customRenderFlags() const { return mCustomRenderFlags; }
298
305 Q_DECL_DEPRECATED void setCustomRenderFlags( const QString &customRenderFlags ) { mCustomRenderFlags = customRenderFlags; }
306
313 QVariantMap customRenderingFlags() const { return mCustomRenderingFlags; }
314
322 void setCustomRenderingFlag( const QString &flag, const QVariant &value ) { mCustomRenderingFlags[flag] = value; }
323
330 void clearCustomRenderingFlag( const QString &flag ) { mCustomRenderingFlags.remove( flag ); }
331
337 void setDestinationCrs( const QgsCoordinateReferenceSystem &crs );
338
344 QgsCoordinateReferenceSystem destinationCrs() const;
345
349 Qgis::DistanceUnit mapUnits() const;
350
358 bool setEllipsoid( const QString &ellipsoid );
359
365 QString ellipsoid() const { return mEllipsoid; }
366
372 void setBackgroundColor( const QColor &color ) { mBackgroundColor = color; }
373
379 QColor backgroundColor() const { return mBackgroundColor; }
380
386 void setSelectionColor( const QColor &color ) { mSelectionColor = color; }
387
393 QColor selectionColor() const { return mSelectionColor; }
394
396 void setFlags( Qgis::MapSettingsFlags flags );
398 void setFlag( Qgis::MapSettingsFlag flag, bool on = true );
400 Qgis::MapSettingsFlags flags() const;
402 bool testFlag( Qgis::MapSettingsFlag flag ) const;
403
411 {
412 return mTextRenderFormat;
413 }
414
425 {
426 mTextRenderFormat = format;
427 // ensure labeling engine setting is also kept in sync, just in case anyone accesses QgsMapSettings::labelingEngineSettings().defaultTextRenderFormat()
428 // instead of correctly calling QgsMapSettings::textRenderFormat(). It can't hurt to be consistent!
429 mLabelingEngineSettings.setDefaultTextRenderFormat( format );
430 }
431
433 void setOutputImageFormat( QImage::Format format ) { mImageFormat = format; }
435 QImage::Format outputImageFormat() const { return mImageFormat; }
436
438 bool hasValidSettings() const;
440 QgsRectangle visibleExtent() const;
441
445 QPolygonF visiblePolygon() const;
446
452 QPolygonF visiblePolygonWithBuffer() const;
453
455 double mapUnitsPerPixel() const;
456
461 double scale() const;
462
468 void setExpressionContext( const QgsExpressionContext &context ) { mExpressionContext = context; }
469
475 const QgsExpressionContext &expressionContext() const { return mExpressionContext; }
476
484 QgsCoordinateTransformContext transformContext() const;
485
493 void setTransformContext( const QgsCoordinateTransformContext &context );
494
501 const QgsPathResolver &pathResolver() const { return mPathResolver; }
502
509 void setPathResolver( const QgsPathResolver &resolver ) { mPathResolver = resolver; }
510
511 const QgsMapToPixel &mapToPixel() const { return mMapToPixel; }
512
518 double layerToMapUnits( const QgsMapLayer *layer, const QgsRectangle &referenceExtent = QgsRectangle() ) const;
519
525 QgsRectangle layerExtentToOutputExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
526
532 QgsRectangle outputExtentToLayerExtent( const QgsMapLayer *layer, QgsRectangle extent ) const;
533
538 QgsPointXY layerToMapCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
539
545 QgsPoint layerToMapCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const;
546
552 QgsRectangle layerToMapCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
553
558 QgsPointXY mapToLayerCoordinates( const QgsMapLayer *layer, QgsPointXY point ) const;
559
565 QgsPoint mapToLayerCoordinates( const QgsMapLayer *layer, const QgsPoint &point ) const;
566
572 QgsRectangle mapToLayerCoordinates( const QgsMapLayer *layer, QgsRectangle rect ) const;
573
578 QgsCoordinateTransform layerTransform( const QgsMapLayer *layer ) const;
579
590 QgsRectangle computeExtentForScale( const QgsPointXY &center, double scale ) const;
591
600 double computeScaleForExtent( const QgsRectangle &extent ) const;
601
603 QgsRectangle fullExtent() const;
604
605 /* serialization */
606
607 void readXml( QDomNode &node );
608
609 void writeXml( QDomNode &node, QDomDocument &doc );
610
615 void setSegmentationTolerance( double tolerance ) { mSegmentationTolerance = tolerance; }
617 double segmentationTolerance() const { return mSegmentationTolerance; }
618
623 void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type ) { mSegmentationToleranceType = type; }
626
637 {
638 mLabelingEngineSettings = settings;
639 mTextRenderFormat = settings.defaultTextRenderFormat();
640 }
641
648 const QgsLabelingEngineSettings &labelingEngineSettings() const { return mLabelingEngineSettings; }
649
661 QgsGeometry labelBoundaryGeometry() const;
662
676 void setLabelBoundaryGeometry( const QgsGeometry &boundary );
677
684 void setLabelBlockingRegions( const QList< QgsLabelBlockingRegion > &regions ) { mLabelBlockingRegions = regions; }
685
692 QList< QgsLabelBlockingRegion > labelBlockingRegions() const { return mLabelBlockingRegions; }
693
702 void addClippingRegion( const QgsMapClippingRegion &region );
703
712 void setClippingRegions( const QList< QgsMapClippingRegion > &regions );
713
722 QList< QgsMapClippingRegion > clippingRegions() const;
723
740 void setSimplifyMethod( const QgsVectorSimplifyMethod &method ) { mSimplifyMethod = method; }
741
753 const QgsVectorSimplifyMethod &simplifyMethod() const { return mSimplifyMethod; }
754
762 const QgsMaskRenderSettings &maskSettings() const SIP_SKIP { return mMaskRenderSettings; }
763
771 QgsMaskRenderSettings &maskSettings() { return mMaskRenderSettings; }
772
780 void setMaskSettings( const QgsMaskRenderSettings &settings );
781
791 void addRenderedFeatureHandler( QgsRenderedFeatureHandlerInterface *handler );
792
798 QList< QgsRenderedFeatureHandlerInterface * > renderedFeatureHandlers() const;
799
806 QgsDoubleRange zRange() const;
807
814 void setZRange( const QgsDoubleRange &range );
815
822 Qgis::RendererUsage rendererUsage() const;
823
833 void setRendererUsage( Qgis::RendererUsage rendererUsage );
834
843 double frameRate() const;
844
853 void setFrameRate( double rate );
854
863 long long currentFrame() const;
864
873 void setCurrentFrame( long long frame );
874
881 const QgsElevationShadingRenderer &elevationShadingRenderer() const;
882
889 void setElevationShadingRenderer( const QgsElevationShadingRenderer &renderer );
890
891 protected:
892
893 double mDpi = 96.0;
894 double mDpiTarget = -1;
895
896 QSize mSize;
897 float mDevicePixelRatio = 1.0;
898
900 double mExtentBuffer = 0.0;
901
902 double mRotation = 0.0;
903 double mMagnificationFactor = 1.0;
904
907 QMap<QString, QString> mLayerStyleOverrides;
911
914 QString mEllipsoid;
915
918
920
921 QImage::Format mImageFormat = QImage::Format_ARGB32_Premultiplied;
922
925
927
928 // derived properties
930 bool mValid = false;
933 double mMapUnitsPerPixel = 1;
934 double mScale = 1;
935
936 // utiity stuff
939
941
943
945
947
949
951
953
954 double mFrameRate = -1;
955 long long mCurrentFrame = -1;
956
958
959#ifdef QGISDEBUG
960 bool mHasTransformContext = false;
961#endif
962
963 void updateDerived();
964
965 private:
966
967 QList< QgsLabelBlockingRegion > mLabelBlockingRegions;
968 QList< QgsMapClippingRegion > mClippingRegions;
969 QList< QgsRenderedFeatureHandlerInterface * > mRenderedFeatureHandlers;
970
971 QgsDoubleRange mZRange;
972
973};
974
975#endif // QGSMAPSETTINGS_H
QFlags< MapSettingsFlag > MapSettingsFlags
Map settings flags.
Definition qgis.h:2343
DistanceUnit
Units of distance.
Definition qgis.h:4363
TextRenderFormat
Options for rendering text.
Definition qgis.h:2409
@ AlwaysOutlines
Always render text using path objects (AKA outlines/curves). This setting guarantees the best quality...
RendererUsage
Usage of the renderer.
Definition qgis.h:2945
@ Unknown
Renderer used for unknown usage.
MapSettingsFlag
Flags which adjust the way maps are rendered.
Definition qgis.h:2321
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:75
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