QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
Loading...
Searching...
No Matches
qgslayoutitemelevationprofile.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslayoutitemelevationprofile.h
3 -------------------------------
4 begin : January 2023
5 copyright : (C) 2023 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17#ifndef QGSLAYOUTITEMELEVATIONPROFILE_H
18#define QGSLAYOUTITEMELEVATIONPROFILE_H
19
20#include "qgis_core.h"
21#include "qgslayoutitem.h"
22#include "qgsmaplayerref.h"
23
24class QgsLayoutItemElevationProfilePlot;
25class Qgs2DXyPlot;
28class QgsLineSymbol;
29
36{
37 Q_OBJECT
38
39 public:
44
46
53
54 int type() const override;
55 QIcon icon() const override;
57 QgsLayoutItem::Flags itemFlags() const override;
58 bool requiresRasterization() const override;
59 bool containsAdvancedEffects() const override;
60
66
71 const Qgs2DXyPlot *plot() const SIP_SKIP;
72
78 QList< QgsMapLayer * > layers() const;
79
85 void setLayers( const QList< QgsMapLayer * > &layers );
86
94 QList<QgsAbstractProfileSource *> sources() const;
95
101 void setSources( const QList<QgsAbstractProfileSource *> &sources );
102
113
121 QgsCurve *profileCurve() const;
122
131
140
151 void setTolerance( double tolerance );
152
163 double tolerance() const;
164
170 bool atlasDriven() const { return mAtlasDriven; }
171
179 void setAtlasDriven( bool enabled );
180
184 QgsProfileRequest profileRequest() const;
185
186 void paint( QPainter *painter, const QStyleOptionGraphicsItem *itemStyle, QWidget *pWidget ) override;
187
194 Qgis::DistanceUnit distanceUnit() const;
195
202 void setDistanceUnit( Qgis::DistanceUnit unit );
203
210 QgsLineSymbol *subsectionsSymbol() { return mSubsectionsSymbol.get(); }
211
219 void setSubsectionsSymbol( QgsLineSymbol *symbol SIP_TRANSFER );
220
221 public slots:
222
223 void refresh() override;
224 void invalidateCache() override;
225
226 signals:
227
234
235 protected:
236 void draw( QgsLayoutItemRenderContext &context ) override;
237 bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
238 bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
239
240 private slots:
241
242 void recreateCachedImageInBackground();
243 void profileGenerationFinished();
244 void setSourcesPrivate();
245
246 private:
247 std::unique_ptr< QgsLayoutItemElevationProfilePlot > mPlot;
248
249 QList< QgsMapLayerRef > mLayers;
250 QList< std::variant< QgsMapLayerRef, QgsAbstractProfileSource * > > mSources;
251
254 std::unique_ptr< QgsCurve> mCurve;
255 bool mAtlasDriven = false;
256
257 double mTolerance = 0;
258
259 std::unique_ptr<QgsLineSymbol> mSubsectionsSymbol;
260
261 // render job handling
262
263 // see note in QgsLayoutItemMap about these!
264 std::unique_ptr< QImage > mCacheFinalImage;
265 std::unique_ptr< QImage > mCacheRenderingImage;
266 bool mUpdatesEnabled = true;
267 bool mCacheInvalidated = true;
268 bool mDrawing = false;
269 bool mDrawingPreview = false;
270 QTimer *mBackgroundUpdateTimer = nullptr;
271 double mPreviewScaleFactor = 0;
272 std::unique_ptr< QPainter > mPainter;
273 std::unique_ptr< QgsProfilePlotRenderer > mRenderJob;
274};
275
276#endif //QGSLAYOUTITEMELEVATIONPROFILE_H
DistanceUnit
Units of distance.
Definition qgis.h:5170
@ Unknown
Unknown distance unit.
Definition qgis.h:5220
Base class for 2-dimensional plot/chart/graphs with an X and Y axes.
Definition qgsplot.h:687
Represents a coordinate reference system (CRS).
Abstract base class for curved geometry type.
Definition qgscurve.h:36
static QgsLayoutItemElevationProfile * create(QgsLayout *layout)
Returns a new elevation profile item for the specified layout.
Qgs2DXyPlot * plot()
Returns a reference to the elevation plot object, which can be used to set plot appearance and proper...
QgsLayoutItemElevationProfile(QgsLayout *layout)
Constructor for QgsLayoutItemElevationProfile, with the specified parent layout.
QgsCurve * profileCurve() const
Returns the cross section profile curve, which represents the line along which the profile should be ...
void setLayers(const QList< QgsMapLayer * > &layers)
Sets the list of map layers participating in the elevation profile.
QList< QgsMapLayer * > layers() const
Returns the list of map layers participating in the elevation profile.
void setCrs(const QgsCoordinateReferenceSystem &crs)
Sets the desired Coordinate Reference System (crs) for the profile.
QList< QgsAbstractProfileSource * > sources() const
Returns the list of sources participating in the elevation profile.
void setTolerance(double tolerance)
Sets the tolerance of the request (in crs() units).
QgsCoordinateReferenceSystem crs() const
Returns the desired Coordinate Reference System for the profile.
double tolerance() const
Returns the tolerance of the request (in crs() units).
QgsLineSymbol * subsectionsSymbol()
Returns the symbol used to draw the subsections.
bool atlasDriven() const
Returns whether the profile curve is set to follow the current atlas feature.
void setSources(const QList< QgsAbstractProfileSource * > &sources)
Sets the list of sources participating in the elevation profile.
void previewRefreshed()
Emitted whenever the item's preview has been refreshed.
void setProfileCurve(QgsCurve *curve)
Sets the cross section profile curve, which represents the line along which the profile should be gen...
Contains settings and helpers relating to a render of a QgsLayoutItem.
friend class QgsLayout
virtual void refreshDataDefinedProperty(QgsLayoutObject::DataDefinedProperty property=QgsLayoutObject::DataDefinedProperty::AllProperties)
Refreshes a data defined property for the item by reevaluating the property's value and redrawing the...
QgsLayoutItem(QgsLayout *layout, bool manageZValue=true)
Constructor for QgsLayoutItem, with the specified parent layout.
virtual QIcon icon() const
Returns the item's icon.
void paint(QPainter *painter, const QStyleOptionGraphicsItem *itemStyle, QWidget *pWidget) override
Handles preparing a paint surface for the layout item and painting the item's content.
virtual bool writePropertiesToElement(QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context) const
Stores item state within an XML DOM element.
int type() const override
Returns a unique graphics item type identifier.
virtual bool requiresRasterization() const
Returns true if the item is drawn in such a way that forces the whole layout to be rasterized when ex...
virtual bool containsAdvancedEffects() const
Returns true if the item contains contents with blend modes or transparency effects which can only be...
virtual void invalidateCache()
Forces a deferred update of any cached image the item uses.
virtual Flags itemFlags() const
Returns the item's flags, which indicate how the item behaves.
virtual bool readPropertiesFromElement(const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context)
Sets item state from a DOM element.
QFlags< Flag > Flags
void refresh() override
Refreshes the item, causing a recalculation of any property overrides and recalculation of its positi...
friend class QgsLayoutItemElevationProfile
virtual void draw(QgsLayoutItemRenderContext &context)=0
Draws the item's contents using the specified item render context.
const QgsLayout * layout() const
Returns the layout the object is attached to.
DataDefinedProperty
Data defined properties for different item types.
@ AllProperties
All properties for item.
A line symbol type, for rendering LineString and MultiLineString geometries.
Generates and renders elevation profile plots.
Encapsulates properties and constraints relating to fetching elevation profiles from different source...
A container for the context for various read/write operations on objects.
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35
#define SIP_FACTORY
Definition qgis_sip.h:83