QGIS API Documentation  3.21.0-Master (5b68dc587e)
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  double mup = c.mapToPixel().mapUnitsPerPixel();
23  const double renderScale = c.rendererScale();
24  if ( !qgsDoubleNear( minScale, 0 ) )
25  {
26  mup = std::min( mup / ( renderScale / minScale ), mup );
27  }
28  if ( !qgsDoubleNear( maxScale, 0 ) )
29  {
30  mup = std::max( mup / ( renderScale / maxScale ), mup );
31  }
32  return mup;
33 }
double computeMapUnitsPerPixel(const QgsRenderContext &c) const
Computes a map units per pixel scaling factor, respecting the minimum and maximum scales set for the ...
double maxScale
The maximum scale, or 0.0 if unset.
double minScale
The minimum scale, 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:1234