QGIS API Documentation  3.4.15-Madeira (e83d02e274)
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  emit mapSettingsChanged();
44 }
45 
46 void QgsQuickMapTransform::updateMatrix()
47 {
48  QMatrix4x4 matrix;
49  float scaleFactor = static_cast<float>( 1.0 / mMapSettings->mapUnitsPerPixel() );
50 
51  matrix.scale( scaleFactor, -scaleFactor );
52  matrix.translate( static_cast<float>( -mMapSettings->visibleExtent().xMinimum( ) ),
53  static_cast<float>( -mMapSettings->visibleExtent().yMaximum() ) );
54 
55  mMatrix = matrix;
56  update();
57 }
void visibleExtentChanged()
Returns the actual extent derived from requested extent that takes takes output image size into accou...
double yMaximum() const
Returns the y maximum value (top side of rectangle).
Definition: qgsrectangle.h:171
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...
void applyTo(QMatrix4x4 *matrix) const
Applies transformation based on current map settings to a matrix.
QgsRectangle visibleExtent
Returns the actual extent derived from requested extent that takes takes output image size into accou...
QgsQuickMapSettings * mapSettings() const
Associated map settings.
void setMapSettings(QgsQuickMapSettings *mapSettings)
Associated map settings.
double xMinimum() const
Returns the x minimum value (left side of rectangle).
Definition: qgsrectangle.h:166