29#define POINTS_TO_MM 2.83464567
30#define INCH_TO_MM 25.4
33 : mFlags(
Qgis::RenderContextFlag::DrawEditingInfo |
Qgis::RenderContextFlag::UseAdvancedEffects |
Qgis::RenderContextFlag::DrawSelection |
Qgis::RenderContextFlag::UseRenderingOptimization )
38 mDistanceArea.setEllipsoid( mDistanceArea.sourceCrs().ellipsoidAcronym() );
47 , mRasterizedRenderingPolicy( rh.mRasterizedRenderingPolicy )
48 , mPainter( rh.mPainter )
49 , mPreviewRenderPainter( rh.mPreviewRenderPainter )
50 , mMaskPainter( rh.mMaskPainter )
53 , mMaskIdProvider( nullptr )
54 , mCurrentMaskId( -1 )
56 , mIsGuiPreview( rh.mIsGuiPreview )
57 , mCoordTransform( rh.mCoordTransform )
58 , mDistanceArea( rh.mDistanceArea )
59 , mExtent( rh.mExtent )
60 , mOriginalMapExtent( rh.mOriginalMapExtent )
61 , mMapToPixel( rh.mMapToPixel )
62 , mRenderingStopped( rh.mRenderingStopped )
63 , mFeedback( rh.mFeedback )
64 , mScaleFactor( rh.mScaleFactor )
65 , mDpiTarget( rh.mDpiTarget )
66 , mRendererScale( rh.mRendererScale )
67 , mSymbologyReferenceScale( rh.mSymbologyReferenceScale )
68 , mLabelingEngine( rh.mLabelingEngine )
69 , mLabelSink( rh.mLabelSink )
70 , mSelectionColor( rh.mSelectionColor )
71 , mVectorSimplifyMethod( rh.mVectorSimplifyMethod )
72 , mExpressionContext( rh.mExpressionContext )
74 , mGeometry( rh.mGeometry )
75 , mFeatureFilterProvider( rh.mFeatureFilterProvider ? rh.mFeatureFilterProvider->clone() : nullptr )
76 , mSegmentationTolerance( rh.mSegmentationTolerance )
77 , mSegmentationToleranceType( rh.mSegmentationToleranceType )
78 , mTransformContext( rh.mTransformContext )
79 , mPathResolver( rh.mPathResolver )
80 , mTextRenderFormat( rh.mTextRenderFormat )
81 , mRenderedFeatureHandlers( rh.mRenderedFeatureHandlers )
82 , mHasRenderedFeatureHandlers( rh.mHasRenderedFeatureHandlers )
83 , mCustomProperties( rh.mCustomProperties )
84 , mDisabledSymbolLayers()
85 , mClippingRegions( rh.mClippingRegions )
86 , mFeatureClipGeometry( rh.mFeatureClipGeometry )
87 , mTextureOrigin( rh.mTextureOrigin )
88 , mZRange( rh.mZRange )
90 , mDevicePixelRatio( rh.mDevicePixelRatio )
91 , mImageFormat( rh.mImageFormat )
92 , mRendererUsage( rh.mRendererUsage )
93 , mFrameRate( rh.mFrameRate )
94 , mCurrentFrame( rh.mCurrentFrame )
95 , mSymbolLayerClippingGeometries( rh.mSymbolLayerClippingGeometries )
96 , mMaskRenderSettings( rh.mMaskRenderSettings )
98 , mHasTransformContext( rh.mHasTransformContext )
100 , mElevationMap( rh.mElevationMap )
107 , mFlags( rh.mFlags )
108 , mRasterizedRenderingPolicy( rh.mRasterizedRenderingPolicy )
109 , mPainter( rh.mPainter )
110 , mPreviewRenderPainter( rh.mPreviewRenderPainter )
111 , mMaskPainter( std::move( rh.mMaskPainter ) )
112 , mMaskIdProvider( rh.mMaskIdProvider )
113 , mCurrentMaskId( rh.mCurrentMaskId )
114 , mIsGuiPreview( rh.mIsGuiPreview )
115 , mCoordTransform( std::move( rh.mCoordTransform ) )
116 , mDistanceArea( std::move( rh.mDistanceArea ) )
117 , mExtent( std::move( rh.mExtent ) )
118 , mOriginalMapExtent( std::move( rh.mOriginalMapExtent ) )
119 , mMapToPixel( std::move( rh.mMapToPixel ) )
120 , mRenderingStopped( rh.mRenderingStopped )
121 , mFeedback( rh.mFeedback )
122 , mScaleFactor( rh.mScaleFactor )
123 , mDpiTarget( rh.mDpiTarget )
124 , mRendererScale( rh.mRendererScale )
125 , mSymbologyReferenceScale( rh.mSymbologyReferenceScale )
126 , mLabelingEngine( rh.mLabelingEngine )
127 , mLabelSink( rh.mLabelSink )
128 , mSelectionColor( std::move( rh.mSelectionColor ) )
129 , mVectorSimplifyMethod( std::move( rh.mVectorSimplifyMethod ) )
130 , mExpressionContext( std::move( rh.mExpressionContext ) )
131 , mGeometry( std::move( rh.mGeometry ) )
132 , mFeatureFilterProvider( std::move( rh.mFeatureFilterProvider ) )
133 , mSegmentationTolerance( rh.mSegmentationTolerance )
134 , mSegmentationToleranceType( rh.mSegmentationToleranceType )
135 , mTransformContext( std::move( rh.mTransformContext ) )
136 , mPathResolver( std::move( rh.mPathResolver ) )
137 , mTextRenderFormat( rh.mTextRenderFormat )
138 , mRenderedFeatureHandlers( std::move( rh.mRenderedFeatureHandlers ) )
139 , mHasRenderedFeatureHandlers( rh.mHasRenderedFeatureHandlers )
140 , mCustomProperties( std::move( rh.mCustomProperties ) )
141 , mDisabledSymbolLayers( std::move( rh.mDisabledSymbolLayers ) )
142 , mClippingRegions( std::move( rh.mClippingRegions ) )
143 , mFeatureClipGeometry( std::move( rh.mFeatureClipGeometry ) )
144 , mTextureOrigin( std::move( rh.mTextureOrigin ) )
145 , mZRange( std::move( rh.mZRange ) )
146 , mSize( std::move( rh.mSize ) )
147 , mDevicePixelRatio( rh.mDevicePixelRatio )
148 , mImageFormat( rh.mImageFormat )
149 , mRendererUsage( rh.mRendererUsage )
150 , mFrameRate( rh.mFrameRate )
151 , mCurrentFrame( rh.mCurrentFrame )
152 , mSymbolLayerClippingGeometries( std::move( rh.mSymbolLayerClippingGeometries ) )
153 , mMaskRenderSettings( std::move( rh.mMaskRenderSettings ) )
155 , mHasTransformContext( rh.mHasTransformContext )
157 , mElevationMap( rh.mElevationMap )
169 mRasterizedRenderingPolicy = rh.mRasterizedRenderingPolicy;
170 mPainter = rh.mPainter;
171 mPreviewRenderPainter = rh.mPreviewRenderPainter;
172 mMaskPainter = rh.mMaskPainter;
176 mIsGuiPreview = rh.mIsGuiPreview;
177 mCoordTransform = rh.mCoordTransform;
178 mExtent = rh.mExtent;
179 mOriginalMapExtent = rh.mOriginalMapExtent;
180 mMapToPixel = rh.mMapToPixel;
181 mRenderingStopped = rh.mRenderingStopped;
182 mFeedback = rh.mFeedback;
183 mScaleFactor = rh.mScaleFactor;
184 mDpiTarget = rh.mDpiTarget;
185 mRendererScale = rh.mRendererScale;
186 mSymbologyReferenceScale = rh.mSymbologyReferenceScale;
187 mLabelingEngine = rh.mLabelingEngine;
188 mLabelSink = rh.mLabelSink;
189 mSelectionColor = rh.mSelectionColor;
190 mVectorSimplifyMethod = rh.mVectorSimplifyMethod;
191 mExpressionContext = rh.mExpressionContext;
192 mGeometry = rh.mGeometry;
193 mFeatureFilterProvider.reset( rh.mFeatureFilterProvider ? rh.mFeatureFilterProvider->clone() :
nullptr );
194 mSegmentationTolerance = rh.mSegmentationTolerance;
196 mSegmentationToleranceType = rh.mSegmentationToleranceType;
197 mDistanceArea = rh.mDistanceArea;
198 mTransformContext = rh.mTransformContext;
199 mPathResolver = rh.mPathResolver;
200 mTextRenderFormat = rh.mTextRenderFormat;
201 mRenderedFeatureHandlers = rh.mRenderedFeatureHandlers;
202 mHasRenderedFeatureHandlers = rh.mHasRenderedFeatureHandlers;
203 mCustomProperties = rh.mCustomProperties;
204 mClippingRegions = rh.mClippingRegions;
205 mFeatureClipGeometry = rh.mFeatureClipGeometry;
206 mTextureOrigin = rh.mTextureOrigin;
207 mZRange = rh.mZRange;
209 mDevicePixelRatio = rh.mDevicePixelRatio;
210 mImageFormat = rh.mImageFormat;
212 mRendererUsage = rh.mRendererUsage;
213 mFrameRate = rh.mFrameRate;
214 mCurrentFrame = rh.mCurrentFrame;
215 mSymbolLayerClippingGeometries = rh.mSymbolLayerClippingGeometries;
216 mMaskRenderSettings = rh.mMaskRenderSettings;
220 mHasTransformContext = rh.mHasTransformContext;
233 mRasterizedRenderingPolicy = rh.mRasterizedRenderingPolicy;
234 mPainter = rh.mPainter;
235 mPreviewRenderPainter = rh.mPreviewRenderPainter;
236 mMaskPainter = std::move( rh.mMaskPainter );
237 mMaskIdProvider = rh.mMaskIdProvider;
238 mCurrentMaskId = rh.mCurrentMaskId;
239 mIsGuiPreview = rh.mIsGuiPreview;
240 mCoordTransform = std::move( rh.mCoordTransform );
241 mExtent = std::move( rh.mExtent );
242 mOriginalMapExtent = std::move( rh.mOriginalMapExtent );
243 mMapToPixel = std::move( rh.mMapToPixel );
244 mRenderingStopped = rh.mRenderingStopped;
245 mFeedback = rh.mFeedback;
246 mScaleFactor = rh.mScaleFactor;
247 mDpiTarget = rh.mDpiTarget;
248 mRendererScale = rh.mRendererScale;
249 mSymbologyReferenceScale = rh.mSymbologyReferenceScale;
250 mLabelingEngine = rh.mLabelingEngine;
251 mLabelSink = rh.mLabelSink;
252 mSelectionColor = rh.mSelectionColor;
253 mVectorSimplifyMethod = std::move( rh.mVectorSimplifyMethod );
254 mExpressionContext = std::move( rh.mExpressionContext );
255 mGeometry = rh.mGeometry;
256 mFeatureFilterProvider = std::move( rh.mFeatureFilterProvider );
257 mSegmentationTolerance = rh.mSegmentationTolerance;
258 mSegmentationToleranceType = rh.mSegmentationToleranceType;
259 mDistanceArea = std::move( rh.mDistanceArea );
260 mTransformContext = std::move( rh.mTransformContext );
261 mPathResolver = std::move( rh.mPathResolver );
262 mTextRenderFormat = rh.mTextRenderFormat;
263 mRenderedFeatureHandlers = std::move( rh.mRenderedFeatureHandlers );
264 mHasRenderedFeatureHandlers = rh.mHasRenderedFeatureHandlers;
265 mCustomProperties = std::move( rh.mCustomProperties );
266 mClippingRegions = std::move( rh.mClippingRegions );
267 mFeatureClipGeometry = std::move( rh.mFeatureClipGeometry );
268 mTextureOrigin = std::move( rh.mTextureOrigin );
269 mZRange = std::move( rh.mZRange );
270 mSize = std::move( rh.mSize );
271 mDevicePixelRatio = rh.mDevicePixelRatio;
272 mImageFormat = rh.mImageFormat;
274 mRendererUsage = rh.mRendererUsage;
275 mFrameRate = rh.mFrameRate;
276 mCurrentFrame = rh.mCurrentFrame;
277 mSymbolLayerClippingGeometries = std::move( rh.mSymbolLayerClippingGeometries );
278 mMaskRenderSettings = std::move( rh.mMaskRenderSettings );
282 mHasTransformContext = rh.mHasTransformContext;
284 mElevationMap = rh.mElevationMap;
304 if (
painter &&
painter->renderHints() & QPainter::SmoothPixmapTransform )
306 if (
painter &&
painter->renderHints() & QPainter::LosslessImageRendering )
328 if ( !mHasTransformContext )
329 QgsDebugMsgLevel( QStringLiteral(
"No QgsCoordinateTransformContext context set for transform" ), 4 );
331 return mTransformContext;
336 mTransformContext = context;
338 mHasTransformContext =
true;
355 matchRasterizedRenderingPolicyToFlags();
363 mFlags &= ~(
static_cast< int >( flag ) );
364 matchRasterizedRenderingPolicyToFlags();
374 return mFlags.testFlag( flag );
439 ctx.mFrameRate = mapSettings.
frameRate();
442 const QStringList layerIds = mapSettings.
layerIds(
true );
443 if ( !layerIds.empty() )
502 switch ( mRasterizedRenderingPolicy )
534 mFeatureFilterProvider.reset( ffp->
clone() );
538 mFeatureFilterProvider.reset(
nullptr );
544 return mFeatureFilterProvider.get();
549 double conversionFactor = 1.0;
550 bool isMapUnitHack =
false;
554 conversionFactor = mScaleFactor;
567 if ( mMapToPixel.isValid() )
575 if ( mMapToPixel.isValid() )
580 conversionFactor = 1.0 / mup;
584 conversionFactor = 1.0;
591 isMapUnitHack =
true;
597 conversionFactor = 1.0;
603 conversionFactor = 1.0;
607 double convertedSize = size * conversionFactor;
613 convertedSize = std::max( convertedSize, scale.
minSizeMM * mScaleFactor );
615 convertedSize = std::min( convertedSize, scale.
maxSizeMM * mScaleFactor );
621 convertedSize = std::clamp( convertedSize, 10.0, 100.0 );
625 const double symbologyReferenceScaleFactor = mSymbologyReferenceScale > 0 ? mSymbologyReferenceScale / mRendererScale : 1;
626 convertedSize *= symbologyReferenceScaleFactor;
639 convertedSize = std::min( convertedSize, 100.0 );
643 convertedSize = std::min<double>( convertedSize, 30 );
647 convertedSize = std::min<double>( convertedSize, 50 );
652 return convertedSize;
657 double conversionFactor = 1.0;
662 conversionFactor = 1 / mScaleFactor;
670 conversionFactor = 1 / ( mScaleFactor *
INCH_TO_MM );
675 if ( mMapToPixel.isValid() )
682 if ( mMapToPixel.isValid() )
687 conversionFactor = mup / 1.0;
691 conversionFactor = 1.0;
703 conversionFactor = 1.0;
709 conversionFactor = 1.0;
714 return size * conversionFactor;
719 const double mup = mMapToPixel.mapUnitsPerPixel();
721 const double symbologyReferenceScaleFactor = mSymbologyReferenceScale > 0 ? mSymbologyReferenceScale / mRendererScale : 1;
734 double minSizeMU = std::numeric_limits<double>::lowest();
737 minSizeMU = scale.
minSizeMM * mScaleFactor * mup;
741 minSizeMU = std::max( minSizeMU, size * ( mRendererScale / scale.
minScale ) );
743 size = std::max( size, minSizeMU );
745 double maxSizeMU = std::numeric_limits<double>::max();
748 maxSizeMU = scale.
maxSizeMM * mScaleFactor * mup;
752 maxSizeMU = std::min( maxSizeMU, size * ( mRendererScale / scale.
maxScale ) );
754 size = std::min( size, maxSizeMU );
760 return size * mScaleFactor * mup / symbologyReferenceScaleFactor;
764 return size * mScaleFactor * mup /
POINTS_TO_MM / symbologyReferenceScaleFactor;
768 return size * mScaleFactor * mup *
INCH_TO_MM / symbologyReferenceScaleFactor;
772 return size * mup / symbologyReferenceScaleFactor;
785 const double mup = mMapToPixel.mapUnitsPerPixel();
786 const double symbologyReferenceScaleFactor = mSymbologyReferenceScale > 0 ? mSymbologyReferenceScale / mRendererScale : 1;
788 switch ( outputUnit )
796 return sizeInMapUnits;
800 return sizeInMapUnits / ( mScaleFactor * mup ) * symbologyReferenceScaleFactor;
804 return sizeInMapUnits / ( mScaleFactor * mup /
POINTS_TO_MM ) * symbologyReferenceScaleFactor;
808 return sizeInMapUnits / ( mScaleFactor * mup *
INCH_TO_MM ) * symbologyReferenceScaleFactor;
812 return sizeInMapUnits / mup * symbologyReferenceScaleFactor;
825 switch ( mDistanceArea.sourceCrs().mapUnits() )
831 if ( mExtent.isNull() )
841 if ( !mCoordTransform.isShortCircuited() )
845 pointCenter = mCoordTransform.transform( pointCenter );
849 QgsDebugError( QStringLiteral(
"QgsRenderContext::convertMetersToMapUnits(): failed to reproject pointCenter" ) );
855 const int multiplier = meters < 0 ? -1 : 1;
856 return multiplier * mDistanceArea.measureLineProjected( pointCenter, std::fabs( meters ) );
913 return mRenderedFeatureHandlers;
918 return mClippingRegions;
923 return mFeatureClipGeometry;
933 return mTextureOrigin;
938 mTextureOrigin = origin;
943 mMaskRenderSettings = settings;
968 return mDevicePixelRatio;
973 mDevicePixelRatio = ratio;
983 return mRasterizedRenderingPolicy;
988 mRasterizedRenderingPolicy = policy;
989 switch ( mRasterizedRenderingPolicy )
1018 return mCurrentFrame;
1023 mCurrentFrame = frame;
1028 return mElevationMap;
1033 mElevationMap = map;
1036void QgsRenderContext::matchRasterizedRenderingPolicyToFlags()
1059 QList<QPainterPath> res;
1060 res.reserve( geometries.size() );
1063 res <<
geometry.constGet()->asQPainterPath();
1072 mSymbolLayerClippingGeometries[ symbolLayerId ].append(
geometry.asGeometryCollection() );
1076 mSymbolLayerClippingGeometries[ symbolLayerId ].append(
geometry );
1082 auto it = mSymbolLayerClippingGeometries.constFind( symbolLayerId );
1083 if ( it == mSymbolLayerClippingGeometries.constEnd() )
1085 return !it.value().isEmpty();
1090 return mSymbolLayerClippingGeometries[ symbolLayerId ];
1095 mDisabledSymbolLayers.clear();
1097 mDisabledSymbolLayers << symbolLayer->id();
1102 mDisabledSymbolLayers = symbolLayers;
1107 return QSet<const QgsSymbolLayer *>();
1112 return mDisabledSymbolLayers;
1117 return !mDisabledSymbolLayers.contains( layer->
id() );
Provides global constants and enumerations for use throughout the application.
RasterizedRenderingPolicy
Policies controlling when rasterisation of content during renders is permitted.
@ Default
Allow raster-based rendering in situations where it is required for correct rendering or where it wil...
@ PreferVector
Prefer vector-based rendering, when the result will still be visually near-identical to a raster-base...
@ ForceVector
Always force vector-based rendering, even when the result will be visually different to a raster-base...
RenderSubcomponentProperty
Rendering subcomponent properties.
@ ShadowOffset
Shadow offset.
@ GlowSpread
Glow spread size.
@ Generic
Generic subcomponent property.
@ NoSimplification
No simplification can be applied.
@ YardsBritishSears1922Truncated
British yards (Sears 1922 truncated).
@ MilesUSSurvey
US Survey miles.
@ LinksBritishSears1922
British links (Sears 1922).
@ YardsBritishBenoit1895A
British yards (Benoit 1895 A).
@ LinksBritishBenoit1895A
British links (Benoit 1895 A).
@ Centimeters
Centimeters.
@ YardsIndian1975
Indian yards (1975).
@ FeetUSSurvey
US Survey feet.
@ Millimeters
Millimeters.
@ FeetBritishSears1922
British feet (Sears 1922).
@ YardsClarkes
Clarke's yards.
@ YardsIndian
Indian yards.
@ FeetBritishBenoit1895B
British feet (Benoit 1895 B).
@ Miles
Terrestrial miles.
@ LinksUSSurvey
US Survey links.
@ ChainsUSSurvey
US Survey chains.
@ FeetClarkes
Clarke's feet.
@ Unknown
Unknown distance unit.
@ FeetBritish1936
British feet (1936).
@ FeetIndian1962
Indian feet (1962).
@ YardsBritishSears1922
British yards (Sears 1922).
@ FeetIndian1937
Indian feet (1937).
@ YardsIndian1937
Indian yards (1937).
@ Degrees
Degrees, for planar geographic CRS distance measurements.
@ ChainsBritishBenoit1895B
British chains (Benoit 1895 B).
@ LinksBritishSears1922Truncated
British links (Sears 1922 truncated).
@ ChainsBritishBenoit1895A
British chains (Benoit 1895 A).
@ YardsBritishBenoit1895B
British yards (Benoit 1895 B).
@ FeetBritish1865
British feet (1865).
@ YardsIndian1962
Indian yards (1962).
@ FeetBritishSears1922Truncated
British feet (Sears 1922 truncated).
@ MetersGermanLegal
German legal meter.
@ LinksBritishBenoit1895B
British links (Benoit 1895 B).
@ ChainsInternational
International chains.
@ LinksInternational
International links.
@ ChainsBritishSears1922Truncated
British chains (Sears 1922 truncated).
@ FeetIndian
Indian (geodetic) feet.
@ NauticalMiles
Nautical miles.
@ ChainsClarkes
Clarke's chains.
@ LinksClarkes
Clarke's links.
@ ChainsBritishSears1922
British chains (Sears 1922).
@ FeetIndian1975
Indian feet (1975).
@ FeetGoldCoast
Gold Coast feet.
@ FeetBritishBenoit1895A
British feet (Benoit 1895 A).
QFlags< RenderContextFlag > RenderContextFlags
Render context flags.
RenderUnit
Rendering size units.
@ Percentage
Percentage of another measurement (e.g., canvas size, feature size).
@ Millimeters
Millimeters.
@ Points
Points (e.g., for font sizes).
@ Unknown
Mixed or unknown units.
@ MetersInMapUnits
Meters value as Map units.
RenderContextFlag
Flags which affect rendering operations.
@ DrawEditingInfo
Enable drawing of vertex markers for layers in editing mode.
@ RenderSymbolPreview
The render is for a symbol preview only and map based properties may not be available,...
@ DrawSymbolBounds
Draw bounds of symbols (for debugging/testing).
@ RenderPreviewJob
Render is a 'canvas preview' render, and shortcuts should be taken to ensure fast rendering.
@ RenderMapTile
Draw map such that there are no problems between adjacent tiles.
@ RecordProfile
Enable run-time profiling while rendering.
@ RenderLayerTree
The render is for a layer tree display where map based properties are not available and where avoidan...
@ UseRenderingOptimization
Enable vector simplification and other rendering optimizations.
@ ForceVectorOutput
Vector graphics should not be cached and drawn as raster images.
@ RenderPartialOutput
Whether to make extra effort to update map image with partially rendered layers (better for interacti...
@ LosslessImageRendering
Render images losslessly whenever possible, instead of the default lossy jpeg rendering used for some...
@ AlwaysUseGlobalMasks
When applying clipping paths for selective masking, always use global ("entire map") paths,...
@ DrawSelection
Whether vector selections should be shown in the rendered map.
@ Antialiasing
Use antialiasing while drawing.
@ SkipSymbolRendering
Disable symbol rendering while still drawing labels if enabled.
@ Render3DMap
Render is for a 3D map.
@ UseAdvancedEffects
Enable layer opacity and blending effects.
@ HighQualityImageTransforms
Enable high quality image transformations, which results in better appearance of scaled or rotated ra...
@ RenderBlocking
Render and load remote sources in the same thread to ensure rendering remote sources (svg and images)...
@ DrawEditingInfo
Enable drawing of vertex markers for layers in editing mode.
@ DrawSymbolBounds
Draw bounds of symbols (for debugging/testing).
@ RenderPreviewJob
Render is a 'canvas preview' render, and shortcuts should be taken to ensure fast rendering.
@ RenderMapTile
Draw map such that there are no problems between adjacent tiles.
@ RecordProfile
Enable run-time profiling while rendering.
@ UseRenderingOptimization
Enable vector simplification and other rendering optimizations.
@ ForceVectorOutput
Vector graphics should not be cached and drawn as raster images.
@ RenderPartialOutput
Whether to make extra effort to update map image with partially rendered layers (better for interacti...
@ LosslessImageRendering
Render images losslessly whenever possible, instead of the default lossy jpeg rendering used for some...
@ AlwaysUseGlobalMasks
When applying clipping paths for selective masking, always use global ("entire map") paths,...
@ DrawSelection
Whether vector selections should be shown in the rendered map.
@ Antialiasing
Enable anti-aliasing for map rendering.
@ SkipSymbolRendering
Disable symbol rendering while still drawing labels if enabled.
@ Render3DMap
Render is for a 3D map.
@ UseAdvancedEffects
Enable layer opacity and blending effects.
@ HighQualityImageTransforms
Enable high quality image transformations, which results in better appearance of scaled or rotated ra...
@ RenderBlocking
Render and load remote sources in the same thread to ensure rendering remote sources (svg and images)...
Contains information about the context in which a coordinate transform is executed.
Custom exception class for Coordinate Reference System related exceptions.
void setSourceCrs(const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context)
Sets source spatial reference system crs.
bool setEllipsoid(const QString &ellipsoid)
Sets the ellipsoid by its acronym.
QgsRange which stores a range of double values.
Stores a digital elevation model in a raster image which may get updated as a part of the map layer r...
Abstract interface for use by classes that filter the features or attributes of a layer.
virtual QgsFeatureFilterProvider * clone() const =0
Create a clone of the feature filter provider.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
static QgsGeometry painterPathToGeometry(const QPainterPath &path)
Converts a painter path to a QgsGeometry.
A geometry is the spatial representation of a feature.
Contains configuration for rendering maps.
Qgis::RendererUsage rendererUsage() const
Returns the rendering usage.
double scale() const
Returns the calculated map scale.
double segmentationTolerance() const
Gets the segmentation tolerance applied when rendering curved geometries.
QgsDoubleRange zRange() const
Returns the range of z-values which will be visible in the map.
const QgsVectorSimplifyMethod & simplifyMethod() const
Returns the simplification settings to use when rendering vector layers.
QList< QgsRenderedFeatureHandlerInterface * > renderedFeatureHandlers() const
Returns the list of rendered feature handlers to use while rendering the map settings.
QStringList layerIds(bool expandGroupLayers=false) const
Returns the list of layer IDs which will be rendered in the map.
double dpiTarget() const
Returns the target DPI (dots per inch) to be taken into consideration when rendering.
long long currentFrame() const
Returns the current frame number of the map, for maps which are part of an animation.
const QgsMapToPixel & mapToPixel() const
float devicePixelRatio() const
Returns the device pixel ratio.
QSize outputSize() const
Returns the size of the resulting map image, in pixels.
QImage::Format outputImageFormat() const
format of internal QImage, default QImage::Format_ARGB32_Premultiplied
double extentBuffer() const
Returns the buffer in map units to use around the visible extent for rendering symbols whose correspo...
double frameRate() const
Returns the frame rate of the map (in frames per second), for maps which are part of an animation.
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...
QgsRectangle visibleExtent() const
Returns the actual extent derived from requested extent that takes output image size into account.
QVariantMap customRenderingFlags() const
Returns any custom rendering flags.
QString ellipsoid() const
Returns ellipsoid's acronym.
Qgis::TextRenderFormat textRenderFormat() const
Returns the text render format, which dictates how text is rendered (e.g.
double outputDpi() const
Returns the DPI (dots per inch) used for conversion between real world units (e.g.
bool testFlag(Qgis::MapSettingsFlag flag) const
Check whether a particular flag is enabled.
QList< QgsMapClippingRegion > clippingRegions() const
Returns the list of clipping regions to apply to the map.
Qgis::RasterizedRenderingPolicy rasterizedRenderingPolicy() const
Returns the policy controlling when rasterisation of content during renders is permitted.
const QgsPathResolver & pathResolver() const
Returns the path resolver for conversion between relative and absolute paths during rendering operati...
QgsCoordinateReferenceSystem destinationCrs() const
Returns the destination coordinate reference system for the map render.
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 ...
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context, which stores various information regarding which datum tran...
double mapUnitsPerPixel() const
Returns the current map units per pixel.
Struct for storing maximum and minimum scales for measurements in map units.
double computeMapUnitsPerPixel(const QgsRenderContext &c) const
Computes a map units per pixel scaling factor, respecting the minimum and maximum scales set for the ...
bool minSizeMMEnabled
Whether the minimum size in mm should be respected.
double maxScale
The maximum scale, or 0.0 if unset.
double minScale
The minimum scale, or 0.0 if unset.
double maxSizeMM
The maximum size in millimeters, or 0.0 if unset.
bool maxSizeMMEnabled
Whether the maximum size in mm should be respected.
double minSizeMM
The minimum size in millimeters, or 0.0 if unset.
Contains settings regarding how masks are calculated and handled during a map render.
A rectangle specified with double values.
Q_DECL_DEPRECATED void setForceVectorOutput(bool force)
Sets whether rendering operations should use vector operations instead of any faster raster shortcuts...
void setMapExtent(const QgsRectangle &extent)
Sets the original extent of the map being rendered.
void setTextureOrigin(const QPointF &origin)
Sets the texture origin, which should be used as a brush transform when rendering using QBrush object...
bool symbolLayerHasClipGeometries(const QString &symbolLayerId) const
Returns true if the symbol layer with matching ID has any associated clip geometries.
void setRenderingStopped(bool stopped)
Sets whether the rendering operation has been stopped and any ongoing rendering should be canceled im...
void setCoordinateTransform(const QgsCoordinateTransform &t)
Sets the current coordinate transform for the context.
double convertToMapUnits(double size, Qgis::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const
Converts a size from the specified units to map units.
void setShowSelection(bool showSelection)
Sets whether vector selections should be shown in the rendered map.
void setDrawEditingInformation(bool b)
Sets whether edit markers should be drawn during the render operation.
Q_DECL_DEPRECATED bool useAdvancedEffects() const
Returns true if advanced effects such as blend modes such be used.
void setScaleFactor(double factor)
Sets the scaling factor for the render to convert painter units to physical sizes.
void setImageFormat(QImage::Format format)
Sets QImage format which should be used for QImages created during rendering.
double convertFromPainterUnits(double size, Qgis::RenderUnit unit) const
Converts a size from painter units (pixels) to the specified render unit.
void setSegmentationToleranceType(QgsAbstractGeometry::SegmentationToleranceType type)
Sets segmentation tolerance type (maximum angle or maximum difference between curve and approximation...
QSet< QString > disabledSymbolLayersV2() const
When rendering a map layer in a second pass (for selective masking), some symbol layers may be disabl...
void setDevicePixelRatio(float ratio)
Sets the device pixel ratio.
Q_DECL_DEPRECATED void setUseAdvancedEffects(bool enabled)
Used to enable or disable advanced effects such as blend modes.
void setCurrentFrame(long long frame)
Sets the current frame of the map, for maps which are part of an animation.
double convertToPainterUnits(double size, Qgis::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::RenderSubcomponentProperty property=Qgis::RenderSubcomponentProperty::Generic) const
Converts a size from the specified units to painter units (pixels).
QPainter * painter()
Returns the destination QPainter for the render operation.
void setMaskSettings(const QgsMaskRenderSettings &settings)
Sets the mask render settings, which control how masks are drawn and behave during render operations.
void setPainterFlagsUsingContext(QPainter *painter=nullptr) const
Sets relevant flags on a destination painter, using the flags and settings currently defined for the ...
void setTextRenderFormat(Qgis::TextRenderFormat format)
Sets the text render format, which dictates how text is rendered (e.g.
void setVectorSimplifyMethod(const QgsVectorSimplifyMethod &simplifyMethod)
Sets the simplification setting to use when rendering vector layers.
double convertFromMapUnits(double sizeInMapUnits, Qgis::RenderUnit outputUnit) const
Converts a size from map units to the specified units.
QgsCoordinateTransformContext transformContext() const
Returns the context's coordinate transform context, which stores various information regarding which ...
QSize outputSize() const
Returns the size of the resulting rendered image, in pixels.
QgsGeometry featureClipGeometry() const
Returns the geometry to use to clip features at render time.
QgsElevationMap * elevationMap() const
Returns the destination elevation map for the render operation.
const QgsRectangle & extent() const
When rendering a map layer, calling this method returns the "clipping" extent for the layer (in the l...
bool testFlag(Qgis::RenderContextFlag flag) const
Check whether a particular flag is enabled.
Q_DECL_DEPRECATED bool forceVectorOutput() const
Returns true if rendering operations should use vector operations instead of any faster raster shortc...
Q_DECL_DEPRECATED void setDisabledSymbolLayers(const QSet< const QgsSymbolLayer * > &symbolLayers)
When rendering a map layer in a second pass (for selective masking), some symbol layers may be disabl...
long long currentFrame() const
Returns the current frame number of the map (in frames per second), for maps which are part of an ani...
void setDpiTarget(double dpi)
Sets the targeted dpi for rendering.
~QgsRenderContext() override
void setPathResolver(const QgsPathResolver &resolver)
Sets the path resolver for conversion between relative and absolute paths during rendering operations...
float devicePixelRatio() const
Returns the device pixel ratio.
void setFeedback(QgsFeedback *feedback)
Attach a feedback object that can be queried regularly during rendering to check if rendering should ...
Q_DECL_DEPRECATED void addSymbolLayerClipPath(const QString &symbolLayerId, QPainterPath path)
Add a clip path to be applied to the symbolLayer before rendering.
void setFeatureClipGeometry(const QgsGeometry &geometry)
Sets a geometry to use to clip features at render time.
void setDisabledSymbolLayersV2(const QSet< QString > &symbolLayers)
When rendering a map layer in a second pass (for selective masking), some symbol layers may be disabl...
const QgsFeatureFilterProvider * featureFilterProvider() const
Gets the filter feature provider used for additional filtering of rendered features.
void setRasterizedRenderingPolicy(Qgis::RasterizedRenderingPolicy policy)
Sets the policy controlling when rasterisation of content during renders is permitted.
QList< QgsRenderedFeatureHandlerInterface * > renderedFeatureHandlers() const
Returns the list of rendered feature handlers to use while rendering map layers.
void setFlag(Qgis::RenderContextFlag flag, bool on=true)
Enable or disable a particular flag (other flags are not affected).
double frameRate() const
Returns the frame rate of the map, for maps which are part of an animation.
bool showSelection() const
Returns true if vector selections should be shown in the rendered map.
QList< QgsMapClippingRegion > clippingRegions() const
Returns the list of clipping regions to apply during the render.
void setFrameRate(double rate)
Sets the frame rate of the map (in frames per second), for maps which are part of an animation.
const QgsMapToPixel & mapToPixel() const
Returns the context's map to pixel transform, which transforms between map coordinates and device coo...
void setTransformContext(const QgsCoordinateTransformContext &context)
Sets the context's coordinate transform context, which stores various information regarding which dat...
void setFlags(Qgis::RenderContextFlags flags)
Set combination of flags that will be used for rendering.
void setExtent(const QgsRectangle &extent)
When rendering a map layer, calling this method sets the "clipping" extent for the layer (in the laye...
void setMapToPixel(const QgsMapToPixel &mtp)
Sets the context's map to pixel transform, which transforms between map coordinates and device coordi...
Q_DECL_DEPRECATED QSet< const QgsSymbolLayer * > disabledSymbolLayers() const
When rendering a map layer in a second pass (for selective masking), some symbol layers may be disabl...
void setOutputSize(QSize size)
Sets the size of the resulting rendered image, in pixels.
void setCustomProperty(const QString &property, const QVariant &value)
Sets a custom rendering property.
QgsFeedback * feedback() const
Returns the feedback object that can be queried regularly during rendering to check if rendering shou...
QPointF textureOrigin() const
Returns the texture origin, which should be used as a brush transform when rendering using QBrush obj...
Qgis::RasterizedRenderingPolicy rasterizedRenderingPolicy() const
Returns the policy controlling when rasterisation of content during renders is permitted.
void setPainter(QPainter *p)
Sets the destination QPainter for the render operation.
QgsDoubleRange zRange() const
Returns the range of z-values which should be rendered.
bool isSymbolLayerEnabled(const QgsSymbolLayer *layer) const
When rendering a map layer in a second pass (for selective masking), some symbol layers may be disabl...
QSize deviceOutputSize() const
Returns the device output size of the render.
QVector< QgsGeometry > symbolLayerClipGeometries(const QString &symbolLayerId) const
Returns clipping geometries to be applied to the symbolLayer before rendering.
static QgsRenderContext fromMapSettings(const QgsMapSettings &mapSettings)
create initialized QgsRenderContext instance from given QgsMapSettings
bool drawEditingInformation() const
Returns true if edit markers should be drawn during the render operation.
static QgsRenderContext fromQPainter(QPainter *painter)
Creates a default render context given a pixel based QPainter destination.
void setExpressionContext(const QgsExpressionContext &context)
Sets the expression context.
void setUseRenderingOptimization(bool enabled)
Sets whether the rendering optimization (geometry simplification) should be executed.
void setRendererScale(double scale)
Sets the renderer map scale.
void setZRange(const QgsDoubleRange &range)
Sets the range of z-values which should be rendered.
double convertMetersToMapUnits(double meters) const
Convert meter distances to active MapUnit values for QgsUnitTypes::RenderMetersInMapUnits.
void addSymbolLayerClipGeometry(const QString &symbolLayerId, const QgsGeometry &geometry)
Add a clip geometry to be applied to the symbolLayer before rendering.
Qgis::RenderContextFlags flags() const
Returns combination of flags used for rendering.
Q_DECL_DEPRECATED QList< QPainterPath > symbolLayerClipPaths(const QString &symbolLayerId) const
Returns clip paths to be applied to the symbolLayer before rendering.
const QgsAbstractGeometry * geometry() const
Returns pointer to the unsegmentized geometry.
void setElevationMap(QgsElevationMap *map)
Sets the destination elevation map for the render operation.
QgsRenderContext & operator=(const QgsRenderContext &rh)
bool useRenderingOptimization() const
Returns true if the rendering optimization (geometry simplification) can be executed.
void setSelectionColor(const QColor &color)
Sets the color to use when rendering selected features.
void setSegmentationTolerance(double tolerance)
Sets the segmentation tolerance applied when rendering curved geometries.
void setFeatureFilterProvider(const QgsFeatureFilterProvider *ffp)
Set a filter feature provider used for additional filtering of rendered features.
Abstract base class for symbol layers.
QString id() const
Returns symbol layer identifier This id is unique in the whole project.
const QgsDateTimeRange & temporalRange() const
Returns the datetime range for the object.
QgsTemporalRangeObject(bool enabled=false)
Constructor QgsTemporalRangeObject.
bool isTemporal() const
Returns true if the object's temporal range is enabled, and the object will be filtered when renderin...
void setIsTemporal(bool enabled)
Sets whether the temporal range is enabled (i.e.
void setTemporalRange(const QgsDateTimeRange &range)
Sets the temporal range for the object.
static Q_INVOKABLE double fromUnitToUnitFactor(Qgis::DistanceUnit fromUnit, Qgis::DistanceUnit toUnit)
Returns the conversion factor between the specified distance units.
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference).
#define QgsDebugMsgLevel(str, level)
#define QgsDebugError(str)