18#ifndef QGSELEVATIONPROFILECANVAS_H
19#define QGSELEVATIONPROFILECANVAS_H
21#include "qgis_quick.h"
30class QgsElevationProfilePlotItem;
44 Q_PROPERTY(
QgsProject *project READ project WRITE setProject NOTIFY projectChanged )
48 Q_PROPERTY(
QgsGeometry profileCurve READ profileCurve WRITE setProfileCurve NOTIFY profileCurveChanged )
50 Q_PROPERTY(
double tolerance READ tolerance WRITE setTolerance NOTIFY toleranceChanged )
58 Q_PROPERTY(
bool isRendering READ isRendering NOTIFY isRenderingChanged )
68 QSGNode *updatePaintNode( QSGNode *oldNode, QQuickItem::UpdatePaintNodeData * )
override;
76 bool isRendering()
const;
82 Q_INVOKABLE
void refresh();
100 Q_INVOKABLE
void populateLayersFromProject();
107 QList<QgsMapLayer *> layers()
const;
148 void setTolerance(
double tolerance );
167 void setVisiblePlotRange(
double minimumDistance,
double maximumDistance,
double minimumElevation,
double maximumElevation );
206#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
207 void geometryChanged(
const QRectF &newGeometry,
const QRectF &oldGeometry )
override;
209 void geometryChange(
const QRectF &newGeometry,
const QRectF &oldGeometry )
override;
217 Q_INVOKABLE
void zoomFull();
223 Q_INVOKABLE
void zoomFullInRatio();
228 Q_INVOKABLE
void clear();
232 void generationFinished();
233 void onLayerProfileGenerationPropertyChanged();
234 void onLayerProfileRendererPropertyChanged();
235 void regenerateResultsForLayer();
236 void scheduleDeferredRegeneration();
237 void scheduleDeferredRedraw();
238 void startDeferredRegeneration();
239 void startDeferredRedraw();
240 void refineResults();
243 void setupLayerConnections(
QgsMapLayer *layer,
bool isDisconnect );
252 QgsElevationProfilePlotItem *mPlotItem =
nullptr;
255 QTimer *mDeferredRegenerationTimer =
nullptr;
256 bool mDeferredRegenerationScheduled =
false;
257 QTimer *mDeferredRedrawTimer =
nullptr;
258 bool mDeferredRedrawScheduled =
false;
261 double mTolerance = 0;
263 bool mFirstDrawOccurred =
false;
265 bool mZoomFullWhenJobFinished =
true;
267 bool mForceRegenerationAfterCurrentJobCompletes =
false;
269 static constexpr double MAX_ERROR_PIXELS = 2;
This class represents a coordinate reference system (CRS).
QgsRange which stores a range of double values.
A geometry is the spatial representation of a feature.
Base class for all map layer types.
Generates and renders elevation profile plots.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
This class implements a visual Qt Quick Item that does elevation profile rendering according to the c...
QgsGeometry profileCurve() const
Returns the profile curve geometry.
void activeJobCountChanged(int count)
Emitted when the number of active background jobs changes.
void crsChanged()
Emitted when the CRS linked to the profile curve geometry changes.
QgsCoordinateReferenceSystem crs() const
Returns the crs associated with map coordinates.
void profileCurveChanged()
Emitted when the profile curve geometry changes.
void projectChanged()
Emitted when the associated project changes.
double tolerance() const
Returns the tolerance of the profile (in crs() units).
QgsProject * project() const
Returns the project associated with the profile.
void toleranceChanged()
Emitted when the tolerance changes.
void isRenderingChanged()
The isRendering property is set to true while a rendering job is pending for this elevation profile c...
QList< QgsWeakMapLayerPointer > QgsWeakMapLayerPointerList
A list of weak pointers to QgsMapLayers.
const QgsCoordinateReferenceSystem & crs