QGIS API Documentation 3.99.0-Master (e9821da5c6b)
Loading...
Searching...
No Matches
qgstiledscenelayerelevationproperties.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgstiledscenelayerelevationproperties.cpp
3 ---------------
4 begin : August 2023
5 copyright : (C) 2023 by Nyall Dawson
6 email : nyall dot dawson 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
19
20#include "qgstiledscenelayer.h"
21
22#include <QString>
23
24#include "moc_qgstiledscenelayerelevationproperties.cpp"
25
26using namespace Qt::StringLiterals;
27
32
34{
35 return true;
36}
37
38QDomElement QgsTiledSceneLayerElevationProperties::writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext &context )
39{
40 QDomElement element = document.createElement( u"elevation"_s );
41 writeCommonProperties( element, document, context );
42
43 parentElement.appendChild( element );
44 return element;
45}
46
47bool QgsTiledSceneLayerElevationProperties::readXml( const QDomElement &element, const QgsReadWriteContext &context )
48{
49 const QDomElement elevationElement = element.firstChildElement( u"elevation"_s ).toElement();
50 readCommonProperties( elevationElement, context );
51
52 return true;
53}
54
56{
57 auto res = std::make_unique< QgsTiledSceneLayerElevationProperties >( nullptr );
58 res->copyCommonProperties( this );
59
60 return res.release();
61}
62
64{
65 QStringList properties;
66 properties << tr( "Scale: %1" ).arg( mZScale );
67 properties << tr( "Offset: %1" ).arg( mZOffset );
68 return u"<ul><li>%1</li></ul>"_s.arg( properties.join( "</li><li>"_L1 ) );
69}
70
72{
73 if ( QgsTiledSceneLayer *tiledSceneLayer = qobject_cast< QgsTiledSceneLayer * >( layer ) )
74 {
75 if ( QgsTiledSceneDataProvider *dp = tiledSceneLayer->dataProvider() )
76 {
77 const QgsDoubleRange providerRange = dp->zRange();
78 if ( providerRange.isInfinite() || providerRange.isEmpty() )
79 return QgsDoubleRange();
80
81 return QgsDoubleRange( dp->zRange().lower() * mZScale + mZOffset, dp->zRange().upper() * mZScale + mZOffset );
82 }
83 }
84
85 return QgsDoubleRange();
86}
87
89{
90 const QgsDoubleRange range = calculateZRange( layer );
91 if ( !range.isInfinite() && range.lower() != range.upper() )
92 return {range.lower(), range.upper() };
93 else if ( !range.isInfinite() )
94 return {range.lower() };
95 else
96 return {};
97}
QgsRange which stores a range of double values.
Definition qgsrange.h:236
bool isInfinite() const
Returns true if the range consists of all possible values.
Definition qgsrange.h:290
void writeCommonProperties(QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context)
Writes common class properties to a DOM element, to be used later with readXml().
QgsMapLayerElevationProperties(QObject *parent)
Constructor for QgsMapLayerElevationProperties, with the specified parent object.
void readCommonProperties(const QDomElement &element, const QgsReadWriteContext &context)
Reads common class properties from a DOM element previously written by writeXml().
Base class for all map layer types.
Definition qgsmaplayer.h:83
T lower() const
Returns the lower bound of the range.
Definition qgsrange.h:81
T upper() const
Returns the upper bound of the range.
Definition qgsrange.h:88
bool isEmpty() const
Returns true if the range is empty, ie the lower bound equals (or exceeds) the upper bound and either...
Definition qgsrange.h:128
A container for the context for various read/write operations on objects.
Base class for data providers for QgsTiledSceneLayer.
QString htmlSummary() const override
Returns a HTML formatted summary of the properties.
QgsTiledSceneLayerElevationProperties(QObject *parent)
Constructor for QgsTiledSceneLayerElevationProperties, with the specified parent object.
bool hasElevation() const override
Returns true if the layer has an elevation or z component.
QList< double > significantZValues(QgsMapLayer *layer) const override
Returns a list of significant elevation/z-values for the specified layer, using the settings defined ...
QgsDoubleRange calculateZRange(QgsMapLayer *layer) const override
Attempts to calculate the overall elevation or z range for the specified layer, using the settings de...
bool readXml(const QDomElement &element, const QgsReadWriteContext &context) override
Reads the elevation properties from a DOM element previously written by writeXml().
QgsTiledSceneLayerElevationProperties * clone() const override
Creates a clone of the properties.
QDomElement writeXml(QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context) override
Writes the properties to a DOM element, to be used later with readXml().
Represents a map layer supporting display of tiled scene objects.