QGIS API Documentation  3.6.0-Noosa (5873452)
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() );
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 }
void visibleExtentChanged()
Returns the actual extent derived from requested extent that takes takes output image size into accou...
void applyTo(QMatrix4x4 *matrix) const
Applies transformation based on current map settings to a matrix.
void mapSettingsChanged()
Associated map settings.
double mapUnitsPerPixel
Returns the distance in geographical coordinates that equals to one pixel in the map.
The QgsQuickMapSettings class encapsulates QgsMapSettings class to offer settings of configuration of...
QgsRectangle visibleExtent
Returns the actual extent derived from requested extent that takes takes output image size into accou...
void setMapSettings(QgsQuickMapSettings *mapSettings)
Associated map settings.
double xMinimum() const
Returns the x minimum value (left side of rectangle).
Definition: qgsrectangle.h:167
double yMaximum() const
Returns the y maximum value (top side of rectangle).
Definition: qgsrectangle.h:172
QgsQuickMapSettings * mapSettings() const
Associated map settings.