QGIS API Documentation  3.27.0-Master (0e23467727)
qgsquickmaptransform.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsquickmaptransform.cpp
3  --------------------------------------
4  Date : 27.12.2014
5  Copyright : (C) 2014 by Matthias Kuhn
6  Email : matthias (at) opengis.ch
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 #include "qgsquickmaptransform.h"
17 #include "qgsquickmapsettings.h"
18 
19 void QgsQuickMapTransform::applyTo( QMatrix4x4 *matrix ) const
20 {
21  *matrix *= mMatrix;
22  matrix->optimize();
23 }
24 
26 {
27  return mMapSettings;
28 }
29 
31 {
32  if ( mapSettings == mMapSettings )
33  return;
34 
35  if ( mMapSettings )
36  disconnect( mMapSettings, &QgsQuickMapSettings::visibleExtentChanged, this, &QgsQuickMapTransform::updateMatrix );
37 
38  mMapSettings = mapSettings;
39 
40  if ( mMapSettings )
41  connect( mMapSettings, &QgsQuickMapSettings::visibleExtentChanged, this, &QgsQuickMapTransform::updateMatrix );
42 
43  updateMatrix();
44 
45  emit mapSettingsChanged();
46 }
47 
48 void QgsQuickMapTransform::updateMatrix()
49 {
50  QMatrix4x4 matrix;
51  float scaleFactor = static_cast<float>( ( 1.0 / mMapSettings->mapUnitsPerPixel() ) / mMapSettings->devicePixelRatio() );
52 
53  matrix.scale( scaleFactor, -scaleFactor );
54  matrix.translate( static_cast<float>( -mMapSettings->visibleExtent().xMinimum( ) ),
55  static_cast<float>( -mMapSettings->visibleExtent().yMaximum() ) );
56 
57  mMatrix = matrix;
58  update();
59 }
The QgsQuickMapSettings class encapsulates QgsMapSettings class to offer settings of configuration of...
QgsRectangle visibleExtent
Returns the actual extent derived from requested extent that takes output image size into account.
void visibleExtentChanged()
Returns the actual extent derived from requested extent that takes output image size into account.
double mapUnitsPerPixel
Returns the distance in geographical coordinates that equals to one pixel in the map.
qreal devicePixelRatio() const
Returns the ratio between physical pixels and device-independent pixels.
void applyTo(QMatrix4x4 *matrix) const
Applies transformation based on current map settings to a matrix.
void setMapSettings(QgsQuickMapSettings *mapSettings)
Associated map settings.
QgsQuickMapSettings * mapSettings
Associated map settings.
void mapSettingsChanged()
Associated map settings.
double yMaximum() const SIP_HOLDGIL
Returns the y maximum value (top side of rectangle).
Definition: qgsrectangle.h:193
double xMinimum() const SIP_HOLDGIL
Returns the x minimum value (left side of rectangle).
Definition: qgsrectangle.h:188