QGIS API Documentation 3.43.0-Master (a6cade80589)
qgsmapunitscale.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsmapunitscale.cpp
3 -------------------
4 begin : April 2014
5 copyright : (C) Sandro Mani
6 email : smani at sourcepole dot ch
7
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16
17#include "qgsmapunitscale.h"
18#include "qgsrendercontext.h"
19
21{
22 return qgsDoubleNear( minScale, 0 )
23 && qgsDoubleNear( maxScale, 0 )
27 && qgsDoubleNear( maxSizeMM, 0 );
28}
29
31{
32 double mup = c.mapToPixel().mapUnitsPerPixel();
33 const double renderScale = c.rendererScale();
34 if ( !qgsDoubleNear( minScale, 0 ) )
35 {
36 mup = std::min( mup / ( renderScale / minScale ), mup );
37 }
38 if ( !qgsDoubleNear( maxScale, 0 ) )
39 {
40 mup = std::max( mup / ( renderScale / maxScale ), mup );
41 }
42 return mup;
43}
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.
bool isNull() const
Returns true if the scale is null, i.e.
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 information about the context of a rendering operation.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
Definition qgis.h:6302