28 #define POINTS_TO_MM 2.83464567 29 #define INCH_TO_MM 25.4 32 : mFlags( DrawEditingInfo | UseAdvancedEffects | DrawSelection | UseRenderingOptimization )
42 , mPainter( rh.mPainter )
43 , mCoordTransform( rh.mCoordTransform )
44 , mDistanceArea( rh.mDistanceArea )
45 , mExtent( rh.mExtent )
46 , mOriginalMapExtent( rh.mOriginalMapExtent )
47 , mMapToPixel( rh.mMapToPixel )
48 , mRenderingStopped( rh.mRenderingStopped )
49 , mScaleFactor( rh.mScaleFactor )
50 , mRendererScale( rh.mRendererScale )
51 , mLabelingEngine( rh.mLabelingEngine )
52 , mSelectionColor( rh.mSelectionColor )
53 , mVectorSimplifyMethod( rh.mVectorSimplifyMethod )
54 , mExpressionContext( rh.mExpressionContext )
55 , mGeometry( rh.mGeometry )
56 , mFeatureFilterProvider( rh.mFeatureFilterProvider ? rh.mFeatureFilterProvider->clone() : nullptr )
57 , mSegmentationTolerance( rh.mSegmentationTolerance )
58 , mSegmentationToleranceType( rh.mSegmentationToleranceType )
59 , mTransformContext( rh.mTransformContext )
60 , mPathResolver( rh.mPathResolver )
61 , mTextRenderFormat( rh.mTextRenderFormat )
63 , mHasTransformContext( rh.mHasTransformContext )
71 mPainter = rh.mPainter;
72 mCoordTransform = rh.mCoordTransform;
74 mOriginalMapExtent = rh.mOriginalMapExtent;
75 mMapToPixel = rh.mMapToPixel;
76 mRenderingStopped = rh.mRenderingStopped;
77 mScaleFactor = rh.mScaleFactor;
78 mRendererScale = rh.mRendererScale;
79 mLabelingEngine = rh.mLabelingEngine;
80 mSelectionColor = rh.mSelectionColor;
81 mVectorSimplifyMethod = rh.mVectorSimplifyMethod;
82 mExpressionContext = rh.mExpressionContext;
83 mGeometry = rh.mGeometry;
84 mFeatureFilterProvider.reset( rh.mFeatureFilterProvider ? rh.mFeatureFilterProvider->clone() : nullptr );
85 mSegmentationTolerance = rh.mSegmentationTolerance;
86 mSegmentationToleranceType = rh.mSegmentationToleranceType;
87 mDistanceArea = rh.mDistanceArea;
88 mTransformContext = rh.mTransformContext;
89 mPathResolver = rh.mPathResolver;
90 mTextRenderFormat = rh.mTextRenderFormat;
92 mHasTransformContext = rh.mHasTransformContext;
102 if ( painter && painter->device() )
104 context.
setScaleFactor( painter->device()->logicalDpiX() / 25.4 );
110 if ( painter && painter->renderHints() & QPainter::Antialiasing )
120 if ( !mHasTransformContext )
121 QgsDebugMsgLevel( QStringLiteral(
"No QgsCoordinateTransformContext context set for transform" ), 4 );
123 return mTransformContext;
128 mTransformContext = context;
130 mHasTransformContext =
true;
154 return mFlags.testFlag( flag );
251 mFeatureFilterProvider.reset( ffp->
clone() );
255 mFeatureFilterProvider.reset(
nullptr );
261 return mFeatureFilterProvider.get();
266 double conversionFactor = 1.0;
270 conversionFactor = mScaleFactor;
293 conversionFactor = 1.0 / mup;
297 conversionFactor = 1.0;
302 conversionFactor = 1.0;
308 conversionFactor = 1.0;
312 double convertedSize = size * conversionFactor;
318 convertedSize = std::max( convertedSize, scale.
minSizeMM * mScaleFactor );
320 convertedSize = std::min( convertedSize, scale.
maxSizeMM * mScaleFactor );
323 return convertedSize;
341 double minSizeMU = std::numeric_limits<double>::lowest();
344 minSizeMU = scale.
minSizeMM * mScaleFactor * mup;
348 minSizeMU = std::max( minSizeMU, size * ( mRendererScale / scale.
minScale ) );
350 size = std::max( size, minSizeMU );
352 double maxSizeMU = std::numeric_limits<double>::max();
355 maxSizeMU = scale.
maxSizeMM * mScaleFactor * mup;
359 maxSizeMU = std::min( maxSizeMU, size * ( mRendererScale / scale.
maxScale ) );
361 size = std::min( size, maxSizeMU );
367 return size * mScaleFactor * mup;
375 return size * mScaleFactor * mup *
INCH_TO_MM;
394 switch ( outputUnit )
402 return sizeInMapUnits;
406 return sizeInMapUnits / ( mScaleFactor * mup );
410 return sizeInMapUnits / ( mScaleFactor * mup /
POINTS_TO_MM );
414 return sizeInMapUnits / ( mScaleFactor * mup *
INCH_TO_MM );
418 return sizeInMapUnits / mup;
443 pointCenter = mCoordTransform.
transform( pointCenter );
void setForceVectorOutput(bool force)
Sets whether rendering operations should use vector operations instead of any faster raster shortcuts...
Meters value as Map units.
double convertToMapUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const
Converts a size from the specified units to map units.
Enable layer opacity and blending effects.
void setRenderingStopped(bool stopped)
Sets whether the rendering operation has been stopped and any ongoing rendering should be canceled im...
double minSizeMM
The minimum size in millimeters, or 0.0 if unset.
Enable vector simplification and other rendering optimizations.
virtual QgsFeatureFilterProvider * clone() const =0
Create a clone of the feature filter provider.
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context, which stores various information regarding which datum tran...
const QgsExpressionContext & expressionContext() const
Gets the expression context.
QgsCoordinateTransformContext transformContext() const
Returns the context's coordinate transform context, which stores various information regarding which ...
void setFlags(QgsRenderContext::Flags flags)
Set combination of flags that will be used for rendering.
Use antialiasing while drawing.
double convertFromMapUnits(double sizeInMapUnits, QgsUnitTypes::RenderUnit outputUnit) const
Converts a size from map units to the specified units.
void setCoordinateTransform(const QgsCoordinateTransform &t)
Sets the current coordinate transform for the context.
A class to represent a 2D point.
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
void setSimplifyHints(SimplifyHints simplifyHints)
Sets the simplification hints of the vector layer managed.
void setRendererScale(double scale)
Sets the renderer map scale.
Whether to make extra effort to update map image with partially rendered layers (better for interacti...
void setPathResolver(const QgsPathResolver &resolver)
Sets the path resolver for conversion between relative and absolute paths during rendering operations...
void setTransformContext(const QgsCoordinateTransformContext &context)
Sets the context's coordinate transform context, which stores various information regarding which dat...
double computeMapUnitsPerPixel(const QgsRenderContext &c) const
Computes a map units per pixel scaling factor, respecting the minimum and maximum scales set for the ...
Flags flags() const
Returns combination of flags used for rendering.
QgsUnitTypes::DistanceUnit mapUnits
bool setEllipsoid(const QString &ellipsoid)
Sets the ellipsoid by its acronym.
Percentage of another measurement (e.g., canvas size, feature size)
Enable layer opacity and blending effects.
void setTextRenderFormat(TextRenderFormat format)
Sets the text render format, which dictates how text is rendered (e.g.
Whether vector selections should be shown in the rendered map.
void setExtent(const QgsRectangle &extent)
When rendering a map layer, calling this method sets the "clipping" extent for the layer (in the laye...
QgsRectangle visibleExtent() const
Returns the actual extent derived from requested extent that takes takes output image size into accou...
double maxScale
The maximum scale, or 0.0 if unset.
const QgsFeatureFilterProvider * featureFilterProvider() const
Gets the filter feature provider used for additional filtering of rendered features.
void setMapExtent(const QgsRectangle &extent)
Sets the original extent of the map being rendered.
bool minSizeMMEnabled
Whether the minimum size in mm should be respected.
QgsCoordinateReferenceSystem destinationCrs() const
returns CRS of destination coordinate reference system
Vector graphics should not be cached and drawn as raster images.
The QgsMapSettings class contains configuration for rendering of the map.
double convertMetersToMapUnits(double meters) const
Convert meter distances to active MapUnit values for QgsUnitTypes::RenderMetersInMapUnits.
void setSelectionColor(const QColor &color)
Sets the color to use when rendering selected features.
No simplification can be applied.
QString ellipsoidAcronym() const
Returns the ellipsoid acronym for the ellipsoid used by the CRS.
void setUseAdvancedEffects(bool enabled)
Used to enable or disable advanced effects such as blend modes.
void setScaleFactor(double factor)
Sets the scaling factor for the render to convert painter units to physical sizes.
QgsRenderContext & operator=(const QgsRenderContext &rh)
#define QgsDebugMsgLevel(str, level)
Whether vector selections should be shown in the rendered map.
double scale() const
Returns the calculated map scale.
void setDrawEditingInformation(bool b)
Sets whether edit markers should be drawn during the render operation.
Enable anti-aliasing for map rendering.
static QgsRenderContext fromQPainter(QPainter *painter)
Creates a default render context given a pixel based QPainter destination.
bool drawEditingInformation() const
Returns true if edit markers should be drawn during the render operation.
Draw bounds of symbols (for debugging/testing)
Degrees, for planar geographic CRS distance measurements.
void setPainter(QPainter *p)
Sets the destination QPainter for the render operation.
Abstract interface for use by classes that filter the features of a layer.
void setSegmentationToleranceType(QgsAbstractGeometry::SegmentationToleranceType type)
Sets segmentation tolerance type (maximum angle or maximum difference between curve and approximation...
Contains information about the context in which a coordinate transform is executed.
double mapUnitsPerPixel() const
Returns current map units per pixel.
const QgsMapToPixel & mapToPixel() const
Draw bounds of symbols (for debugging/testing)
Vector graphics should not be cached and drawn as raster images.
Enable drawing of vertex markers for layers in editing mode.
QgsAbstractGeometry::SegmentationToleranceType segmentationToleranceType() const
Gets segmentation tolerance type (maximum angle or maximum difference between curve and approximation...
const QgsPathResolver & pathResolver() const
Returns the path resolver for conversion between relative and absolute paths during rendering operati...
bool forceVectorOutput() const
Returns true if rendering operations should use vector operations instead of any faster raster shortc...
QgsCoordinateReferenceSystem sourceCrs() const
Returns the source spatial reference system.
void setSegmentationTolerance(double tolerance)
Sets the segmentation tolerance applied when rendering curved geometries.
bool useRenderingOptimization() const
Returns true if the rendering optimization (geometry simplification) can be executed.
Draw map such that there are no problems between adjacent tiles.
Render is a 'canvas preview' render, and shortcuts should be taken to ensure fast rendering...
double outputDpi() const
Returns DPI used for conversion between real world units (e.g.
Render is a 'canvas preview' render, and shortcuts should be taken to ensure fast rendering...
Contains information about the context of a rendering operation.
double convertToPainterUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const
Converts a size from the specified units to painter units (pixels).
QString ellipsoid() const
Returns ellipsoid's acronym.
double segmentationTolerance() const
Gets the segmentation tolerance applied when rendering curved geometries.
QPainter * painter()
Returns the destination QPainter for the render operation.
double maxSizeMM
The maximum size in millimeters, or 0.0 if unset.
Points (e.g., for font sizes)
void setShowSelection(bool showSelection)
Sets whether vector selections should be shown in the rendered map.
Struct for storing maximum and minimum scales for measurements in map units.
Whether to make extra effort to update map image with partially rendered layers (better for interacti...
static QgsRenderContext fromMapSettings(const QgsMapSettings &mapSettings)
create initialized QgsRenderContext instance from given QgsMapSettings
double measureLineProjected(const QgsPointXY &p1, double distance=1, double azimuth=M_PI_2, QgsPointXY *projectedPoint=nullptr) const
Calculates the distance from one point with distance in meters and azimuth (direction) When the sourc...
bool useAdvancedEffects() const
Returns true if advanced effects such as blend modes such be used.
void setMapToPixel(const QgsMapToPixel &mtp)
Sets the context's map to pixel transform, which transforms between map coordinates and device coordi...
void setUseRenderingOptimization(bool enabled)
bool showSelection() const
Returns true if vector selections should be shown in the rendered map.
void setFlag(Flag flag, bool on=true)
Enable or disable a particular flag (other flags are not affected)
void setFeatureFilterProvider(const QgsFeatureFilterProvider *ffp)
Set a filter feature provider used for additional filtering of rendered features. ...
Enable vector simplification and other rendering optimizations.
void setSourceCrs(const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context)
Sets source spatial reference system crs.
bool testFlag(Flag flag) const
Check whether a particular flag is enabled.
QgsRenderContext::TextRenderFormat textRenderFormat() const
Returns the text render format, which dictates how text is rendered (e.g.
QColor selectionColor() const
Gets color that is used for drawing of selected vector features.
QgsPointXY center() const
Returns the center point of the rectangle.
bool testFlag(Flag flag) const
Check whether a particular flag is enabled.
Draw map such that there are no problems between adjacent tiles.
Flag
Enumeration of flags that affect rendering operations.
static Q_INVOKABLE double fromUnitToUnitFactor(QgsUnitTypes::DistanceUnit fromUnit, QgsUnitTypes::DistanceUnit toUnit)
Returns the conversion factor between the specified distance units.
Enable drawing of vertex markers for layers in editing mode.
double minScale
The minimum scale, or 0.0 if unset.
bool maxSizeMMEnabled
Whether the maximum size in mm should be respected.
RenderUnit
Rendering size units.
void setExpressionContext(const QgsExpressionContext &context)
Sets the expression context.