QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
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
31
33{
34 return true;
35}
36
37QDomElement QgsTiledSceneLayerElevationProperties::writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext &context )
38{
39 QDomElement element = document.createElement( u"elevation"_s );
40 writeCommonProperties( element, document, context );
41
42 parentElement.appendChild( element );
43 return element;
44}
45
46bool QgsTiledSceneLayerElevationProperties::readXml( const QDomElement &element, const QgsReadWriteContext &context )
47{
48 const QDomElement elevationElement = element.firstChildElement( u"elevation"_s ).toElement();
49 readCommonProperties( elevationElement, context );
50
51 return true;
52}
53
55{
56 auto res = std::make_unique< QgsTiledSceneLayerElevationProperties >( nullptr );
57 res->copyCommonProperties( this );
58
59 return res.release();
60}
61
63{
64 QStringList properties;
65 properties << tr( "Scale: %1" ).arg( mZScale );
66 properties << tr( "Offset: %1" ).arg( mZOffset );
67 return u"<ul><li>%1</li></ul>"_s.arg( properties.join( "</li><li>"_L1 ) );
68}
69
71{
72 if ( QgsTiledSceneLayer *tiledSceneLayer = qobject_cast< QgsTiledSceneLayer * >( layer ) )
73 {
74 if ( QgsTiledSceneDataProvider *dp = tiledSceneLayer->dataProvider() )
75 {
76 const QgsDoubleRange providerRange = dp->zRange();
77 if ( providerRange.isInfinite() || providerRange.isEmpty() )
78 return QgsDoubleRange();
79
80 return QgsDoubleRange( dp->zRange().lower() * mZScale + mZOffset, dp->zRange().upper() * mZScale + mZOffset );
81 }
82 }
83
84 return QgsDoubleRange();
85}
86
88{
89 const QgsDoubleRange range = calculateZRange( layer );
90 if ( !range.isInfinite() && range.lower() != range.upper() )
91 return { range.lower(), range.upper() };
92 else if ( !range.isInfinite() )
93 return { range.lower() };
94 else
95 return {};
96}
QgsRange which stores a range of double values.
Definition qgsrange.h:217
bool isInfinite() const
Returns true if the range consists of all possible values.
Definition qgsrange.h:266
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:79
T upper() const
Returns the upper bound of the range.
Definition qgsrange.h:86
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:126
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.