QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
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 }
QgsQuickMapSettings::visibleExtent
QgsRectangle visibleExtent
Returns the actual extent derived from requested extent that takes output image size into account.
Definition: qgsquickmapsettings.h:70
QgsQuickMapSettings::mapUnitsPerPixel
double mapUnitsPerPixel
Returns the distance in geographical coordinates that equals to one pixel in the map.
Definition: qgsquickmapsettings.h:72
QgsQuickMapTransform::setMapSettings
void setMapSettings(QgsQuickMapSettings *mapSettings)
Associated map settings.
Definition: qgsquickmaptransform.cpp:30
QgsQuickMapTransform::mapSettingsChanged
void mapSettingsChanged()
Associated map settings.
qgsquickmaptransform.h
QgsQuickMapSettings
The QgsQuickMapSettings class encapsulates QgsMapSettings class to offer settings of configuration of...
Definition: qgsquickmapsettings.h:47
QgsRectangle::xMinimum
double xMinimum() const SIP_HOLDGIL
Returns the x minimum value (left side of rectangle).
Definition: qgsrectangle.h:188
QgsRectangle::yMaximum
double yMaximum() const SIP_HOLDGIL
Returns the y maximum value (top side of rectangle).
Definition: qgsrectangle.h:193
QgsQuickMapTransform::applyTo
void applyTo(QMatrix4x4 *matrix) const
Applies transformation based on current map settings to a matrix.
Definition: qgsquickmaptransform.cpp:19
QgsQuickMapSettings::devicePixelRatio
qreal devicePixelRatio() const
Returns the ratio between physical pixels and device-independent pixels.
Definition: qgsquickmapsettings.cpp:290
QgsQuickMapTransform::mapSettings
QgsQuickMapSettings mapSettings
Associated map settings.
Definition: qgsquickmaptransform.h:44
qgsquickmapsettings.h
QgsQuickMapSettings::visibleExtentChanged
void visibleExtentChanged()
Returns the actual extent derived from requested extent that takes output image size into account.