| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /***************************************************************************
- maptoscreen.h
- ----------------------------------------------------
- date : 22.08.2018
- copyright : (C) 2018 by Denis Rouzaud
- email : denis (at) opengis.ch
- ***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
- #ifndef MAPTOSCREEN_H
- #define MAPTOSCREEN_H
- #include "qgsquickmapsettings.h"
- #include <QObject>
- #include <QPointF>
- #include <qgspoint.h>
- /**
- * @brief The MapToScreen class transform a map point to screen coordinates.
- * The map point CRS is the one from the map settings.
- * Screen point will be automatically updated on map extent changes.
- */
- class MapToScreen : public QObject
- {
- Q_OBJECT
- //! Map settings is used to define the map canvas CRS and detect any extent change
- Q_PROPERTY( QgsQuickMapSettings *mapSettings READ mapSettings WRITE setMapSettings NOTIFY mapSettingsChanged )
- //! the point in map coordinates
- Q_PROPERTY( QgsPoint mapPoint READ mapPoint WRITE setMapPoint NOTIFY mapPointChanged )
- //! the distance in map unit
- Q_PROPERTY( double mapDistance READ mapDistance WRITE setMapDistance NOTIFY mapDistanceChanged )
- //! the point in screen coordinates (read-only)
- Q_PROPERTY( QPointF screenPoint READ screenPoint NOTIFY screenPointChanged )
- //! the distance in screen coordinates (read-only)
- Q_PROPERTY( double screenDistance READ screenDistance NOTIFY screenDistanceChanged )
- public:
- explicit MapToScreen( QObject *parent = nullptr );
- //! \copydoc mapSettings
- void setMapSettings( QgsQuickMapSettings *mapSettings );
- //! \copydoc mapSettings
- QgsQuickMapSettings *mapSettings() const;
- //! \copydoc mapPoint
- void setMapPoint( const QgsPoint &point );
- //! \copydoc mapPoint
- QgsPoint mapPoint() const;
- //! \copydoc mapDistance
- void setMapDistance( const double distance );
- //! \copydoc mapDistance
- double mapDistance() const;
- //! \copydoc screenPoint
- QPointF screenPoint() const;
- //! \copydoc screenDistance
- double screenDistance() const;
- signals:
- //! \copydoc mapSettings
- void mapSettingsChanged();
- //! \copydoc mapPoint
- void mapPointChanged();
- //! \copydoc mapDistance
- void mapDistanceChanged();
- //! \copydoc screenPoint
- void screenPointChanged();
- //! \copydoc screenDistance
- void screenDistanceChanged();
- private slots:
- void transformPoint();
- void transformDistance();
- private:
- QgsQuickMapSettings *mMapSettings = nullptr;
- QgsPoint mMapPoint = QgsPoint();
- double mMapDistance = 0.0;
- QPointF mScreenPoint = QPointF();
- double mScreenDistance = 0.0;
- };
- #endif // MAPTOSCREEN_H
|